probleme d'écriture dans la bdd et message d'erreur

Par kudaim, il y a 8 ans


Bonjour,

Voila je rencontre un petit problème avec mon code.

apres suivi plusieurs tutos pour creer un forum et n'étant pas un expert en php , je me heurte a deux problèmes

Décrivez ici votre code ou ce que vous cherchez à faire

Entourez votre code pour bien le mettre en forme <?php session_start(); $titre="Enregistrement"; include("includes/identifiants.php"); include("includes/debut.php"); include("includes/menu.php"); echo '<p><i>Vous êtes ici</i> : <a href="./index.php">Index du forum</a> --> Enregistrement'; if ($id!=0) erreur(ERR_IS_CO); ?> <?php if (empty($_POST['pseudo'])) // Si on la variable est vide, on peut considérer qu'on est sur la page de formulaire { echo '<h1>Inscription </h1>'; echo '<form method="post" action="register.php" enctype="multipart/form-data"> <fieldset> <legend>Identifiants</legend> <label for="pseudo">* Pseudo :</label> <input name="pseudo" type="text" placeholder="Pseudo" id="pseudo" /> (le pseudo doit contenir entre 3 et 15 caractères) <br /> <label for="password">* Mot de Passe :</label> <input type="password" placeholder="Votre Mot de Passe" name="password" id="password" /> <br /> <label for="confirm">* Confirmer le mot de passe :</label> <input type="password" placeholder="Confirmez Mot de Passe" name="confirm" id="confirm" /> </fieldset> <fieldset> <legend>Contacts</legend> <label for="email">* Votre adresse Mail :</label> <input type="text" placeholder="Votre Mail" name="email" id="mail" /> <br /> <label for="mail2">*Confirmez votre Mail :</label> <input type="text" placeholder="Confirmez votre Mail" name="mail" id="mail2" /> <br /> </fieldset> <fieldset> <legend>Informations supplémentaires</legend> <label for="nomdecompte">* Nom de compte :</label> <input type="text" pattern="[A-Za-z]+.[0-9]{4}" placeholder="XXXX.1234" name="nomdecompte" id="nomdecompte" /> <br /> <label for="Perso ">* Personnage Principal :</label> <select name="Profession" type="text" id="profession"> <option value="gardien">Gardien </option> <option value="guerrier">Guerrier </option> <option value="revenant">Revenant </option> <option value="ingenieur">Ingenieur </option> <option value="rodeur">Rodeur </option> <option value="voleur">Voleur </option> <option value="elementaliste">Elementaliste </option> <option value="envouteur">Envouteur </option> <option value="necromant">Necromant </option> </select> </fieldset> <fieldset> <legend>Profil sur le forum</legend> <label for="avatar">Choisissez votre avatar :</label> <input type="file" name="avatar" id="avatar" />(Taille max : 10Ko<br /> <br /> <label for="signature">Signature :</label> <textarea cols="40" rows="4" name="signature" id="signature">La signature est limitée à 200 caractères</textarea> </fieldset> <p>Les champs précédés d un * sont obligatoires</p> <p><input type="submit" value="S\'inscrire" /></p></form> <label>Se souvenir de moi ?</label><input type="checkbox" name="souvenir" /><br /> </div> </body> </html>'; } //Fin de la partie formulaire ?> <?php //On récupère les variables $i = 0; $temps = time(); $pseudo = $_POST['pseudo']; $signature = $_POST['signature']; $mail = $_POST['mail']; $nomdecompte = $_POST['nomdecompte']; $profession = $_POST['profession']; $password = sha1($_POST['password']); $confirm = sha1($_POST['confirm']); //Vérification du pseudo $query=$bdd->prepare('SELECT COUNT(*) AS nbr FROM forum_membres WHERE membre_pseudo =:pseudo'); $query->bindValue(':pseudo',$pseudo, PDO::PARAM_STR); $query->execute(); $pseudo_free=($query->fetchColumn()==0)?1:0; $query->CloseCursor(); if(!$pseudo_free) { $pseudo_erreur1 = "Votre pseudo est déjà utilisé par un membre"; $i++; } if (strlen($pseudo) < 3 || strlen($pseudo) > 15) { $pseudo_erreur2 = "Votre pseudo est soit trop grand, soit trop petit"; $i++; } //Vérification du mdp if ($password != $confirm || empty($passeword) || empty($confirm)) { $password_erreur = "Votre mot de passe et votre confirmation diffèrent, ou sont vides"; $i++; } //Vérification de l'adresse email //Il faut que l'adresse email n'ait jamais été utilisée $query=$bdd->prepare('SELECT COUNT(*) AS nbr FROM forum_membres WHERE membre_mail =:mail'); $query->bindValue(':mail',$mail, PDO::PARAM_STR); $query->execute(); $mail_free=($query->fetchColumn()==0)?1:0; $query->CloseCursor(); if(!$mail_free) { $email_erreur1 = "Votre adresse email est déjà utilisée par un membre"; $i++; } //On vérifie la forme maintenant if (!preg_match("#^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-z]{2,4}$#", $mail) || empty($mail)) { $email_erreur2 = "Votre adresse E-Mail n'a pas un format valide"; $i++; } //Vérification de la signature if (strlen($signature) > 200) { $signature_erreur = "Votre signature est trop longue"; $i++; } //Vérification de l'avatar : if (!empty($_FILES['avatar']['size'])) { //On définit les variables : $maxsize = 10024; //Poid de l'image $maxwidth = 100; //Largeur de l'image $maxheight = 100; //Longueur de l'image $extensions_valides = array( 'jpg' , 'jpeg' , 'gif' , 'png', 'bmp' ); //Liste des extensions valides if ($_FILES['avatar']['error'] > 0) { $avatar_erreur = "Erreur lors du transfert de l'avatar : "; } if ($_FILES['avatar']['size'] > $maxsize) { $i++; $avatar_erreur1 = "Le fichier est trop gros : (<strong>".$_FILES['avatar']['size']." Octets</strong> contre <strong>".$maxsize." Octets</strong>)"; } $image_sizes = getimagesize($_FILES['avatar']['tmp_name']); if ($image_sizes[0] > $maxwidth OR $image_sizes[1] > $maxheight) { $i++; $avatar_erreur2 = "Image trop large ou trop longue : (<strong>".$image_sizes[0]."x".$image_sizes[1]."</strong> contre <strong>".$maxwidth."x".$maxheight."</strong>)"; } $extension_upload = strtolower(substr( strrchr($_FILES['avatar']['name'], '.') ,1)); if (!in_array($extension_upload,$extensions_valides) ) { $i++; $avatar_erreur3 = "Extension de l'avatar incorrecte"; } } if ($i==0) { echo'<h1>Inscription terminée</h1>'; echo'<p>Bienvenue '.stripslashes(htmlspecialchars($_POST['pseudo'])).' vous êtes maintenant inscrit sur le forum</p> <p>Cliquez <a href="./index.php">ici</a> pour revenir à la page d accueil</p>'; //La ligne suivante sera commentée plus bas $nomavatar=(!empty($_FILES['avatar']['size']))?move_avatar($_FILES['avatar']):''; $query=$bdd->prepare('INSERT INTO forum_membres (membre_pseudo, membre_mdp, membre_confirm, membre_mail, mmebre_mail2, membre_nomdecompte, membre_avatar, membre_signature, membre_profession, membre_inscrit, membre_derniere_visite) VALUES (:pseudo, :password, :confirm, :mail, :mail2, :nomdecompte, :nomavatar, :signature, :profession, :temps, :temps)'); $query->bindValue(':pseudo', $pseudo, PDO::PARAM_STR); $query->bindValue(':password', $pass, PDO::PARAM_INT); $query->bindValue(':mail', $confirm, PDO::PARAM_INT); $query->bindValue(':mail', $mail, PDO::PARAM_STR); $query->bindValue(':mail', $mail2, PDO::PARAM_STR); $query->bindValue(':nomdecompte', $nomdecompte, PDO::PARAM_STR); $query->bindValue(':nomavatar', $nomavatar, PDO::PARAM_STR); $query->bindValue(':signature', $signature, PDO::PARAM_STR); $query->bindValue(':profession', $profession, PDO::PARAM_STR); $query->bindValue(':temps', $temps, PDO::PARAM_INT); $query->execute(array( 'pseudo'=> $pseudo, 'password'=> $password, 'confirl' => $confirm, 'mail'=> $mail, 'mail' => $mail2, 'nomdecompte'=> $nomdecompte, 'nomavatar'=> $nomavatar, 'signature'=> $signature, 'profession'=> $profession, 'temps'=> $temps, )); //Et on définit les variables de sessions $_SESSION['pseudo'] = $pseudo; $_SESSION['id'] = $bdd->lastInsertId(); ; $_SESSION['level'] = 2; $query->CloseCursor(); } ?> </div> </body> </html>``` ### Ce que je veux le premier ; lors de mon inscription dans la page register.php rien ne s'inscrit dans ma bdd , mon deuxieme ; message d'erreur sur plusieurs lignes de code ; Notice: Undefined index: pseudo in C:\wamp64\www\forumopen\register.php on line 82 Notice: Undefined index: signature in C:\wamp64\www\forumopen\register.php on line 83 Notice: Undefined index: mail in C:\wamp64\www\forumopen\register.php on line 84 Notice: Undefined index: nomdecompte in C:\wamp64\www\forumopen\register.php on line 85 Notice: Undefined index: profession in C:\wamp64\www\forumopen\register.php on line 86 Notice: Undefined index: password in C:\wamp64\www\forumopen\register.php on line 87 Notice: Undefined index: confirm in C:\wamp64\www\forumopen\register.php on line 88 mon deuxieme ; message d'erreur sur plusieurs lignes de code ;ez ici ce que vous cherchez à obtenir ### Ce que j'obtiens

2 réponses

Carouge10, il y a 8 ans

Bonsoir,

Ces erreurs sont logiques si on lit bien ton code.
Tu récupères les valeurs de $_POST quoi qu'il arrive. Or il faut déjà tester si elles existent puisque lorsque que tu affiches ton formulaire la 1ère fois, $8POST est vide.

kudaim, il y a 8 ans

merci beaucoup Carouge , je regarde sa ;)