Page 1 sur 1

Formulaire inscription

Posté : 06 mai 2013, 19:40
par Enzo81
Bonjour tous le monde j'ai un code pour une inscription mais voila le problème :

Le formulaire me dit qu'il y a une erreur lors de l'inscription et il ne les envoie pas au donné Mysql

Code php:
<?php
include('config.php');// on se connecte à la base de donnée
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
        <title>Inscription</title>
    </head>
    <body>
    	<table class="pframe" border="0" style="width: 900px; height: 100%;">
	    <tr>
	        <th>
		    <center>
		        <div id="cadre" style="height:525px">
			    <br><br><br><br><br><br><br><br>
<?php
//On verifie que le formulaire a ete envoye pour ne pas avoir de case vide
if(isset($_POST['username'], $_POST['password'], $_POST['passverif'], $_POST['email']) and $_POST['username']!='')
{
	//On enlève l'échappement si get_magic_quotes_gpc est activé
	if(get_magic_quotes_gpc())
	{
		$_POST['username'] = stripslashes($_POST['username']);
		$_POST['password'] = stripslashes($_POST['password']);
		$_POST['passverif'] = stripslashes($_POST['passverif']);
		$_POST['email'] = stripslashes($_POST['email']);
	}
	//On vérifie si le mot de passe et celui de la vérification sont identiques
	if($_POST['password']==$_POST['passverif'])
	{
		//On vérifie si le mot de passe a 6 caractères ou plus
		if(strlen($_POST['password'])>=6)
		{
			//On vérifie si l'email est valide
			if(preg_match('#^(([a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+\.?)*[a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+)@(([a-z0-9-_]+\.?)*[a-z0-9-_]+)\.[a-z]{2,}$#i',$_POST['email']))
			{
				//On échape les variables pour pouvoir les mettre dans une requette SQL
				$username = mysql_real_escape_string($_POST['username']);
				$password = mysql_real_escape_string($_POST['password']);
				$email = mysql_real_escape_string($_POST['email']);

				//On vérifie si il n'y a pas déjà un utilisateur inscrit avec le pseudo choisis
				$dn = mysql_num_rows(mysql_query('select id from users where username="'.$username.'"'));
				if($dn==0)
				{
					//On récupère le nombre d'utilisateurs pour donner un identifiant à l'utilisateur actuel
					$dn2 = mysql_num_rows(mysql_query('select id from users'));
					$id = $dn2+1;
					//On enregistre les informations dans la base de donnée
					if(mysql_query('insert into users(id, username, password, email, signup_date) values ('.$id.', "'.$username.'", "'.$password.'", "'.$email.'")'))
					{
						//Si ca a fonctionne, on n'affiche pas le formulaire
						$form = false;
?>

			    <div class="message">Vous avez bien &eacute;t&eacute; inscrit. Vous pouvez dor&eacute;navant vous connecter.<br />
				<a href="http://google.fr">Se connecter</a>
			    </div>
			<br>
			</div>
		    </center>
		    <br><br><br><br><br>
		</th>
            </tr>
	</table>
<?php
					}
					else
					{
						//Sinon on dit qu'il y a eu une erreur
						$form = true;
						$message = 'Une erreur est survenue lors de l\'inscription.';
					}
				}
				else
				{
					//Sinon, on dit que le pseudo voulu est déjà pris
					$form = true;
					$message = 'Un autre utilisateur utilise d&eacute;j&agrave; le nom d\'utilisateur que vous d&eacute;sirez utiliser.';
				}
			}
			else
			{
				//Sinon, on dit que l'email n'est pas valide
				$form = true;
				$message = 'L\'email que vous avez entr&eacute; n\'est pas valide.';
			}
		}
		else
		{
			//Sinon, on dit que le mot de passe nest pas assez long
			$form = true;
			$message = 'Le mot de passe que vous avez entr&eacute; contien moins de 6 caract&egrave;res.';
		}
	}
	else
	{
		//Sinon, on dit que les mots de passes ne sont pas identiques
		$form = true;
		$message = 'Les mots de passe que vous avez entr&eacute; ne sont pas identiques.';
	}
}
else
{
	$form = true;
}
if($form)
{
	//On affiche un message s'il y a lieu
	if(isset($message))
	{
		echo '<div class="message">'.$message.'</div>';
	}
	//On affiche le formulaire
?>
			     <div class="content" >
				<form action="sign_up.php" method="post">
				    Veuillez remplir ce formulaire pour vous inscrire:<br /><br><br><br>
				    <div class="center">
					<table width="400px" height="100px" frameborder="0" border="0">
				   	    <tr>
						<th style="text-align:left;font-size:15px">
						    <div style="margin-top: 4px"><label for="username">Nom d'utilisateur</label></div>
						    <div style="margin-top: 6px"><label for="password">Mot de passe<span class="small"></span></label></div>
						    <div style="margin-top: 6px"><label for="passverif">Mot de passe<span class="small"></span></label></div>
						    <div style="margin-top: 6px"><label for="email">Email</label></div>				
						</th>
						<th width="180px" style="text-align:left;font-size:15px">
						    <input type="text" name="username" value="<?php if(isset($_POST['username'])){echo htmlentities($_POST['username'], ENT_QUOTES, 'UTF-8');} ?>" /><br />
						    <input type="password" name="password" /><br />	
						    <input type="password" name="passverif" /><br />
						    <input type="text" name="email" value="<?php if(isset($_POST['email'])){echo htmlentities($_POST['email'], ENT_QUOTES, 'UTF-8');} ?>" /><br />
						</th>
					    </table>
					    <br><br>
				            <input type="submit" value="Envoyer" />
					    <br><br><br><br><br>
					    <div style="font-size: 10px">* champs provisoirs</div>
					</div>
				    </form>
				</div>
			    </div>
			    <br>
			</center>
			<br><br><br><br><br>
		    </th>
		</tr>
	    </table>
<?php
}
?>
		
	</body>
