Vérification de mail après enregistré

Fermé
ushner07 Messages postés 3 Date d'inscription mardi 31 octobre 2017 Statut Membre Dernière intervention 1 novembre 2017 - 31 oct. 2017 à 13:23
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 - 1 nov. 2017 à 13:20
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
<?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
A voir également:

1 réponse

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
31 oct. 2017 à 14:07
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
1
ushner07 Messages postés 3 Date d'inscription mardi 31 octobre 2017 Statut Membre Dernière intervention 1 novembre 2017
1 nov. 2017 à 12:34
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.
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650 > ushner07 Messages postés 3 Date d'inscription mardi 31 octobre 2017 Statut Membre Dernière intervention 1 novembre 2017
1 nov. 2017 à 12:40
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é !!
0
ushner07 Messages postés 3 Date d'inscription mardi 31 octobre 2017 Statut Membre Dernière intervention 1 novembre 2017
1 nov. 2017 à 13:03
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 ?
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650 > ushner07 Messages postés 3 Date d'inscription mardi 31 octobre 2017 Statut Membre Dernière intervention 1 novembre 2017
1 nov. 2017 à 13:20
y'en a pas .. c'est juste une préférence d'écriture.
Par contre.. dans ton code.. tu n'avais pas placé CHAQUE requête dans un bloc try/catch.
Mais de toutes façons.. ton souci se trouvait au niveau de ton IF .. rien à voir avec ton pdo.
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650 > jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024
1 nov. 2017 à 13:20
N'oublie pas de mettre le sujet en RESOLU
0