[RESOLU] Script inscription.php qui ne fonctionne pas !

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Script inscription.php qui ne fonctionne pas !

Re: [RESOLU] Script inscription.php qui ne fonctionne pas !

par moogli » 12 sept. 2012, 09:18

J'ai trouvé (Voir mon post plus récent) l'erreur vient de là :)
il serait intéressant que tu détails le problème exact pour ceux que lirait ce message ensuite.

au vu de autre post qui parle pas d'insertion, et de la capture d'écran précendente, j'en déduit que tu a bien un message d'erreur, que tu ne traite pas, et que celui concerne le fait de ne pas pouvoir créer une ligne lorsque l'on ne satisfait pas toutes les contraintes mise en place.

hors c'est ce que tu fait vu que lastquerytime n'est pas nullable (il doit donc être toujours renseigné) et toi tu ne fait pas.

supprime la contrainte et cela va rentrer dans l'ordre (la colonne doit être nullable).

comme te l'indique xTG dans ton autre post il est préférable d'utiliser une colonne de type timestamp et de faire faire la requête à mysql ( lastquerytime < (now() -300) pour 5 minutes de moins).

@+

Re: Script inscription.php qui ne fonctionne pas !

par nico44530 » 12 sept. 2012, 01:55

J'ai trouvé (Voir mon post plus récent) l'erreur vient de là :)

Re: Script inscription.php qui ne fonctionne pas !

par moogli » 11 sept. 2012, 23:19

Que donne le var_dump($_POST) ?

modifie l'utilisation de la requete afin de vérifier qu'elle s'éxécute correctement.
<?php
$ret = mysql_query("INSERT INTO pdf_membre VALUES ('','$pseudo', '$mdp', '$mail', '$confirm', '$nom', '$prenom', '$pays', '$born', '$website')");
if ( $ret === false) {
    echo 'Erreur SQL : '.mysql_error();
}
?>
Par exemple

@+

Re: Script inscription.php qui ne fonctionne pas !

par nico44530 » 11 sept. 2012, 18:02

Voici le code php avant ma modification, celui là fonctionne.

Mais maintenant ca marche, sauf que ca n'inscrit rien dans la base de donnée, par contre ca envois bien le mail :
<?php
session_start(); //On demarre une session parce que j'ai envi ^^
require("conf.php3"); //On insert le fichier qui contient les informations

$mail = htmlentities($_POST['mail']);

    if (preg_match("!^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$!", $mail)) //Verifie que l'email entrée n'est pas une fausse.
    {
		$chaine = "abcdefghijklmnopqrstuvwxyz0123456789"; 
		$confirm = str_shuffle($chaine); //On créé le code de confirmation
		
		$pseudo = htmlentities($_POST['pseudo']); //On recupère les infos
		$mdp = htmlentities($_POST['mdp']);
		$verif_mdp = htmlentities($_POST['verif_mdp']);
		$nom = htmlentities($_POST['nom']);
		$prenom = htmlentities($_POST['prenom']);
		$website = htmlentities($_POST['website']);
		$pays = htmlentities($_POST['pays']);
		$born = htmlentities($_POST['born']);
		
		/*On Fait la variable contenant le mail de confirmation*/
	
		$message1 = '<html><body>Bonjour ' . $pseudo . ' et bienvenue sur ' .$nom_site. '.</br>'; 
		$message1 .= '</br>';
		$message1 .= 'Vous venez de vous inscrire et nous sommes heureux<br>de pouvoir vous compter aujourd\'hui parmi nos membres.<br>'; 
		$message1 .= 'Voici un rappel de vos identifiants, notez les précieusement : <br>';
		$message1 .= 'Votre Pseudo :' . $pseudo .'.<br>';
		$message1 .= 'Votre Mot de passe:' . $mdp .'.<br><br>';
		$message1 .= 'Votre Mail:' . $mail .'.<br><br>';
		$message1 .= 'Votre Nom:' . $nom .'.<br><br>';
		$message1 .= 'Votre Prenom:' . $prenom .'.<br><br>';
		$message1 .= 'Votre Pays:' . $pays .'.<br><br>';
		$message1 .= 'Votre Site Web' . $website .'.<br><br>';
		$message1 .= 'Votre Date de naissance:' . $born .'.<br><br>';									
		$message1 .= 'Si vous souhaitez changer vos informations, rendez-vous dans votre compte pour les mettre à jour.<br>';
		$message1 .= 'Votre Clé d\'activation:<br>';
   		$message1 .= '' .$url_script. '/confirm.php?login=' . str_replace(' ','%20',$pseudo) . '&confirm=' . $confirm . '<br><br>';
		$message1 .= 'A très bientôt sur le site!<br>L\'équipe de ' .$nom_site. '.<br><a href="' .$url_site. '">' .$nom_site. '</a>';

		$sql = connect_sql(); //On se connecte à MySQL
		
		$verification = mysql_query("SELECT COUNT(*) FROM pdf_membre WHERE pseudo='$pseudo' OR mail='$mail'") or die (mysql_error());
		$donnees = mysql_fetch_array($verification)or die (mysql_error());

		if($donnees['COUNT(*)'] >= 1) //On verifie que le pseudo n'existe pas déjà
		{ 
			$reponse = 'Le pseudo ou l\'email est déjà utilisé, merci d\'en choisir un(e) autre. <a href="javascript:history.back(1)">Retour au formulaire</a>';
		}
		else
		{	
			if( empty($pseudo) || empty($mdp) || empty($verif_mdp) || empty($mail) || empty($nom) || empty($prenom) || empty($born)) //On verifie que les variables précédentes ne soient pas vide
			{
				$reponse = 'Un ou plusieurs champs ne sont pas remplis, <a href="javascript:history.back(1)">Retour au formulaire</a>';
			}
			elseif( $mdp != $verif_mdp) //On verifie que les 2 pass sont identiques
			{
				$reponse = 'Les mots de passe ne sont pas identiques, <a href="javascript:history.back(1)">Retour au formulaire</a>';
			}
			else //Si tout est bon on entre les données dans la BDD et on envoye le mail
			{
				mysql_query("INSERT INTO pdf_membre VALUES ('','$pseudo', '$mdp', '$mail', '$confirm', '$nom', '$prenom', '$pays', '$born', '$website')");
				$reponse = 'Bravo, vous êtes maintenant inscrit sur ' .$nom_site. '. <br>Vous allez recevoir un e-mail pour activer votre compte. <br><a href="' .$url_site. '">Retour à l\'Accueil</a>';
				$entete = "MIME-Version: 1.0\r\n";
				$entete .= "Content-type: text/html; charset=iso-8859-1\r\n";
				$entete .= "From: <$email_admin>\r\n";
				$entete .= "Reply-To: $email_admin\r\n";
				mail($mail,'Bienvenue sur ' .$nom_site. ' ' . $login .'.' , $message1, $entete);
			}
		}
		
		mysql_close($sql); //On se deconnecte
	}
	else //Reponse si l'adresse e-mail est une fausse
	{
		$reponse = 'Votre adresse e-mail "' . $mail . '" n\'est pas correcte. <a href="javascript:history.back(1)">Retour au formulaire</a>';
	} 	




?>

<html>
<body>
<? echo $reponse; ?> <!-- On affiche la reponse de tout le code du dessus -->
</body>
</html>

Voici l'image de ma base de donnée :

Image

Aurais-tu une idée, d'ou ca vient ?

Re: Script inscription.php qui ne fonctionne pas !

par moogli » 11 sept. 2012, 17:34

salut,

il faut tester l'existance de tes infos dans $_POST avant de les utiliser (isset ou empty).

ajout un var_dump($_POST);
juste après le session_start();

tu verras ce que tuas de dispo dans $_POST

de plus tu n'affiche jamais reponse1


@+

Script inscription.php qui ne fonctionne pas !

par nico44530 » 11 sept. 2012, 17:20

Bonjour,

Lorsque j'essai de m'inscrire, le formulaire n'envois rien à la base de donnée et n'envois pas de message d'erreur lorsqu'on fait des erreurs.
Bref il envoi rien ! :cry:

Voici mon formulaire :
<form action="<?php echo $url_site; ?>/members/register.php" method="post" class="form_register"><br />
								<h4><u>Créer vos identifiants :</u></h4><br />
								<table>
									<tr>
										<td><label for="pseudo">Pseudo : </label></td>
										<td><label for="mdp">Mot de passe : </label></td>
									</tr>
									<tr>
										<td><input type="text" class="input_pseudo_mdp" id="pseudo" name="pseudo" maxlength="20" /></td>
										<td><input type="password" class="input_pseudo_mdp" id="mdp" name="mdp" maxlength="20" /></td>
									</tr>
									<tr>
										<td><label for="verif_mdp">Confirmer le mot de passe : </label></td>
									</tr>
									<tr>
										<td><input type="password" class="input_pseudo_mdp" id="verif_mdp" name="verif_mdp" maxlength="20" /></td>
									</tr>
								</table>
								<h4><u>Informations personnelles :</u></h4><br />
								<table>
									<tr>
										<td><label for="nom">Nom de famille : </label></td>
										<td><label for="prenom">Prénom : </label></td>
									</tr>
									<tr>
										<td><input type="text" class="input_nom_prenom" id="nom" name="nom" maxlength="20" /></td>
										<td><input type="text" class="input_nom_prenom" id="prenom" name="prenom" maxlength="20" /></td>
									</tr>
								</table>
								<table>
									<tr>
										<td><label for="mail">Adresse email : </label></td>
									</tr>
									<tr>
										<td><input type="text" class="input_email" id="mail" name="mail" maxlength="150" /></td>
									</tr>
                                                                </table>
								<?php echo $reponse1; ?>
								<br />
								<p>En cliquant sur Inscription, vous acceptez nos conditions d'utilisation.</p>
								<br />
								<div class="bloc_bouton_form">
									<ul class="bouton_form">
										<li>
											<a href="#" class="tooltip">
												<input type="image" name="Submit" src="<?php echo $url_site; ?>/images/unlock.png" class="input_submit" alt="" onmouseover="this.src='<?php echo $url_site; ?>/images/unlock_blue.png'" onmouseout="this.src='<?php echo $url_site; ?>/images/unlock.png'" />
												<span><span class="fleche"></span>S'inscrire</span>
											</a>
										</li>
									</ul>
								</div>
							</form>

Et voici mon script avant html de mon formulaire :
<?php
session_start();
require($_SERVER["DOCUMENT_ROOT"].'/include/connect.php');

$mail = htmlentities($_POST['mail']);

    if (preg_match("!^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$!", $mail))
    {
		$chaine = "abcdefghijklmnopqrstuvwxyz0123456789"; 
		$confirm = str_shuffle($chaine);
	
		$pseudo = htmlentities($_POST['pseudo']);
		$mdp = htmlentities($_POST['mdp']);
		$verif_mdp = htmlentities($_POST['verif_mdp']);
		$nom = htmlentities($_POST['nom']);
		$prenom = htmlentities($_POST['prenom']);
		
		$message1 = '<html><body>Bonjour ' . $pseudo . ' et bienvenue sur ' .$nom_site. '.</br>'; 
		$message1 .= '</br>';
		$message1 .= 'Vous venez de vous inscrire et nous sommes heureux<br>de pouvoir vous compter aujourd\'hui parmi nos membres.<br>'; 
		$message1 .= 'Voici un rappel de vos identifiants, notez les précieusement : <br>';
		$message1 .= 'Votre Pseudo :' . $pseudo .'.<br>';
		$message1 .= 'Votre Mot de passe:' . $mdp .'.<br><br>';						
		$message1 .= 'Si vous souhaitez changer vos informations, rendez-vous dans votre compte pour les mettre à jour.<br>';
		$message1 .= 'A très bientôt sur le site!<br>L\'équipe de ' .$nom_site. '.<br><a href="' .$url_site. '">' .$nom_site. '</a>';

		$sql = connect_sql();
		
		$verification = mysql_query("SELECT COUNT(*) FROM wa_communaute WHERE pseudo='$pseudo' OR mail='$mail'") or die (mysql_error());
		$donnees = mysql_fetch_array($verification)or die (mysql_error());

		if($donnees['COUNT(*)'] >= 1)
		{ 
			$reponse1 = '<div id="reponse02" align="center">L\'adresse email est déjà utilisée, merci d\'en choisir une autre</div>';
		}
		else
		{	
			if( empty($pseudo) || empty($mdp) || empty($verif_mdp) || empty($mail) || empty($nom) || empty($prenom))
			{
				$reponse1 = '<div id="reponse03" align="center">Un ou plusieurs champs ne sont pas remplis</div>';
			}
			elseif( $mdp != $verif_mdp)
			{
				$reponse1 = '<div id="reponse04" align="center">Les mots de passe ne sont pas identiques</div>';
			}
			else
			{
				mysql_query("INSERT INTO wa_communaute VALUES ('','$pseudo', '$mdp', '$mail', '$nom', '$prenom')");
				
				$entete = "MIME-Version: 1.0\r\n";
				$entete .= "Content-type: text/html; charset=iso-8859-1\r\n";
				$entete .= "From: <$email_admin>\r\n";
				$entete .= "Reply-To: $email_admin\r\n";
				mail($mail,'Bienvenue sur ' .$nom_site. ' ' . $login .'.' , $message1, $entete);
			}
		}
		mysql_close($sql);
	}
	else {
		$reponse1 = '';
	}
?>
Merci pour votre aide