Problème enregistrement mbre

anthony
Invité n'ayant pas de compte PHPfrance

17 janv. 2006, 13:27

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 :)

Mammouth du PHP | 19672 Messages

17 janv. 2006, 13:31

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Anthony
Invité n'ayant pas de compte PHPfrance

17 janv. 2006, 13:43

Sinon tout le reste est juste et ne pose pas de problème ?

Mammouth du PHP | 19672 Messages

17 janv. 2006, 15:10

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 ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Anthony
Invité n'ayant pas de compte PHPfrance

17 janv. 2006, 19:24

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> 

Mammouth du PHP | 1511 Messages

17 janv. 2006, 19:34

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!
@+

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

17 janv. 2006, 19:41

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.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Anthony
Invité n'ayant pas de compte PHPfrance

17 janv. 2006, 19:53

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]

^^

Mammouth du PHP | 19672 Messages

17 janv. 2006, 20:07

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 ) )
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Anthony
Invité n'ayant pas de compte PHPfrance

17 janv. 2006, 20:10

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 ?

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

17 janv. 2006, 20:14

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");

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Anthony
Invité n'ayant pas de compte PHPfrance

17 janv. 2006, 20:25

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'; 
              } 

Anthony
Invité n'ayant pas de compte PHPfrance

17 janv. 2006, 22:28

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'; 
              } 

Mammouth du PHP | 19672 Messages

17 janv. 2006, 23:13

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

17 janv. 2006, 23:32

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.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute