Bonsoir a tous,
Je vous écrit en cette heur tardive car j'ai un soucie qui pour moi n'est pas logique.
Je m'explique je me créer mon formulaire d’inscription dans lequel j'ajoute mon captcha en plus du reste :
Voici le fichier captcha.php :
$code = strtoupper(substr(md5(uniqid(rand())),0,6));
$_SESSION'code'] = $code;
$largeur = 65;
$longueur = 25;
$image = imagecreate($largeur, $longueur);
$noir = imagecolorallocate($image, 0, 0, 0);
$blanc = imagecolorallocate($image, 255, 255, 255);
$font = 13;
imagestring($image, $font, 5, 5, $code, $blanc);
imagejpeg($image, null ,75);
Et voici mon formulaire :
<form method="post" action="modules/registration/register.php#cat">
<div class="form-group validate">
<label for="username">Pseudo</label>
<?= input_require('username'); ?>
</div>
<div class="form-group validate">
<label for="password">Password</label>
<input type="password" name="password" class="form-control" id="password" required>
</div>
<div class="form-group validate">
<label for="passverif">Vérification password</label>
<input type="password" name="passverif" class="form-control" id="passverif" required>
</div>
<div class="form-group validate">
<label for="email">Email</label>
<?= input_require('email'); ?>
</div>
<div class="form-group validate">
<label for="code">Captcha</label>
<span style="display:inline-block;margin-bottom:5px;">Tapez le bon code : <img src="<?= WEBROOT ?>modules/captcha.php" alt="captcha"/></span>
<?= input_require('code'); ?>
</div>
<?= csrfInput(); ?>
<button type="submit" class="btn btn-warning">Envoyer</button>
</form>
Alors voila mon captcha s'affiche bien mai toutes mes autres vérification font ce que je leurs demande sauf ce champ la qui refuse de faire ce que je lui demande, le if fait bien la vérif mai dans les deux cas elle est fausse et le script s'arrête.
Voici tout mon register.php au cas où :
if(isset($_POST)) {
$username = strip_tags($_POST'username'], ENT_QUOTES);
$email = strip_tags($_POST'email'], ENT_QUOTES);
$password = sha1($_POST'password']);
$passverif = sha1($_POST'passverif']);
$token = sha1(uniqid(rand()));
// On vérifie l'enregistrement
$select = $db->prepare("SELECT * FROM users WHERE username = '" . $username . "' OR email = '" . $email . "' ");
$select->execute();
$lignes = $select->fetchAll();
$check = count($lignes);
if($check > 0) {
setFlash('Ce pseudo et ce mail sont deja','danger');
header('Location:index.php#cat');
die();
}
/* vérification du password */
if(isset($_POST'password']) && $_POST'password'] != $_POST'passverif']) { //verif pass
setFlash('Les mots ne sont pas identique','danger');
header('Location:index.php#cat');
die();
}
/* verification du nombre de caractères */
if(isset($_POST'username']) && strlen($_POST'username'])<4) {
setFlash('Le pseudo contien moins de 5 lettres','danger');
header('Location:index.php#cat');
die();
}
/* verification du mail */
if(isset($_POST'email']) && !filter_var($_POST'email'], FILTER_VALIDATE_EMAIL)) {
setFlash('Mail non valide','danger');
header('Location:index.php#cat');
die();
}
/* verification du captcha */
if(isset($_POST'code']) && $_POST'code'] != $_SESSION'code']) { //verif captcha
setFlash('Le le captcha n\'est pas valide','danger');
header('Location:index.php#cat');
die();
}
else{
$q = array('username'=>$username, 'email'=>$email, 'password'=>$password, 'passverif'=>$passverif, 'token'=>$token);
$sql = 'INSERT INTO users (username, email, password, passverif, token) VALUES (:username, :email, :password, :passverif, :token)';
$req = $db->prepare($sql);
$req->execute($q);
setFlash('Votre inscription c\'est bien passer ! un admin va activer votre compte');
header('Location:index.php#cat');
die();
}
}
Donc voila je trouve pas peut es-ce par ce que j'ai mis mon formulaire dans une modale ?
Mai j'ai tester et cette condition refuse de faire son job.
Voila voila Bonne journée/soirée :)