</html>
Merci ^^

Re: Formulaire inscription

Posté : 06 mai 2013, 21:18
par moogli
salut,


quel est le message d'erreur ?

@+

Re: Formulaire inscription

Posté : 06 mai 2013, 21:39
par Enzo81
Une erreur est survenue lors de l'inscription.

Re: Formulaire inscription

Posté : 06 mai 2013, 22:05
par moogli
ta requête SQL est foireuse.

Il est impératif d'affiche les message d'erreur (notamment SQL) lorsque l'on développe.

dans ton cas, tu indique que tu insère 5 champs mais ne donne que 4 valeurs.


@+

Re: Formulaire inscription

Posté : 06 mai 2013, 22:16
par Enzo81
J'aimerais que dans la Table n'apparaisse que username, password, email.

Merci.

Re: Formulaire inscription

Posté : 06 mai 2013, 22:35
par moogli
ben enlève les autres champs :)

pour des cours sur la base du SQL : http://www.lephpfacile.com ou http://www.phpdebutant.org

@+

Re: Formulaire inscription

Posté : 06 mai 2013, 22:47
par Enzo81
J'ai enlevé les champs toujour pareil... Sinon j'ai un autre code qui marche mais je doit tout config pour que si l'user est déjà prit...

Re: Formulaire inscription

Posté : 06 mai 2013, 22:59
par moogli
il n'y a pas grand chose à faire, ajoute le message d'erreur SQL (avec mysql_error) dans le else.

Tu auras une aide précieuse.

Apprend un minimum de SQL t'aidera beaucoup, tu peux aussi voir sur http://sqlpro.developpez.com


@+

Re: Formulaire inscription

Posté : 07 mai 2013, 15:37
par Enzo81
Toujours pareil mais j'ai réussit a faire la condition que si le user est déjà prit sa marche pas. A mon avis sa doit être un mauvais code via Mysql

Re: Formulaire inscription

Posté : 07 mai 2013, 16:35
par moogli
sans le code incriminé (le dernier) et sans message d'erreur on ne peux pas t'aider.

as tu mis en place l'affichage du message d'erreur en cas d'échec de la requête SQL ?

a tu compris ma remarque sur la requête ?

@+