Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème de code php sur un formulaire

Sujet résolu
    26 mai 2018 à 11:17:00

    Bonjour je suis coincée par une ereur qui empêche l’inscription des formulaire dan ma base de donne 

    <?php
    
    include $_SERVER['DOCUMENT_ROOT'].'/Espace_membre/identification.php';
    
    if(isset($_GET['p']) AND !empty($_GET['p'])){
    	$parrain_uniqid = htmlspecialchars($_GET['p']);
    	$req_parrain = $bdd->prepare('SELECT id FROM membres WHERE uniqid = ?');
    	$req_parrain->execute(array($parrain_uniqid));
    	$parrain_exist = $req_parrain->rowCount();
    	if($parrain_exist == 1) {
    		$id_parrain = $req_parrain->fetch();
    		$id_parrain = $id_parrain['id'];
    	}
    }
    
    if(isset($_POST['forminscription']))
    {
    	$pseudo = htmlspecialchars($_POST['pseudo']);
    	$mail = htmlspecialchars($_POST['mail']);
    	$mail2 = htmlspecialchars($_POST['mail2']);
    	$mdp = sha1($_POST['mdp']);
    	$mdp2 = sha1($_POST['mdp2']);
    
    	if(!empty($_POST['pseudo']) AND !empty($_POST['mail']) AND !empty($_POST['mail2']) AND !empty($_POST['mdp']) AND !empty($_POST['mdp2']))
    	{
    		$pseudolength = strlen($pseudo);
    		if($pseudolength <= 255)
    		{
    			if($mail == $mail2)
    			{
    				if(filter_var($mail, FILTER_VALIDATE_EMAIL))
    				{
    					$reqmail = $bdd->prepare("SELECT * FROM membres WHERE mail = ?");
    					$reqmail->execute(array($mail));
    					$mailexist = $reqmail->rowCount();
    					if($mailexist == 0)
    					{
    						if($mdp == $mdp2)
    						{
    							$longueurKey = 15;
    							$key = "";
    							for($i=1;$i<$longueurKey;$i++) {
    								$key .= mt_rand(0,9);
    							}
    
    							$insertmbr = $bdd->prepare("INSERT INTO membres (pseudo, mail, motdepasse, confirmkey, uniqid, id_parrain) VALUES(?, ?, ?, ?, ?, ?)");
    							if(isset($id_parrain) AND !empty($id_parrain)) {
    								$insertmbr->execute(array($pseudo, $mail, $mdp, $key, uniqid(), $id_parrain));
    							} else {
    								$insertmbr->execute(array($pseudo, $mail, $mdp, $key, uniqid(), 0));
    							}
    
    							$header="MIME-Version: 1.0\r\n";
    							$header.='From:"Surfruncraft"<support@Surfruncraft.fr>'."\n";
    							$header.='Content-Type:text/html; charset="uft-8"'."\n";
    							$header.='Content-Transfer-Encoding: 8bit';
    
    							$message='
    							<html>
    								<body>
    									<div align="center">
    										<a href="//dev.surfruncraft.fr/Espace_membre/confirmation.php?pseudo='.urlencode($pseudo).'&key='.$key.'">Confirmez votre compte !</a>
    									</div>
    								</body>
    							</html>
    							';
    
    							mail($mail, "Confirmation de compte", $message, $header);
    
    							$erreur = "Votre compte a bien été créé ! <a href=\"connexion.php\">Me connecter</a>";
    						}
    						else
    						{
    							$erreur = "Vos mots de passes ne correspondent pas !";
    						}
    					}
    					else
    					{
    						$erreur = "Adresse mail déjà utilisée !";
    					}
    				}
    				else
    				{
    					$erreur = "Votre adresse mail n'est pas valide !";
    				}
    			}
    			else
    			{
    				$erreur = "Vos adresses mail ne correspondent pas !";
    			}
    		}
    		else
    		{
    			$erreur = "Votre pseudo ne doit pas dépasser 255 caractères !";
    		}
    	}
    	else
    	{
    		$erreur = "Tous les champs doivent être complétés !";
    	}
    }
    
    ?>
    <html>
    	<head>
    		<title>TUTO PHP</title>
    		<meta charset="utf-8">
    	</head>
    	<body>
    		<div align="center">
    			<h2>Inscription</h2>
    			<br /><br />
    			<form method="POST" action="">
    				<table>
    					<tr>
    						<td align="right">
    							<label for="pseudo">Pseudo :</label>
    						</td>
    						<td>
    							<input type="text" placeholder="Votre pseudo" id="pseudo" name="pseudo" value="<?php if(isset($pseudo)) { echo $pseudo; } ?>" />
    						</td>
    					</tr>
    					<tr>
    						<td align="right">
    							<label for="mail">Mail :</label>
    						</td>
    						<td>
    							<input type="email" placeholder="Votre mail" id="mail" name="mail" value="<?php if(isset($mail)) { echo $mail; } ?>" />
    						</td>
    					</tr>
    					<tr>
    						<td align="right">
    							<label for="mail2">Confirmation du mail :</label>
    						</td>
    						<td>
    							<input type="email" placeholder="Confirmez votre mail" id="mail2" name="mail2" value="<?php if(isset($mail2)) { echo $mail2; } ?>" />
    						</td>
    					</tr>
    					<tr>
    						<td align="right">
    							<label for="mdp">Mot de passe :</label>
    						</td>
    						<td>
    							<input type="password" placeholder="Votre mot de passe" id="mdp" name="mdp" />
    						</td>
    					</tr>
    					<tr>
    						<td align="right">
    							<label for="mdp2">Confirmation du mot de passe :</label>
    						</td>
    						<td>
    							<input type="password" placeholder="Confirmez votre mdp" id="mdp2" name="mdp2" />
    						</td>
    					</tr>
    					<tr>
    						<td></td>
    						<td align="center">
    							<br />
    							<input type="submit" name="forminscription" value="Je m'inscris" />
    						</td>
    					</tr>
    				</table>
    			</form>
    			<?php
    			if(isset($erreur))
    			{
    				echo '<font color="red">'.$erreur."</font>";
    			}
    			?>
    		</div>
    	</body>
    </html>



    • Partager sur Facebook
    • Partager sur Twitter
      26 mai 2018 à 11:55:50

      Bonjour,

      L'erreur indique qu'aucune base de données n'est sélectionnée.

      • Partager sur Facebook
      • Partager sur Twitter
        26 mai 2018 à 12:33:50

        oui mes je comprend pas pk vue que la base est pressente et que la connexion fonctionne
        • Partager sur Facebook
        • Partager sur Twitter
          26 mai 2018 à 14:17:37

          Salut !

          Peut-on voir le fichier où tu créés la connexion ?

          Et peux-tu me dire pour quoi tu utilises htmlspecialchars() sur des données que tu envoies dans des requêtes ?

          • Partager sur Facebook
          • Partager sur Twitter
            26 mai 2018 à 14:28:57

            <?PHP
            
            $host = "localhost";
            $user = "*****";
            $password = "*********";
            $db = "Dev_Site_1";
            $bdd = new PDO('mysql:host'.$host.';dbname='.$db.'; charset=utf8', $user, $password, [PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING]);
            
            ?>
            auncune idee le code de mapartien pas
            • Partager sur Facebook
            • Partager sur Twitter
              26 mai 2018 à 15:15:38

              Surfeur5 a écrit:

              auncune idee le code de mapartien pas

              Alors sache si jamais tu devais créer un site toi-même que c'est une mauvaise pratique de l'appeler sur des données à envoyer dans une requête. Et ce n'est pas parce que ça fonctionne que c'est correct. Si c'était le cas, se balader à poil ça fonctionne aussi, pourtant la police te diras que c'est pas correct.

              • Partager sur Facebook
              • Partager sur Twitter
                26 mai 2018 à 16:03:18

                Ce code est extrait d’un tuto donc libre 

                merci philodick tu vien de résoudre mon soucis 

                -
                Edité par Surfeur5 26 mai 2018 à 16:10:19

                • Partager sur Facebook
                • Partager sur Twitter

                Problème de code php sur un formulaire

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown