erreur? Où ça?

Eléphanteau du PHP | 43 Messages

19 déc. 2011, 17:55

Bonjour à tous.

Je vous expose un problème. J'ai fait un formulaire d'inscription, qui marchait, mais j'ai voulu l'agrémenter d'autres fonctions. Le problème est que quand je mets "envoyer" les champs du formulaire se vide, celui ci n'est pas envoyé.

Voici ma base de donnée :
CREATE TABLE IF NOT EXISTS `users` (
  `id` bigint(20) NOT NULL,
  `username` varchar(255) NOT NULL,
  `password` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `avatar` varchar(255) NOT NULL,
  `signup_date` int(10) NOT NULL,
  `adresse_web` varchar(255) NOT NULL,
  `insdate` varchar(20) NOT NULL,
  `insheure` varchar(20) NOT NULL,
  `sexe_inscription` varchar(255) NOT NULL default '0',
  `ville` varchar(255) NOT NULL,
  `adresse_aim` varchar(255) NOT NULL,
  `adresse_msn` varchar(255) NOT NULL,
  `prenom` varchar(255) NOT NULL,
  `nom` varchar(255) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

ma page inscription.php
	<?php
include('config.php');
?>
<!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>

           <title>DBA PRODUCTION FILMS : LA REALISATION AUDIOVISUELLE</title>


                                                                <!--Metas-->

<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta http-equiv="content-language" content="fr" />

<meta name="description" content="Réalisation audiovisuelle dans la france entière" />

<meta name="robots" content="index, follow" />
<meta name="indentifier-URL" content="www.xxxxxx.com" />
<meta name="copyright" content="Dba production film 2011" />

<link rel="stylesheet" media="all" type="text/css" href="css/espacemembre.css" />
<link rel="shortcut icon" type="image/x-icon" href="favicon.ico" />


</head>


<body>
<div class="content">
  <?php
//On affiche un message de bienvenue, si lutilisateur est connecte, on affiche son pseudo
?>
	<?php if(isset($_SESSION['username'])){echo ' Bonjour '.htmlspecialchars($_SESSION['username'], ENT_QUOTES, 'UTF-8');} ?>
  <?php
//Si lutilisateur est connecte, on lui donne un lien pour modifier ses informations, pour voir ses messages et un pour se deconnecter
if(isset($_SESSION['username']))
{
//On compte le nombre de nouveaux messages que lutilisateur a
$nb_new_pm = mysql_fetch_array(mysql_query('select count(*) as nb_new_pm from pm where ((user1="'.$_SESSION['userid'].'" and user1read="no") or (user2="'.$_SESSION['userid'].'" and user2read="no")) and id2="1"'));
//Le nombre de nouveaux messages est stoque dans la variable $nb_new_pm
$nb_new_pm = $nb_new_pm['nb_new_pm'];
//On affiche les liens
?>
      
  <a href="list_pm.php"> | Vous avez <?php echo $nb_new_pm; ?> messages</a> | <a href="edit_infos.php">Mon compte | </a>
  <a href="connexion.php">Se d&eacute;connecter</a>
  <?php
}
else
{
//Sinon, on lui donne un lien pour sinscrire et un autre pour se connecter
?>
  <a href="inscription.php">Inscription</a>
  <a href="connexion.php">Se connecter</a>
  <?php
}
?>
    </div>
<?php include('include/header.inc.php'); ?>

		<!-- corps -->
	<div id="corps">
		<div id="titre"><font color="#000000">Inscrip</font><font color="#ba2c3a">tion</font>
        </div>
        
        <div id="descriptif_inscription"> Vous avez aimé nos tutoriaux? Vous désirez participer aux forums, à une news? Pour cela rien de plus simple. Remplissez les informations demandées, cela ne vous prendra que deux minutes.
        </div>
	
    <div id="inscription">
    


<?php
//On verifie que le formulaire a ete envoye
if(isset($_POST["username"]) AND isset($_POST["password"]) AND isset($_POST["password"]) AND isset($_POST["passverif"]) AND isset($_POST["email"]) AND isset($_POST["adresse_web"]) AND isset($_POST["adresse_msn"]) AND isset($_POST["adresse_aim"]) AND isset($_POST["prenom"]) AND isset($_POST["nom"]) AND isset($_POST["ville"]) AND isset($_POST["signature"]) AND isset($_POST["upload_inscription"]) AND isset($_POST["avatar"]) AND isset ($_POST['sexe_inscription'])!='')
{
	//On enleve lechappement si get_magic_quotes_gpc est active
	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']);
		$_POST['avatar'] = stripslashes($_POST['avatar']);
		$_POST['adresse_web'] = stripslashes($_POST['adresse_web']);
		$_POST['adresse_msn'] = stripslashes($_POST['adresse_msn']);
		$_POST['adresse_aim'] = stripslashes($_POST['adresse_aim']);
		$_POST['prenom'] = stripslashes($_POST['prenom']);
		$_POST['nom'] = stripslashes($_POST['nom']);
		$_POST['ville'] = stripslashes($_POST['ville']);
		$_POST['signature'] = stripslashes($_POST['signature']);
		$_POST['upload_inscription'] = stripslashes($_POST['upload_inscription']);
		$_POST['sexe_inscription'] = stripslashes($_POST['sexe_inscription']);
	}
	//On verifie si le mot de passe et celui de la verification sont identiques
	if($_POST['password']==$_POST['passverif'])
	{
		//On verifie si le mot de passe a 6 caracteres ou plus
		if(strlen($_POST['password'])>=6)
		{
			//On verifie si lemail est valide
			if(preg_match('#^(([a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+\.?)*[a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+)@(([a-z0-9-_]+\.?)*[a-z0-9-_]+)\.[a-z]{2,}$#i',$_POST['email']))
			{
				//On echape 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']);
				$avatar = mysql_real_escape_string($_POST['avatar']);
				$adresse_web = mysql_real_escape_string($_POST['adresse_web']);
				$adresse_msn = mysql_real_escape_string($_POST['adresse_msn']);
				$adresse_aim = mysql_real_escape_string($_POST['adresse_aim']);
				$prenom = mysql_real_escape_string($_POST['prenom']);
				$nom = mysql_real_escape_string($_POST['nom']);
				$ville = mysql_real_escape_string($_POST['ville']);
				$signature = mysql_real_escape_string($_POST['signature']);
				$upload_inscription = mysql_real_escape_string($_POST['upload_inscription']);
				$sexe_inscription = mysql_real_escape_string($_POST['sexe_inscription']);
				//On verifie sil ny a pas deja un utilisateur inscrit avec le pseudo choisis
				$dn = mysql_num_rows(mysql_query('select id from users where username="'.$username.'"'));
				if($dn==0)
				{
					//On recupere le nombre dutilisateurs pour donner un identifiant a lutilisateur actuel
					$dn2 = mysql_num_rows(mysql_query('select id from users'));
					$id = $dn2+1;
					//On enregistre les informations dans la base de donnee
					if(mysql_query('insert into users(id, username, password, email, avatar, adresse_web, adresse_msn, adresse_aim, prenom, nom, ville, signature, upload_inscription, autmail, sexe_inscription  signup_date,) values ('.$id.', "'.$username.'", "'.$password.'", "'.$email.'", "'.$avatar.'", '.$adresse_web.', '.$adresse_msn.', '.$adresse_aim.', '.$prenom.', '.$nom.', '.$ville.', '.$signature.', '.$upload_inscription.', '.$autmail.', '.$sexe_inscription.', "'.time().'")'))
					{
						//Si ca a fonctionne, on naffiche 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="connexion.php">Se connecter</a></div>
<?php
					}
					else
					{
						//Sinon on dit quil 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 deja 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 lemail nest 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 sil y a lieu
		if(isset($message))
		{
			echo '<div class="message">'.$message.'</div>';
		}
		//On affiche le formulaire
		?>
		<div class="titre_pour_inscription">
			<form action="inscription.php" method="post">
				<div align="center">Veuillez remplir ce formulaire pour vous inscrire:<br />
				</div>
				<div class="center">
					<p class="double">
				  <label for="username">			          Nom d'utilisateur *</label>
				  <input type="text" name="username" value="<?php if(isset($_POST['username'])){echo htmlspecialchars($_POST['username'], ENT_QUOTES, 'UTF-8');} ?>" />
				  <br />
				  </p>
				  <p class="double">
				    <label for="password">Mot de passe<span class="small">(6 caract&egrave;res min.)</span> *</label><input type="password" name="password" /><br /></p>
					<p class="double">
					  <label for="passverif">Mot de passe<span class="small">(v&eacute;rification)</span> *</label><input type="password" name="passverif" /><br /></p>
				  <p class="double">
				    <label for="email">Email *</label><input type="text" name="email" value="<?php if(isset($_POST['email'])){echo htmlspecialchars($_POST['email'], ENT_QUOTES, 'UTF-8');} ?>" /><br /></p>
                   <p class="double"><label for="site_internet">Site web(sans http://)</label><input type='text' name='adresse_web'  id='adresse_web'></p>
 					<p class="double"><label for="adresse_msn">MSN</label><input type='text' name='adresse_msn'  id='adresse_msn'></p>
                    <p class="double"><label for="adresse_aim">AIM</label><input type='text' name='adresse_aim'  id='adresse_aim'></p>
                    <p class="double"><label for="prenom">Prénom</label><input type='text' name='prenom'  id='prenom'></p>
                    <p class="double"><label for="nom">Nom</label><input type='text' name='nom'  id='nom'></p>
 					<p class="double"><label for="ville">Ville *</label><input type='text' name='ville'  id='ville'></p>
                  <p class="double"><label for="signature">Signature *</label><textarea type='text' name='signature'  id='signature'></textarea></p>
		
					<center>Selectionnez le type d'avatar que vous désirez :</center>
					<p class="double"><label for="upload">Upload</label><input type='radio' name='upload_inscription'  id='upload_inscription' ></p>
                    <p class="double"><input name='avatar' type='file' id='avatar'></p>
	
	<td>Liste prédéfinie :<br><center><A HREF='#' onClick="window.open('liste_avatars.php','_blank','toolbar=0, location=0, directories=0, status=0, scrollbars=1, resizable=0, copyhistory=0, menuBar=0, width=900, height=600');return(false)">Liste avatars</A>
	</center></td>
	<td>

	<input type='radio' name='typeava' value='pred' checked> 
	<select class='input' name='predef' onChange='showimage()'>
<option class='input' value='000.jpg' >000.jpg</option>
<option class='input' value='001.gif' >001.gif</option>
<option class='input' value='002.gif' >002.gif</option>
<option class='input' value='003.gif' >003.gif</option>
<option class='input' value='004.gif' >004.gif</option>
<option class='input' value='005.gif' >005.gif</option>
<option class='input' value='006.gif' >006.gif</option>

<option class='input' value='007.gif' >007.gif</option>
<option class='input' value='008.gif' >008.gif</option>
<option class='input' value='009.gif' >009.gif</option>
<option class='input' value='010.gif' >010.gif</option>
<option class='input' value='011.gif' >011.gif</option>
<option class='input' value='012.gif' >012.gif</option>
<option class='input' value='013.gif' >013.gif</option>
<option class='input' value='014.gif' >014.gif</option>
<option class='input' value='015.gif' >015.gif</option>

<option class='input' value='016.gif' >016.gif</option>
<option class='input' value='017.gif' >017.gif</option>
<option class='input' value='018.gif' >018.gif</option>
<option class='input' value='019.gif' >019.gif</option>
<option class='input' value='020.gif' >020.gif</option>
<option class='input' value='021.gif' >021.gif</option>
<option class='input' value='022.gif' >022.gif</option>
<option class='input' value='023.gif' >023.gif</option>
<option class='input' value='024.gif' >024.gif</option>

<option class='input' value='025.gif' >025.gif</option>
<option class='input' value='026.gif' >026.gif</option>
<option class='input' value='027.gif' >027.gif</option>
<option class='input' value='028.gif' >028.gif</option>
<option class='input' value='029.gif' >029.gif</option>
<option class='input' value='030.gif' >030.gif</option>
<option class='input' value='031.gif' >031.gif</option>
<option class='input' value='032.gif' >032.gif</option>
<option class='input' value='033.gif' >033.gif</option>

<option class='input' value='034.gif' >034.gif</option>
<option class='input' value='035.gif' >035.gif</option>
<option class='input' value='036.gif' >036.gif</option>
<option class='input' value='037.gif' >037.gif</option>
<option class='input' value='038.gif' >038.gif</option>
<option class='input' value='039.gif' >039.gif</option>
<option class='input' value='040.gif' >040.gif</option>
<option class='input' value='041.gif' >041.gif</option>
<option class='input' value='042.gif' >042.gif</option>

<option class='input' value='043.gif' >043.gif</option>
<option class='input' value='044.gif' >044.gif</option>
<option class='input' value='045.gif' >045.gif</option>
<option class='input' value='046.gif' >046.gif</option>
<option class='input' value='047.gif' >047.gif</option>
<option class='input' value='048.gif' >048.gif</option>
<option class='input' value='049.gif' >049.gif</option>
<option class='input' value='050.gif' >050.gif</option>


</select>&nbsp;&nbsp;<img src='images/avatar/000.jpg' name='predef_name' width='50' height='50' alt=''>

	<p class="double"><label for="afficher_email">Afficher votre email?</label>Oui : <input type='radio' name='autmail'  value="oui" checked="checked">&nbsp;Non : <input name='autmail' type='radio' value='non'></p>
	
    	<p class="double"><label for="sexe">Votre sexe</label>Homme : <input type='radio' name='sexe_inscription'  value="homme" checked="checked">&nbsp;Femme : <input name='sexe_inscription' type='radio' value='femme'></p>
					<input type="submit" value="Envoyer" />  <input type="button" value="Retour" onclick="history.go(-1)">
				</div>
			</form>
		</div>
		<?php
		}
		?>
	</div>
</div>

<div style="clear:both"></div>
<?php include('include/footer.inc.php'); ?>


</body>
</html>
Je vous remercie de bien vouloir m'aider. Je suppose une erreur bête, mais laquelle :s

Eléphanteau du PHP | 22 Messages

19 déc. 2011, 18:19

Bonjour Damb34,

Il serait bon de nous indiquer ce qui a été rajouté depuis que ça ne fonctionne plus.

Eléphanteau du PHP | 43 Messages

19 déc. 2011, 18:32

Bonjour,

j'avais quatre champ : username, password, verifpass et email.

J'ai rajouté : adresse_web, adresse_msn,adresse_aim,prenom,nom,ville,signature,upload_inscription,autmail,sexe_inscription.

Pour ce faire j'ai récuperer les morceau du code de base, et j'ai fait copier coller en changeant le nom. Ce qui me paraissait normal, puisque je veux récuperer ces infos. Or depuis, j'ai mon probleme.

ViPHP
xTG
ViPHP | 7331 Messages

19 déc. 2011, 19:02

Affiches des messages de debug à chaque condition et tu trouveras en fonction de ce qui s'affiche où cela plante.
isset ($_POST['sexe_inscription'])!=''
ça déjà c'est pas bon... isSet() renvoie un booléen, donc le comparer à une chaîne de caractères n'a aucun sens.

Eléphanteau du PHP | 43 Messages

19 déc. 2011, 19:11

j'avoue, je l'ai supprimé, mais ca persiste :(

ViPHP
xTG
ViPHP | 7331 Messages

19 déc. 2011, 20:27

Affiches des messages de debug à chaque condition et tu trouveras en fonction de ce qui s'affiche où cela plante.

ViPHP
ViPHP | 1996 Messages

21 déc. 2011, 00:37

C'est quoi ton erreur précisément ?
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Eléphanteau du PHP | 43 Messages

21 déc. 2011, 10:47

C'est tout simple.

Avant : On remplissait le formulaire qui était constitué de : username, pseudo verifpass, email. Puis on valider. Le formulaire était bien enregistrer et le message "vous pouvez revenir a la page d'accueil arrivé", et on était connecté.

Maintenant : On remplit le formulaire qui est constitué de : username, pseudo verifpass, email,adresse_web, adresse_msn, adresse_aim, prenom, nom, ville,signature,upload_inscription,autmail,sexe_inscription. On valide, et les champs du formulaire s'efface, mais du coup l'inscription ne se fait pas.

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

21 déc. 2011, 11:16

salut,

est ce que le script affiche un message d'erreur ?
a tu essayé d'afficher la requête SQL ?

quand je vois la gestion de l'id je me demande si tu connais l'auto_increment :)
<?php
if(mysql_query('insert into users(id, username, password, email, avatar, adresse_web, adresse_msn, adresse_aim, prenom, nom, ville, signature, upload_inscription, autmail, sexe_inscription  signup_date,) values ('.$id.', "'.$username.'", "'.$password.'", "'.$email.'", "'.$avatar.'", '.$adresse_web.', '.$adresse_msn.', '.$adresse_aim.', '.$prenom.', '.$nom.', '.$ville.', '.$signature.', '.$upload_inscription.', '.$autmail.', '.$sexe_inscription.', "'.time().'")'))

à remplacer par
$sql = 'insert into users(id, username, password, email, avatar, adresse_web, adresse_msn, adresse_aim, prenom, nom, ville, signature, upload_inscription, autmail, sexe_inscription  signup_date,) values ('.$id.', "'.$username.'", "'.$password.'", "'.$email.'", "'.$avatar.'", '.$adresse_web.', '.$adresse_msn.', '.$adresse_aim.', '.$prenom.', '.$nom.', '.$ville.', '.$signature.', '.$upload_inscription.', '.$autmail.', '.$sexe_inscription.', "'.time().'")'
if (mysql_query($sql)) {
//}
else {
echo 'Erreur SQL : '. mysql_error().'<br />'.$sql;
}
?>
tu peux aussi utiliser var_dump() pour vérifier le contenu de test variables ($_POST / $_SESSION)

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

ViPHP
ViPHP | 2577 Messages

21 déc. 2011, 11:27

Après chaque if et chaque else ajoute un echo pour savoir ou tu passes dans les traitements. Lorsque tu auras déterminé ce qui n'est pas conforme à ce que tu as prévu, tu pourras chercher pourquoi.

Eléphanteau du PHP | 43 Messages

21 déc. 2011, 13:30

Les seuls messages d'erreur qu'il me sort, c'est quand le pseudo est trop court, ou les mots de passe ne sont pas les memes.

Eléphant du PHP | 343 Messages

21 déc. 2011, 13:44

moogli, d'après ta remarque je pense que tu voulais plutôt dire:
à remplacer par
$sql = 'insert into users(id, username, password, email, avatar, adresse_web, adresse_msn, adresse_aim, prenom, nom, ville, signature, upload_inscription, autmail, sexe_inscription  signup_date,) values ('', "'.$username.'", "'.$password.'", "'.$email.'", "'.$avatar.'", '.$adresse_web.', '.$adresse_msn.', '.$adresse_aim.', '.$prenom.', '.$nom.', '.$ville.', '.$signature.', '.$upload_inscription.', '.$autmail.', '.$sexe_inscription.', "'.time().'")'
if (mysql_query($sql)) {
//}
else {
echo 'Erreur SQL : '. mysql_error().'<br />'.$sql;
}
On vire le $id ;).
Que donne un echo $sql; ?
Développeur web

Mammouth du PHP | 2278 Messages

21 déc. 2011, 14:06

En-dehors de remarques sur la présentation catastrophique du code, j'ajouterai simplement:
ajouter là:
print_r($_POST);
//On enleve l'échappement si get_magic_quotes_gpc est active
        if(get_magic_quotes_gpc())
        {
ce qui permet d'être sûr que le formulaire passe bien avec les valeurs prévues...
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphanteau du PHP | 43 Messages

22 déc. 2011, 10:33

sam12 : Quand j'ai copié ton passage php, j'ai eu droit à : Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in C:\wamp\www\site\inscription.php on line 132. (132 correspond a la première ligne du copier collé).

De plus, comme la dit sirakawa, j'ai remodifié cette partie du code ;)

Eléphanteau du PHP | 43 Messages

22 déc. 2011, 10:39

Et voici ce qui m'est arrivé avec le print avant de mettre le code de sam12 :

Image

LA ligne 121 c'est :
$upload_inscription = mysql_real_escape_string($_POST['upload_inscription']);