Probleme avec traitement de formulaire

Fermé
altechkgo Messages postés 19 Date d'inscription dimanche 9 décembre 2018 Statut Membre Dernière intervention 15 février 2020 - 20 janv. 2019 à 08:58
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 - 20 janv. 2019 à 22:32
Salut à tous
J'ai un des soucis avec mon formulaire qui marchais très bien, ce matin rien ne tourne bien.

Problème 1: Les données entré par l'utilisateur ne plus inséré dans la base de données
Probleme 2; je voudrais créer aussi un système de captcha avec votre aide cher ami

Merci à tous

<?php 
if(!empty($_POST)){

if(!empty($_POST['password']) && ( filter_var($_POST['email'],FILTER_VALIDATE_EMAIL) )){
$email = addslashes($_POST['email']);
$password = sha1($_POST['password']);
$token = sha1(uniqid(rand()));

$nom = addslashes($_POST['nom']);
$prenom = addslashes($_POST['prenom']);
$urgence = addslashes($_POST['urgence']);
$datenaissance = addslashes($_POST['datenaissance']);
$pieceid = addslashes($_POST['pieceid']);
$lieuetablit= addslashes($_POST['lieuetablit']);
$datevalidite = addslashes($_POST['datevalidite']);
$cni = addslashes($_POST['cni']);
$adresse = addslashes($_POST['adresse']);
$ville = addslashes($_POST['ville']);
$pays = addslashes($_POST['pays']);
$codepostale = addslashes($_POST['codepostale']);


$reponse = $DB->uniqueEmail($email);
if($reponse !=0){
$_SESSION['erreur'] ="Adresse email déja utilisée par un autre membre!";

}else{
$data = array(
'nom' => $nom,
'prenom' => $prenom,
'urgence' => $urgence,
'cni' => $cni,
'datenaissance' => $datenaissance,
'lieu' => $lieu,

'pieceid' => $pieceid,
'lieuetablit' => $lieuetablit,
'datevalidite' => $datevalidite,
'email'=>$email,
'password'=>$password,
'token'=>$token,
'adresse'=>$adresse,
'ville'=>$ville,
'pays'=>$pays,
'codepostale'=>$codepostale
);
$sql = 'INSERT INTO users (nom,prenom,urgence,cni,email,password,token,datenaissance,lieu,pieceid,lieuetablit,datevalidite,adresse,ville,pays,codepostale) VALUES (:nom,:prenom,:urgence,:cni,:email,:password,:token,:datenaissance,:lieu,:pieceid,:lieuetablit,:datevalidite,:adresse,:ville,:pays,:codepostale)';
$req = $DB->insert($sql,$data);

// Envoi d'email
$mail_To = $email;
$mail_Subject = "Vous venez de créer votre compte pour accéder à notre espace commercialet profiter pleinement, une dernière étape est nécessaire: l'activation de compte.";
$headers = "From: Mon site.fr\r\n";
$headers .= "Reply-To: votreemail \r\n";
$headers .= "MIME-Version: 1.0\r\n";
// $headers .= "Content-Transfer-Encoding: 8bit\r\n";
$headers .= "Content-type: text/html; charset=utf-8\r\n";

$mail_Body = 'Bonjour,<br\> Veuillez cliquer sur <a href="https:www.je2menage.net/eshop/activate.php?token='.$token.'&email='.$email.'"> title="Pour activer votre compte"> le lien </a>pour activer votre compte ';

if(mail($mail_To, $mail_Subject, $mail_Body, $headers))
{
$_SESSION['message'] ='Un émail a été envoyé a votre méssagerie avec des instructions pour activer votre compte';
unset($_POST);
}
else
{
$_SESSION['erreur'] ="Un problème est survenu lors de l'envoi d'email";
}
}

}else{

if(empty($_POST['password'])){
$erreur_password = ' Un mot de passe est requis !';
$_SESSION['erreur'] = "Veuillez corriger les érreurs !";
}
if(empty($_POST['email'])){
$erreur_email = 'Le champ email est requis !';
$_SESSION['erreur'] = "Veuillez corriger les érreurs !";
}else
if(!filter_var($_POST['email'],FILTER_VALIDATE_EMAIL)){
$erreur_email = "Veuillez entrer une adresse email valide.";
$messageErreur = "Veuillez corriger les érreurs !";
}
}

}

?>
<!-- Message dans la session -->
<?php if (isset($_SESSION['message'])): ?>
<div class="message"> <?php echo $_SESSION['message']; ?></div>
<?php unset( $_SESSION['message']); ?>
<?php endif ?>
<?php if (isset($_SESSION['erreur'])): ?>
<div class="errorMessage"> <?php echo $_SESSION['erreur']; ?></div>
<?php unset( $_SESSION['erreur']); ?>
<?php endif ?>


<form action="signup.php" id="signup" method="post">
<h2>Votre Inscription</h2>
<p>Merci de bien vouloir completer le formulaire d'inscription ci-dessous</p>
<fieldset>
<p>
<label for="nom">Nom :</label>
<input type="text" name ="nom" id="nom" value="<?php echo (isset($_POST['nom'])?$_POST['nom']:''); ?>">
</p>
<p>
<label for="prenom">Prénoms :</label>
<input type="text" name ="prenom" id="prenom" value="<?php echo (isset($_POST['prenom'])?$_POST['prenom']:''); ?>">
</p>
</p>
<p>
<label for="datenaissance">date de naissance :</label>
<input type="text" name ="datenaissance" id="datenaissance" value="<?php echo (isset($_POST['datenaissance'])?$_POST['datenaissance']:''); ?>">
</p>
</p>
<p>
<label for="lieu">Lieu de naissance :</label>
<input type="text" name ="lieu" id="lieu" value="<?php echo (isset($_POST['lieu'])?$_POST['lieu']:''); ?>">
</p>
</p>
<p>
<label for="pieceid">N° CNI/ Passport:</label>
<input type="text" name ="pieceid" id="pieceid" value="<?php echo (isset($_POST['pieceid'])?$_POST['pieceid']:''); ?>">
</p>
</p>
<p>
<label for="lieuetablit">Etablit à :</label>
<input type="text" name ="lieuetablit" id="lieuetablit" value="<?php echo (isset($_POST['lieuetablit'])?$_POST['lieuetablit']:''); ?>">
</p>


<p>
<label for="cni">cni :</label>
<input type="text" name ="cni" id="cni" value="<?php echo (isset($_POST['cni'])?$_POST['cni']:''); ?>">
</p>

</p>
<p>
<label for="datevalidite">Etablit le :</label>
<input type="text" name ="datevalidite" id="datevalidite" value="<?php echo (isset($_POST['datevalidite'])?$_POST['datevalidite']:''); ?>">
</p>
</fieldset>
<fieldset>
<p>
<label for="adresse">Cel 1 :</label>
<input type="text" name ="adresse" id="adresse" value="<?php echo (isset($_POST['adresse'])?$_POST['adresse']:''); ?>"></p>

<p>
<label for="codepostale">Cel 2 :</label>
<input type="text" name ="codepostale" id="codepostale" value="<?php echo (isset($_POST['codepostale'])?$_POST['codepostale']:''); ?>">
</p>
<p>
<label for="pays">Pays de résidence :</label>
<input type="text" name ="pays" id="pays" value="<?php echo (isset($_POST['pays'])?$_POST['pays']:''); ?>">
</p>
<p>
<label for="ville">Ville :</label>
<input type="text" name ="ville" id="ville" value="<?php echo (isset($_POST['ville'])?$_POST['ville']:''); ?>">
</p>
<p>
<label for="urgence">Contact en cas d'Urgence :</label>
<input type="text" name ="urgence" id="urgence" value="<?php echo (isset($_POST['urgence'])?$_POST['urgence']:''); ?>">
</p>
<p>
<label for="email" class="required">Email :</label>
<input type="email" name ="email" id="email" value="<?php echo (isset($_POST['email'])?$_POST['email']:''); ?>">
</p>
<?php if (!empty($erreur_email)): ?>
<div class="error"><?php echo $erreur_email; ?></div>
<?php endif ?>
<p>
<label for="password" class="required">Mot de passe :</label>
<input type="password" name ="password" id="password">
</p>
<?php if (!empty($erreur_password)): ?>
<div class="error"><?php echo $erreur_password; ?></div>
<?php endif ?>



</fieldset>

<div class="clearfix"></div>
<p class='information'>* champs requis</p>
<p>

<input type="submit" name ="submit" value="S'inscrire">
</p>
</form>

4 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
20 janv. 2019 à 09:38
Bonjour
As tu activé l'affichage des erreurs php ?
Affiché les erreurs pdo ?
Que contiennent tes fonctions "insert" ?
0
altechkgo Messages postés 19 Date d'inscription dimanche 9 décembre 2018 Statut Membre Dernière intervention 15 février 2020
20 janv. 2019 à 15:40
Oui, j'ai bien activer les deux,

