Page 1 sur 2

Problème enregistrement mbre

Posté : 17 janv. 2006, 13:27
par anthony
Bonjour, j'ai créé deux fichiers, un en html (index.html) et un en php (valide.php) pour enregistrer des mbres, je pense que le premier je doit le mettre aussi en php mais il plante, quand je le met, mais quand il est en html il se lance, mais fonctionne pas terrible terrible, mon but c'est de mettre un champ de confrmation de mot de passe (ça j'ai réussi, mais il ne vérifie pas entre eux ...) et aussi de voir si le login n'est pas déjà pris.

Voici les fichiers merci de m'indiquer où est-ce que ça coince :

index.html :
<?php
     $dbhost="localhost";
     $dblogin="root";
     $dbpassword="";
     $dbname="mysql";

     mysql_connect($dbhost,$dblogin,$dbpassword);mysql_selectdb($dbname);
     mysql_select_db( "users")

     if ( empty( $login ) ||
          empty( $password ) ||
          empty( $password ) )
         $message .= Wous devez remplir tous les champs;
     if ($password != $password2
         $message .="Votre mot de passe ne concordent pas;
     if ( strlen ( $password ) < 4 )
         $message .= Votre mot de passe doit comporter au moin 4 caractères.;
     if ( strlen ( $login ) < 4 )
         $message .= Votre login doit comporter au moin 4 caractères.;
     if ( geRow("login");
         $message .=Le nom de connexion $login existe déjà.;
     if ( $message == "" ) // si pas d'erreur
     
         mysql_close();       
     
     
     ?>
     
<html>
<body>
<!-- début du document -->
<form action="valide.php">
Identifiant: <input type=text name=login value "" maxlenght=15 ><br>
Nom: <input type=text name=nom value "" maxlenght=15><br>
Prénom: <input type=text name=prenom value "" maxlenght=15><br>
Adresse e-mail: <input type=text name=adresse><br>
Mot de passe: <input type=password name=password value "" maxlenght=15><br>
Confirmation Mot de passe: <input type=password name=password2 value "" maxlenght=15><br>
<input type=submit value="Enregistrer">
</form>
<!-- Fin du document -->
</body>
</html>
et valide.php :
<html>

<head>

<title>Enregistrement</title>



</head>

<body>

<?php


      // Parametres de connexion à la base de données
    
     $dbhost="localhost";
     $dblogin="root";
     $dbpassword="";
     $dbname="mysql";
    
    // Conversion des variables externes
    // en variables globales
    $login   = $_GET["login"];
    $prenom  = $_GET["prenom"];
    $nom     = $_GET["nom"];
    $adresse = $_GET["adresse"];
    $password = $_GET["password"];

      echo "Bonjour $prenom $nom,<br>";
     mysql_connect($dbhost,$dblogin,$dbpassword);mysql_selectdb($dbname);
     $result=mysql_query("INSERT INTO users (login,nom,prenom,adresse, password)
              VALUES ('$login','$nom','$prenom','$adresse', '$password')");
     if (!$result) {
        echo "L'enregistrement de vos données a échoué. Essayez plus tard <br>";
     } else {
        echo "Félicitations. Vous êtes desormais un nouveau membre !<br>";

$destinataire = $adresse;
echo "Un mail de confirmation vous a été envoyez à $destinataire";
mail($destinataire, "Création de compte sur notre serveur", "Bonjour $prenom, nous vous remercions de vous êtres inscrit sur note site et nous esperons que vous jouerez pour le mieux, nous avons retenu ces information : Votre nom : $nom Votre prenom : $prenom Votre login : $login, votre mot de passe : $password et  votre adresse email $adresse, sur ce bonne chance et que la force soit avec vous ;-)  ");
     }

     mysql_close();
?>
</body>
</html>

Merci d'avance :)

Posté : 17 janv. 2006, 13:31
par Cyrano
Si tu avais utilisé le bouton [php] au lieu de [Quote], tu aurais eu une coloration syntaxique: j'ai modifié et je te laisse voir : le premier script a une erreur qui devrait te sauter aux yeux : un guillemets manquant.

Posté : 17 janv. 2006, 13:43
par Anthony
Sinon tout le reste est juste et ne pose pas de problème ?

Posté : 17 janv. 2006, 15:10
par Cyrano
Sinon tout le reste est juste et ne pose pas de problème ?
Il n'y a que toi qui peux répondre à cette question : obtiens-tu le résultat attendu ?

Posté : 17 janv. 2006, 19:24
par Anthony
Ca ne marche pas ...

J'ai rajouté des { } pour la fonction if mais rien n'y change, une idée ?

voici le msg d'erreur :
Parse error: parse error in c:\program files\easyphp1-8\www\index.php on line 10

Et mon fichier index.php
<?php 
     $dbhost="localhost"; 
     $dblogin="root"; 
     $dbpassword=""; 
     $dbname="mysql"; 

     mysql_connect($dbhost,$dblogin,$dbpassword);mysql_selectdb($dbname); 
     mysql_select_db( "users") 

     if ( empty( $login ) 
          empty( $password )  
          empty( $password2 ) )  
              {
         $message .= Vous devez remplir tous les champs; 
              }
     if ($password != $password2 
              {
         $message .="Votre mot de passe ne concordent pas;
              } 
     if ( strlen ( $password ) < 4 ) 
              {
         $message .= Votre mot de passe doit comporter au moin 4 caractères.; 
              }
     if ( strlen ( $login ) < 4 ) 
              { 
        $message .= Votre login doit comporter au moin 4 caractères.; 
              }
     if ( geRow("login"); 
              { 
        $message .=Le nom de connexion $login existe déjà.; 
              }
     if ( $message == "" ) // si pas d'erreur 
      
         mysql_close();        
      
      
     ?> 
      
<html> 
<body> 
<!-- début du document --> 
<form action="valide.php"> 
Identifiant: <input type=text name=login value "" maxlenght=15 ><br> 
Nom: <input type=text name=nom value "" maxlenght=15><br> 
Prénom: <input type=text name=prenom value "" maxlenght=15><br> 
Adresse e-mail: <input type=text name=adresse><br> 
Mot de passe: <input type=password name=password value "" maxlenght=15><br> 
Confirmation Mot de passe: <input type=password name=password2 value "" 

maxlenght=15><br> 
<input type=submit value="Enregistrer"> 
</form> 
<!-- Fin du document --> 
</body> 
</html> 

Posté : 17 janv. 2006, 19:34
par momox
Tu as oublié de fermer une parenthese !
<?php
     $dbhost="localhost";
     $dblogin="root";
     $dbpassword="";
     $dbname="mysql";

     mysql_connect($dbhost,$dblogin,$dbpassword);mysql_selectdb($dbname);
     mysql_select_db( "users");

     if ( empty( $login )
          empty( $password )  
          empty( $password2 ) )  
              {
         $message = 'Vous devez remplir tous les champs';
              }
     if ($password != $password2 )
              {
         $message ='Votre mot de passe ne concordent pas';
              }
     if ( strlen ( $password ) < 4 )
              {
         $message = 'Votre mot de passe doit comporter au moin 4 caractères';
              }
     if ( strlen ( $login ) < 4 )
              {
        $message = 'Votre login doit comporter au moin 4 caractères.';
              }
     if ( geRow("login");
              {
        $message='Le nom de connexion $login existe déjà';
              }
     if ( $message == "" ) // si pas d'erreur
      
         mysql_close();        
      
      
     ?>
      
<html>
<body>
<!-- début du document -->
<form action="valide.php">
Identifiant: <input type=text name=login value "" maxlenght=15 ><br>
Nom: <input type=text name=nom value "" maxlenght=15><br>
Prénom: <input type=text name=prenom value "" maxlenght=15><br>
Adresse e-mail: <input type=text name=adresse><br>
Mot de passe: <input type=password name=password value "" maxlenght=15><br>
Confirmation Mot de passe: <input type=password name=password2 value ""

maxlenght=15><br>
<input type=submit value="Enregistrer">
</form>
<!-- Fin du document -->
</body>
</html>
J'ai nettoyé un peu ton code, ca devrait marcher maintenant!
@+

Posté : 17 janv. 2006, 19:41
par Truc
Ca ne marche pas ...
J'ai rajouté des { } pour la fonction if mais rien n'y change, une idée ?
C'est abusé la quand même, non ? :x
le premier script a une erreur qui devrait te sauter aux yeux : un guillemets manquant.

Posté : 17 janv. 2006, 19:53
par Anthony
Truc : les guillemets je pensais que Cyrano les avaient rajouté car il a dit j'ai modifié, et je viens de comprend qu'il a mis les balises
 à la place de quote,

momox je te remercie mais toujours un bug ... erf 
[quote]Parse error: parse error in c:\program files\easyphp1-8\www\index.php on line 11[/quote]

^^

Posté : 17 janv. 2006, 20:07
par Cyrano
Si tu séparais les différents éléments de comparaison par un && ou bien un || peut-être bien que ça irait mieux :
if ( empty( $login ) || empty( $password ) || empty( $password2 ) )

Posté : 17 janv. 2006, 20:10
par Anthony
Rien à y faire ...


Parse error: parse error, expecting `'('' in c:\program files\easyphp1-8\www\index.php on line 10


Le problème viens des "if" ? où çe peux venir de la connexion à la bd ?

Posté : 17 janv. 2006, 20:14
par Truc
Montres nous les 10 premières lignes, voir les changements que tu as fait

EDIT:
regarde aussi cette ligne pas très cohérente:
if ( geRow("login");

Posté : 17 janv. 2006, 20:25
par Anthony
Voila :
<?php 
     $dbhost="localhost"; 
     $dblogin="root"; 
     $dbpassword=""; 
     $dbname="mysql"; 

     mysql_connect($dbhost,$dblogin,$dbpassword);mysql_selectdb($dbname); 
     mysql_select_db( "users"); 

     if  ( empty( $login ) || empty( $password ) || empty( $password2 ) )    
              { 
         $message = 'Vous devez remplir tous les champs'; 
              } 
     if ($password != $password2 ) 
              { 
         $message ='Votre mot de passe ne concordent pas'; 
              } 

Posté : 17 janv. 2006, 22:28
par Anthony
J'ai fais une petite maj du code, car il était encore plus faux que tout à l'heure :-D mais là le problème est tjs là ... :cry:
<?php 
     $dbhost="localhost"; 
     $dblogin="root"; 
     $dbpassword=""; 
     $dbname="mysql"; 

     mysql_connect($dbhost,$dblogin,$dbpassword);mysql_selectdb($dbname); 
     mysql_select_db( "users"); 

  if   if  ( empty( $login ) || empty( $password ) || empty( $password2 ) )     
              { 
         $message = 'Vous devez remplir tous les champs'; 
              } 
     if ($password != $password2 ) 
              { 
         $message ='Votre mot de passe ne concordent pas'; 
              } 

Posté : 17 janv. 2006, 23:13
par Cyrano
Bon, on va commencer par un code un peu rangé et corrigé : il n'est certainement pas complet et il manque des lignes ou alors il y en a qui sont inutiles, mais la base est au moins juste:
<?php
$dbhost     = "localhost";
$dblogin    = "root";
$dbpassword = "";
$dbname     = "mysql";

mysql_connect($dbhost,$dblogin,$dbpassword);mysql_selectdb($dbname);
mysql_select_db( "users");

$message = "";
if (empty( $login ) || empty( $password ) || empty( $password2 ))
{
	$message .= "Vous devez remplir tous les champs";
}
if ($password != $password2)
{
	$message .="Votre mot de passe ne concordent pas";
}
if ( strlen ( $password ) < 4 )
{
	$message .= "Votre mot de passe doit comporter au moin 4 caractères.";
}
if ( strlen ( $login ) < 4 )
{
	$message .= "Votre login doit comporter au moin 4 caractères.";
}
if ( geRow("login"));
{
	$message .= "Le nom de connexion ". $login ." existe déjà.";
}
if ( $message == "" )
{
	// si pas d'erreur
	mysql_close();
}
?>
<html>
<body>
<!-- début du document -->
<form action="valide.php">
  Identifiant: <input type=text name=login value "" maxlenght=15 ><br>
  Nom: <input type=text name=nom value "" maxlenght=15><br>
  Prénom: <input type=text name=prenom value "" maxlenght=15><br>
  Adresse e-mail: <input type=text name=adresse><br>
  Mot de passe: <input type=password name=password value "" maxlenght=15><br>
  Confirmation Mot de passe: <input type=password name=password2 value "" maxlenght=15><br>
  <input type=submit value="Enregistrer">
</form>
<!-- Fin du document -->
</body>
</html>
Ceci dit, tu as une connexion à MySQL mais aucune requête : la connexion ne sert pas à grand chose;

Tu fais appel à une fonction getRow() mais la fonction est absente du fichier et tu n'as aucun include;

Ensuite tu utilises des variables qui ne sont définies nulle part : login, $password et $password2 ne sont pas initialisées : tu vas donc de toutes façons générer une erreur;

Essaye de mettre un peu de logique dans tout ça.

Posté : 17 janv. 2006, 23:32
par Truc
j'étais en train de préparer un truc un peu plus correct, histoire de ne pas l'avoir fait pour rien je le poste tout de même :P
<html>
<body>

<?php
        //récupération des variables POST 
	$login     = isset($_POST['login'])     ? $_POST['login']     : "" ;
	$password  = isset($_POST['password'])  ? $_POST['password']  : "" ;
	$password2 = isset($_POST['password2']) ? $_POST['password2'] : "" ;
	 
	 $dbhost="localhost";
     $dblogin="root";
     $dbpassword="";
     $dbname="mysql";
	 
	if (isset($_POST['valider']) // si le formulaire est validé
	{ 	
		 
		$message=""; 
		 
		if ( empty( $login ) || empty( $password ) || empty( $password2 ) )  	
			$message .= 'Vous devez remplir tous les champs <br />';
		
		if ($password != $password2 )	
			$message .='Votre mot de passe ne concordent pas <br />';
		
		if ( strlen ( $password ) < 4 )			  
			$message .= 'Votre mot de passe doit comporter au moin 4 caractères <br />';
				  
		if ( strlen ( $login ) < 4 )			  
			$message .= 'Votre login doit comporter au moin 4 caractères. <br />';
				  
		if ( geRow($login))			  
			$message .='Le nom de connexion '.$login.' existe déjà <br />';
				  
		if ( $message == "" ) // si pas d'erreur
		{		                        mysql_connect($dbhost,$dblogin,$dbpassword);mysql_selectdb($dbname);
		 mysql_select_db("users");	

                     //traitement du formulaire

                 mysql_close(); 		 
		}
		else
			echo $message;		
		
	}        
      
      
     ?>
      

<!-- début du document -->
<form action="valide.php" method="POST">
Identifiant: <input type="text" name="login" value="" maxlenght=15 ><br />
Nom: <input type="text" name="nom" value="" maxlenght=15><br />
Prénom: <input type="text" name="prenom" value="" maxlenght=15><br />
Adresse e-mail: <input type="text" name="adresse"><br />
Mot de passe: <input type="password" name="password" value="" maxlenght=15><br />
Confirmation Mot de passe: <input type="password" name="password2" value="" maxlenght=15><br />
<input type="submit" value="Enregistrer" name="valider">
</form>
<!-- Fin du document -->
</body>
</html>
en ce qui concerne la fonction geRow() il faut effectivement l'ajouter au reste du code.