Formulaire inscription

Petit nouveau ! | 5 Messages

06 mai 2013, 19:40

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 ^^

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

06 mai 2013, 21:18

salut,


quel est le message d'erreur ?

@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 5 Messages

06 mai 2013, 21:39

Une erreur est survenue lors de l'inscription.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

06 mai 2013, 22:05

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.


@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 5 Messages

06 mai 2013, 22:16

J'aimerais que dans la Table n'apparaisse que username, password, email.

Merci.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

06 mai 2013, 22:35

ben enlève les autres champs :)

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

@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 5 Messages

06 mai 2013, 22:47

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...

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

06 mai 2013, 22:59

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


@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 5 Messages

07 mai 2013, 15:37

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

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

07 mai 2013, 16:35

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 ?

@+
Il en faut peu pour être heureux ......