Voici le code de l'insert
	$sql ='INSERT INTO users (nom,prenom,datenaissance,email,password,token,adresse,ville,urgence,codepostale) VALUES(:nom,:prenom,:datenaissance,:email,:password,:token,:adresse,:ville,:urgence,:codepostale)';

$req= $DB->insert($sql,$data);
//envoi d'email.
$mail_to =$email;
$mail_subject =" Validation de votre compte !!";
$headers = "From : BIENVENUE DANS NOTRE FAMILLE\r\n";
$headers.="Reply-To:votreemail \r\n";
$headers.="MIME-Version 1.0\r\n";
$headers.="Content-type: text/html;charset=utf-8\r\n";
$mail_body ='Bonjour <br/>
Veuillez ciquer sur <a href="httpS://www.je2menage.net/espace/activate.php?token='.$token.'&email='.$email.'"> le lien </a>pour activer votre compte ';


merci encore
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
20 janv. 2019 à 17:29
Je t'ai demandé le code de ta fonction INSERT
Donc le code de ce qu'il y a dans :
$req= $DB->insert($sql,$data);
0
altechkgo Messages postés 19 Date d'inscription dimanche 9 décembre 2018 Statut Membre Dernière intervention 15 février 2020
20 janv. 2019 à 18:22
VOICI comment j'ai fait

    $sql = 'INSERT INTO users 
(nom,prenom,urgence,email,password,token,datenaissance,lieu,pieceid,lieuetablit,datevalidite,adresse,ville,pays,codepostale) VALUES
(:nom,:prenom,:urgence,:email,:password,:token,:datenaissance,:lieu,:pieceid,:lieuetablit,:datevalidite,:adresse,:ville,:pays, :codepostale)';

$req = $DB->insert($sql,$data);


Merci encore
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
20 janv. 2019 à 18:39
Visiblement tu as un peu de mal à lire....
Dans ta ligne de code
$req = $DB->insert($sql,$data);

Que contient la fonction INSERT ??? La FONCTION (méthode si tu préfères).. ... qui se trouve certainement dans ta class DB

En complément....
Si le code PHP se trouve directement dans la même page que ton formulaire... alors il faut laisser l'action à vide
Remplacer :
<form action="signup.php" id="signup" method="post">

par :
<form action="" id="signup" method="post">


Il serait bien également, de vérifier le contenu de ta variable $_POST
Pour ça, au tout début de ton script, place un
print_r($_POST);

et, une fois le formulaire validé, montre nous ce que ça t'affiche.



PS: Lorsque tu postes ton code, merci de le faire correctement (pour avoir la coloration syntaxique)
explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Merci.
0
altechkgo Messages postés 19 Date d'inscription dimanche 9 décembre 2018 Statut Membre Dernière intervention 15 février 2020
20 janv. 2019 à 20:51
 <?php 

?>
<?php
if(!empty($_POST)){

if(!empty($_POST['password']) && ( filter_var($_POST['email'],FILTER_VALIDATE_EMAIL) ) ){

$email= addslashes($_POST['email']);
$password = sha1($_POST['password']);
$token = sha1(uniqid(rand()));

$nom=addslashes($_POST['nom']);
$adresse = addslashes($_POST['adresse']);
$ville = addslashes($_POST['ville']);
$codepostale =addslashes($_POST['codepostale']);

$reponse = $DB->uniqueEmail($email);

if($reponse !=0){
$_SESSION['erreur'] = "Adresse email déja utilisée par un membre.";
}else{

$data = array(
'nom'=>$nom,
'email'=>$email,
'password'=>$password,
'token'=>$token,
'adresse'=>$adresse,
'ville'=>$ville,
'codepostale'=>$codepostale
);
$sql ='INSERT INTO users (nom,email,password,token,adresse,ville,codepostale) VALUES(:nom,:email,:password,:token,:adresse,:ville,:codepostale)';
$req= $DB->insert($sql,$data);
//envoi d'email.
$mail_to =$email;
$mail_subject =" Validation de votre compte !!";
$headers = "From : Mon site.fr\r\n";
$headers.="Reply-To:votreemail \r\n";
$headers.="MIME-Version 1.0\r\n";
$headers.="Content-type: text/html;charset=utf-8\r\n";
$mail_body ='Bonjour <br/> Veuillez ciquer sur <a href="https://je2menage.net/espace/activate.php?token='.$token.'&email='.$email.'"> le lien </a>pour activer votre compte ';

if(mail($mail_to,$mail_subject,$mail_body,$headers)){
$_SESSION['message'] = " Un émail a été envoyé a votre méssagerie avec des instructions pour activer votre compte ";
unset($_POST);
}else{
$_SESSION['erreur'] = "Un problème est survenu lors de l'envoi d'email !.";
}
}

}else{
if(empty($_POST['password'])){
$erreur_password ='Un mot de passe est requis !.';
$_SESSION['erreur'] = ' Veuillez corriger les érreurs .';
}

if(empty($_POST['email'])){
$erreur_email ='Le champs email est requis !';
$_SESSION['erreur'] = ' Veuillez corriger les érreurs .';
}else
if(!filter_var($_POST['email'],FILTER_VALIDATE_EMAIL) ){
$erreur_email ='Adresse Email non valide !';
$_SESSION['erreur'] = ' Veuillez corriger les érreurs .';
}
}
}

