zapomniałem o echo, mam kilka pytań
<?php
class form_valid {
public function validate($value, $require = false, $min_length = false, $max_length = false) {
if ($require = true) {
$this->error = 'Pole wymagane';
}
}
if (strlen($value) < $min_length) { $this->error = 'Musisz podać minimum '.$min_length.' znaków.';
}
if (strlen($value) > $max_length) { $this->error = 'Maksymalna ilosć znaków to '.$max_length.'.';
}
}
public function valid_email($value) {
if (!preg_match('/^([^@s]+)@((?:[-a-z0-9]+.)+[a-z]{2,})$/i', $value)) { $this->error = 'Podany email jest nieprawidłowy.';
}
}
public function get_error() {
return $this->error;
}
public function is_valid() {
return (count($this->error) > 0
) ?
FALSE : TRUE; }
}
if (isset($_POST['valid'])) { $email = $_POST['email'];
$name = $_POST['name'];
$form_valid = new form_valid;
$form_valid->validate($email, false, 3, 5);
$form_valid->validate($name, true);
if ($form_valid->is_valid()) {
echo 'Email jest prawidłowy.'; }
else {
echo $form_valid->get_error(); }
}
?>
<form action="" method="post">
email: <input type="text" name="email" /><br />
imie: <input type="text" name="name" /><br />
<input type="submit" value="sprawdz" name="valid" />
</form>
1. jak zrobić, żebym mógł sprawdzać email czy jest emailem i dodatkowo czy ma min. x znaków i max. x znaków? próbowałem tak:
$form_valid->validate($form_valid->valid_email($email), false, 3, 5);
ale za każdym razem wyrzuca mi
Musisz podać minimum 3 znaków. tak jakby nie przekazywało $value do metody
2. dlaczego jak w nawiasach przy metodzie dam np. $min_length = false to skrypt tego nie pomija? robię np. tak:
$form_valid->validate($name, true);
wtedy jak nic nie wpiszę to jest ok, pokazuje błąd, ale jak wpiszę byle co to wyskakuje mi:
Maksymalna ilosć znaków to .3. mam formularz z np. 3 polami i każde chce inaczej walidować np. mam pole:
imię (pole wymagane, min. znaków, max. znaków),
nazwisko (pole wymagane),
email (poprawność emaila, czyli valid_email)
jak mam to zrobić?