Vérification de mail après enregistré
ushner07
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
jordane45 Messages postés 30426 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 30426 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour à tous, j'espère vraiment que vous pourrez m'aider, à savoir ou se trouve l'erreur ou les erreurs, car ce code n'exécute aucun preg_match et n'enregistre pas les données. J'ignore même s'il passe car j'ai l'impression qu'il n'exécute rien comme je vous ai dit. Ca fait une semaine que je suis sur ce code, je prie cette communautés de m'explique si possible pourquoi il ne passe pas au mieux svp m'aider à l'améliorer afin qu'il puisse passer. J'aimerai vérifier d'abord les valeur avant d'enregistrer.
Voici le code
Je tiens encore à remercier un certain Jordane45 et Pitet, qui m'ont aidés sur ce code avant que je ne sois sur ce forum car avant leur aide, la page était toute blanche donc n'affichait aucune erreur. Là elle affiche bien du HTML, n'affiche aucune erreur mais n'enregistre même le membre, sans compter que j'ai essayé de vérifier les preg_match
Pour voir si elle m'enverra au else. Rien du tout. Svp aider moi merci d'avance
Voici le code
<?php
// création de variable échapper
$nom=strip_tags($_POST['nom']);
$prenom=strip_tags($_POST['prenom']);
$sexe=strip_tags($_POST['sexe']);
$contact=strip_tags($_POST['contact']);
// les conditions
if(preg_match("#^[A-Z]([a-z]{2,})$#"), $nom)
AND
preg_match("#^[A-Z]([a-z]{2,})$#"), $prenom)
AND
preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $contact) AND
$sexe=="femme" OR $sexe=="homme" AND
$prenom!=$nom
)
{
// on se connecte à la base
try {
$bdd=new PDO ('myslq:localhost;dbname=membres', 'root', '',
array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
}
catch (Exception $e)
{
die ('Erreur:' .$e->getMessage());
}
/* aucune erreur de connexion on va chercher le contact
dans la table */
$requet=bdd->prepare('SELECT contact FROM listes WHERE contact=:contact');
$requet->execute(array('contact'=>$contact));
//la recherche sur la table
$resultat=$requet;
while($resultat !=$requet-> fetch())
{
// on enregistre le nouveau dans la liste
try {
$bdd=new PDO('mysql:localhost; dbname:membres', 'root', '',
array(PDO::ATTR_ERRMODE=>POD::ERRMODE_EXCEPTION));
}
catch (Exception $e)
{
die ('Erreur:'. $e->getMessage ());
}
$enr=$bdd->prepare('INSERT INTO listes (nom, prenom, sexe, contact) VALUE (:nom, :prenom, :sexe, :contact)');
$enr->execute (array (
'nom'=>$nom,
'prenom'=>$prenom,
'sexe'=>$sexe,
'contact'=>$contact,));
echo"Vous avez été ajouter et sera rediriger";
header('location:rediriger.php');
}
}
else {
écho "Vous avez mal rempli le formulaire";
header('location:formulaire.php');
}
?>
Je tiens encore à remercier un certain Jordane45 et Pitet, qui m'ont aidés sur ce code avant que je ne sois sur ce forum car avant leur aide, la page était toute blanche donc n'affichait aucune erreur. Là elle affiche bien du HTML, n'affiche aucune erreur mais n'enregistre même le membre, sans compter que j'ai essayé de vérifier les preg_match
Pour voir si elle m'enverra au else. Rien du tout. Svp aider moi merci d'avance
1 réponse
-
Bonjour,
Si tu avais activé l'affichage des erreurs PHP ... tu aurais sûrement pu trouver l'erreur :error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE);
Erreur qui se trouve dans ton IF ... les parenthèses étant mal placées !if(preg_match("#^[A-Z]([a-z]{2,})$#", $nom) && preg_match("#^[A-Z]([a-z]{2,})$#", $prenom) && preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $contact) && ($sexe=="femme" OR $sexe=="homme" ) && $prenom!=$nom )
Au passage .. je t'invite fortement à appliquer ceci
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
et ceci :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
-
Merci juste souligner que sur mon fichier php.ini il manque ce code.
; error_reporting is a bit-field. Or each number up to get desired error ; reporting level ; E_ALL - All errors and warnings (doesn't include E_STRICT)
Je l'ai ajouté. Est-ce ainsi qu'on modifie le fichier php.ini ? Pour l'affichage des erreurs? Merci encore.- Les lignes avec des points-virgules sont des commentaires....
C'est surtout cette ligne là qui compte :
error_reporting = E_ALL & ~E_NOTICE
mais comme indiqué dans le lien que je t'ai donné.... tu peux le faire via le fichier php.ini ET/OU directement dans ton code en utilisant les lignes de code que je t'ai donné !!
-
Et après avoir consulter le liens sur l'activation des erreurs PDO, j'aimerai avoir si différence il y'a entre ces deux codes.
Celui sur le lien est// Activation des erreurs PDO $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
Celui que j'utilise est
array(PDO::ATTR_ERRMODE =>PDO::ERRMODE_EXCEPTION));
Les deux ne sont ils pas sensés traquer les erreurs PDO ?
-