?>

<!-- message de session -->
<?php if (isset($_SESSION['message'])): ?>
<div class="message"> <?php echo $_SESSION['message']; ?></div>
<?php unset($_SESSION['message']) ?>
<?php endif ?>
<?php if (isset($_SESSION['erreur'])): ?>
<div class="errorMessage"> <?php echo $_SESSION['erreur']; ?></div>
<?php unset($_SESSION['erreur']) ?>
<?php endif ?>

<!-- formulaire d'inscription -->

<form action="signup.php" method="post" id="signup">

<h2>Inscription</h2>
<fieldset>
<p>
<label for="nom">Nom :</label>
<input type="text" name="nom" id ="nom" value="<?php echo isset($_POST['nom'])?$_POST['nom']:''; ?>">
</p>
<p>
<label for="email" class="required">Email :</label>
<input type="email" name="email" id ="email" value="<?php echo isset($_POST['email'])?$_POST['email']:''; ?>">
</p>
<?php if (!empty($erreur_email)): ?>
<div class="error"><?php echo $erreur_email; ?></div>
<?php endif ?>
<p>
<label for="password" class="required">Mot de passe :</label>
<input type="password" name="password" id ="password">
</p>
<?php if (!empty($erreur_password)): ?>
<div class="error"><?php echo $erreur_password; ?></div>
<?php endif ?>


</fieldset>
<fieldset>
<p>
<label for="adresse">Adresse :</label>
<input type="text" name="adresse" id ="adresse" value="<?php echo isset($_POST['adresse'])?$_POST['adresse']:''; ?>">
</p>
<p>
<label for="ville">Ville :</label>
<input type="text" name="ville" id ="ville" value="<?php echo isset($_POST['ville'])?$_POST['ville']:''; ?>">
</p>
<p>
<label for="codepostale">Code postale :</label>
<input type="text" name="codepostale" id ="codepostale" value="<?php echo isset($_POST['codepostale'])?$_POST['codepostale']:''; ?>">
</p>


</fieldset>
<div class="clearfix"></div>
<p class="information">* Champs requis</p>
<p>
<input type="submit" value ="S'inscrire">
</p>
</form>




ok
Voici donc le code complet
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
20 janv. 2019 à 22:26
1 - Tu ne réponds toujours pas à ma question..........
Je ne sais plus comment te le formuler pour que tu comprennes.....
Dernier essai : D'où vient ta variable $DB ? Je suppose d'une CLASS ..... cette class contient du code.... je veux voir ce code !

2 - Tu ne sais visiblement pas lire !
Je t'ai expliqué qu'il fallait poster ton code correctement.... en utilisant la coloration syntaxique....
Tu n'as visiblement pas lu le lien que je t'ai donné !
Dernier rappel !!
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
20 janv. 2019 à 22:32
En fouillant... je suis retombé sur une ancienne discussion dans laquelle tu mettais le code de ta class DB
https://forums.commentcamarche.net/forum/affich-35739387-connexion-avec-pdo

Dans cette discussion... je t'avais indiqué le lien qui explique comment gérer correctement les erreurs PDO .... lien que tu n'avais pas lu ni appliqué !
Donc... avant tout .... commence par ajouter des TRY/CATCH à TOUTES les exécutions de requêtes.
Voir ici pour les explications :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

Reviens nous voir avec le code corrigé si le souci persiste (et j'insiste.... le code corrigé !!! )
0