J'ai un formulaire que je valide avec une classe, mais elle ne valide pas tous les champs.
Voici le code sur mon formulaire :
Code : Tout sélectionner
<?php
if(!empty($_POST)){
$errors = array();
$db = App::getDatabase();
$valid = new Valid($_POST);
$valid->isEmpty('name', 'Quel est votre prénom ?');
$valid->isEmpty('surname', 'Quel est votre nom ?');
$valid->isEmail('email', 'Votre email n\'est pas valide');
if($valid->isValid()){
$valid->isUniq('email', $db, 'users', 'Cet email est déjà utilisé pour un autre compte');
}
if($valid->isValid()){
} else {
$errors = $valid->getErrors();
}
} ?>
<html>
<h3>Inscription</h3>
<?php if(!empty($errors)): ?><div class="notif notif-danger"><?php foreach($errors as $error): ?><span><?= $error; ?></span><?php endforeach; ?></div><?php endif; ?>
<form method="POST" action="">
<div class="form-group">
<input type="text" name="name" id="name" placeholder="Prénom" class="form-input animate" value="<?php if(isset($_POST['name'])){ echo $_POST['name']; } ?>" autofocus="autofocus" >
</div>
<div class="form-group">
<input type="text" name="surname" id="surname" placeholder="Nom" class="form-input animate" value="<?php if(isset($_POST['surname'])){ echo $_POST['surname']; } ?>">
</div>
<div class="form-group">
<input type="text" name="email" id="email" placeholder="Adresse e-mail" class="form-input animate" value="<?php if(isset($_POST['email'])){ echo $_POST['email']; } ?>">
</div>
<div class="form-group">
<input type="submit" value="POURSUIVRE L'INSCRIPTION" name="form-login" class="form-submit animate">
</div>
</form>
</html>Code : Tout sélectionner
<?php
class Valid{
private $data;
private $errors = [];
public function __construct($data){
$this->data = $data;
}
private function getField($field){
if(!isset($this->data[$field])){
return null;
}
return $this->data[$field];
}
public function isEmpty($field, $errorMsg){
if(empty($field)){
$this->errors[$field] = $errorMsg;
return false;
}
return true;
}
public function isAlpha($field, $errorMsg){
if(!preg_match('/^[a-zA-Z0-9_]+$/', $this->getField($field))){
$this->errors[$field] = $errorMsg;
return false;
}
return true;
}
public function isUniq($field, $db, $table, $errorMsg){
$record = $db->query("SELECT id FROM $table WHERE $field = ?", [$this->getField($field)])->fetch();
if($record){
$this->errors[$field] = $errorMsg;
return false;
}
return true;
}
public function isEmail($field, $errorMsg){
if(!filter_var($this->getField($field),FILTER_VALIDATE_EMAIL)){
$this->errors[$field] = $errorMsg;
return false;
}
return true;
}
public function isConfirmed($field, $errorMsg = ''){
$value = $this->getField($field);
if(empty($value) || $value != $this->getField($field.'_confirm')){
$this->errors[$field] = $errorMsg;
return false;
}
return true;
}
public function isValid(){
return empty($this->errors);
}
public function getErrors(){
return $this->errors;
}
}Merci d'avance