Espace membre php

dran -  
 guy2mars -
Bonjour,
Je suis débutant en php et je fais un script d'inscription qui ne fais rien une fois la page envoyer :

<?php
include('configuration.php');
if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['passe']) && !empty($_POST['passe'])) && (isset($_POST['mail']) && !empty($_POST['mail'])) && (isset($_POST['passe2']) && !empty($_POST['passe_2']))) 
{ 
      
    if ($_POST['passe'] != $_POST['passe2']) 
	{ 
		$erreur = 'Les 2 mots de passee sont différents.'; 
	} 
    else 
	{  
		$sql = 'SELECT count(*) FROM membres WHERE login="'.mysql_escape_string($_POST['login']).'"'; 
        $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); 
        $data = mysql_fetch_array($req); 
 
        if ($data[0] == 0) 
		{ 
            $sql = 'INSERT INTO membres VALUES("", "'.mysql_escape_string($_POST['login']).'", "'.mysql_escape_string($_POST['passe']).'")'; 
            mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error()); 
 
            session_start(); 
            $_SESSION['login'] = $_POST['login']; 
            echo("L'inscription c'est bien derouler vous pouvez vous connecter");
			?>
				<a href="index.html">ici</a>
			<?php
			exit(); 
        } 
        else 
		{ 
            $erreur = 'Un membre possède déjà ce login.'; 
        } 
    } 
    
}
else 
{ 
    $erreur = 'Vous avez oublier un champ'; 
}  
?> 


vous pouvez m'aider ?
merci.

21 réponses

  • 1
  • 2
  1. guy2mars Messages postés 210 Statut Membre 71
     
    si tu ne recois rien, c'est que tu dois retourner a ton formulaire qui envoie les variables.
    1
  2. Nyctaclope Messages postés 5295 Date d'inscription   Statut Membre Dernière intervention   1 254
     
    Bonjour

    Ton script teste s'il a été répondu correctement à un questionnaire.
    Mais as tu bien créé ce questionnaire, dans la même page, ou une autre, renvoyant les données POST vers ta page de test ?

    A+
    Nyctaclope

    Le plus joli des poèmes de la mathématique : e^(i.PI)=i^2
    trois nombres "sacrés" d'horizons différents qui se donnent la main ...
    0
  3. guy2mars Messages postés 210 Statut Membre 71
     
    Bonsoir
    il n'y a aucun défaut à être débutant. On l'a tous été un jour et on l'est toujours.
    Normalement, tu dois avoir une page formulaire ou, entre tes balises <form></form> tu entres toutes tes variables.
    dans ta balise <form> tu mets en action la page où tu envoies tes variables(control.php) et en method post.
    dans ta page control.php, tu controles la validité et la cohérence des variables postées, puis si tu veux inscrire ou lire dans une base, n'oublie pas de te connecter à cette base......
    d'autre part, mysql_escape_string est obsolète, il est recommandé de lui préférer mysql_real_escape_string mais pourquoi ne pas utiliser simplement mysql_query?
    de plus, tu déclares des variables $erreur et t'en fais quoi?
    bon courage
    0
  4. dran
     
    Pour la page du formulaire elle est faire et renvoie bien en post a la page que je vous ai montrer
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. guy2mars Messages postés 210 Statut Membre 71
     
    ta requete est fausse
    faut mettre :
    $sql = 'INSERT INTO membres (champ1,champ2,champ3) VALUES("", "$_POST['login'])","$_POST['passe']")';
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
    en plus, a ta place, je mettrais les $_POST en $variable, c'est plus facile pour la gestion des cotes, double-cotes dans la requete insert.
    @+
    0
  7. dran
     
    la j'ai un Parse error: syntax error, unexpected T_STRING in C:\wamp\www\4lastwar\inscription.php on line 12

    avec ma requete
    $sql = 'INSERT INTO membres (login,passe,mail) VALUES("", "$_POST['login'])","$_POST['mail'])","$_POST['passe']")';
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
    $data = mysql_fetch_array($req);
    0
  8. guy2mars Messages postés 210 Statut Membre 71
     
    ben oui...
    essaie de faire
    $passe=$_POST['passe'];
    $login=$_POST['login'];
    mais c'est redondant car le $_POST[login'] est déjà = $login
    pour moi, ta requete serait
    $sql="insert into membres(login, passe,mail) values ('$login','$passe','')";
    $exec=mysql_query($sql);
    quant au $data = mysql_fetch_array($req);, je ne vois pas ce qu'il vient faire dans le coup....
    tu fais une commande insert, pas select... tu n'auras pas de message d'erreur, mais ca sert à rien.
    @+
    0
  9. dran
     
    cela me refais la même chose page blanche
    0
  10. guy2mars Messages postés 210 Statut Membre 71
     
    ben c'est normal ca... tu demandes a ton code php d'aller ecrire, il ecrit, de controler, il controle, mais tu ne lui demandes pas d'afficher un truc.
    fais dans ta feuille, au début, un echo "login".$login."<br>";
    echo "passe".$passe."<br>";
    puis avant le mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error()); echo "ma requete".$sql."OK?<br>";
    tu auras des machins
    le fait de ne pas avoir de message d'erreur est bon signe non?

    0
  11. dran
     
    en fait sa n'écris rien dans la table puis quel est vide après l'inscription
    0
  12. guy2mars Messages postés 210 Statut Membre 71
     
    as tu fait les echos? as tu bien les variables transmises ?
    dans ta table, as tu des null interdits etc... faut verifier
    @+
    0
  13. dran
     
    Voila le code ^^ :

    <?php
    include('configuration.php');
    if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['passe']) && !empty($_POST['passe'])) && (isset($_POST['mail']) && !empty($_POST['mail'])) && (isset($_POST['passe2']) && !empty($_POST['passe_2']))) 
    { 
          
        if ($_POST['passe'] != $_POST['passe2']) 
    	{ 
    		$erreur = 'Les 2 mots de passee sont différents.'; 
    	} 
        else 
    	{  
    		$sql="insert into membres(login, passe,mail) values ('$login','$passe','')";
            $exec=mysql_query($sql); 
     
            if ($data[0] == 0) 
    		{ 
                $sql = 'INSERT INTO membres VALUES("", "'.mysql_escape_string($_POST['login']).'", "'.mysql_escape_string($_POST['passe']).'")'; 
                mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error()); 
     
                session_start(); 
                $_SESSION['login'] = $_POST['login']; 
                echo("L'inscription c'est bien derouler vous pouvez vous connecter");
    			?>
    				<a href="index.html">ici</a>
    			<?php
    			exit(); 
            } 
            else 
    		{ 
                $erreur = 'Un membre possède déjà ce login.'; 
            } 
        } 
        
    }
    else 
    { 
        $erreur = 'Vous avez oublier un champ'; 
    }  
    ?> 
    0
  14. guy2mars Messages postés 210 Statut Membre 71
     
    je pense m'etre mal fait comprendre.
    tu dois situer la cause de tes erreurs.
    tu as 2 possibilites
    soit ta page ne recoit pas les variables emises par ton form method='post'
    tu dois tester ces variables avec un echo
    soit tu recois ces variables et tu n'arrives pas a les ecrire dans ta table.
    tu dois avoir un blocage a ce niveau (champ int recoit deschar, etc0..)
    teste tes inscriptions dans ta base pour savoir ou ca bloque
    @+
    0
  15. guy2mars Messages postés 210 Statut Membre 71
     
    <?php
    include('configuration.php');


    $host="hebergeur";
    $user = "login_admin";
    $bdd = "Nom_de_la_base";
    $passwd ="password";


    if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['passe']) && !empty($_POST['passe'])) && (isset($_POST['mail']) && !empty($_POST['mail'])) && (isset($_POST['passe2']) && !empty($_POST['passe_2'])))
    {

    if ($_POST['passe'] != $_POST['passe2'])
    {
    $erreur = 'Les 2 mots de passe sont différents.';
    }
    else
    {
    if ($data[0] == 0)
    {
    // Connexion au serveur
    $connect=mysql_connect($host, $user,$passwd) or die(mysql_error());
    $bdd=mysql_select_db($bdd) or die(mysql_error());


    $sql="insert into membres(login, passe,mail) values ('$login','$passe','')";
    $exec=mysql_query($sql);

    session_start();
    $_SESSION['login'] = $_POST['login'];
    echo "L'inscription c'est bien deroulée vous pouvez vous connecter<br>
    <a href="index.html">ici</a>";
    exit();
    }
    else
    {
    $erreur = 'Un membre possède déjà ce login.';
    }
    }

    }
    else
    {
    $erreur = 'Vous avez oublié un champ';
    }
    ?>
    Habitué du "je sais pas pourquoi ca marche" et du "pourquoi ca marche pas?"
    0
  16. dran
     
    J'ai fais des var_dump qui ne me renvoie rien non plus

    <?php
    
    $host="localhost";
    $user = "root";
    $bdd = "test";
    $passwd ="";
    
    if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['passe']) && !empty($_POST['passe'])) && (isset($_POST['mail']) && !empty($_POST['mail'])) && (isset($_POST['passe2']) && !empty($_POST['passe_2'])))
    {
    
    if ($_POST['passe'] != $_POST['passe2'])
    {
    $erreur = 'Les 2 mots de passe sont différents.';
    }
    else
    {
    if ($data[0] == 0)
    {
    
    $connect=mysql_connect($host, $user,$passwd) or die(mysql_error());
    $bdd=mysql_select_db($bdd) or die(mysql_error());
    
    
    $sql="insert into membres(login, passe,mail) values ('$login','$passe','')";
    $exec=mysql_query($sql);
    
    session_start();
    $_SESSION['login'] = $_POST['login'];
    echo "L'inscription c'est bien deroulée vous pouvez vous connecter";
    ?>
    <a href="index.html">ici</a>";
    <?php
    var_dump($_POST['login']);
    var_dump($_POST['passe']);
    var_dump($_POST['mail']);
    }
    else
    {
    $erreur = 'Un membre possède déjà ce login.';
    }
    }
    
    }
    else
    {
    $erreur = 'Vous avez oublié un champ';
    }
    ?> 
    0
  17. dran
     
    J'ai régler deux trois problème :

    <?php
    
    include 'conf.php';
    
    $sql1 = 'SELECT count(*) FROM membres WHERE login="'.mysql_escape_string($_POST['login']).'" AND passe="'.(mysql_escape_string($_POST['passe'])).'"';
    $req = mysql_query($sql1) or die('Erreur SQL !<br />'.$sql1.'<br />'.mysql_error());
    $data = mysql_fetch_array($req); 
    
    if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['passe']) && !empty($_POST['passe'])) && (isset($_POST['mail']) && !empty($_POST['mail'])) && (isset($_POST['passe2']) && !empty($_POST['passe_2'])))
    {
    
    	if ($_POST['passe'] != $_POST['passe2'])
    	{
    	echo'Les 2 mots de passe sont différents.';
    	}
    	else
    	{
    		if ($data[0] == 0)
    		{
    		$sql="insert into membres(login, passe,mail) values ('$login','$passe','')";
    		$exec=mysql_query($sql);
    
    		session_start();
    		$_SESSION['login'] = $_POST['login'];
    		echo "L'inscription c'est bien deroulée vous pouvez vous connecter";
    		?>
    		<a href="index.html">ici</a>";
    		<?php
    		}
    		else
    		{
    			echo'Un membre possède déjà ce login.';
    		}
    	}
    }
    else
    {
    echo'Vous avez oublié un champ';
    }
    ?> 


    mais la j'ai :
    Warning: mysql_query() [function.mysql-query]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\wamp\www\4lastwar\inscription.php on line 6

    Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in C:\wamp\www\4lastwar\inscription.php on line 6
    Erreur SQL !
    SELECT count(*) FROM membres WHERE login="test" AND passe="test"
    Access denied for user 'ODBC'@'localhost' (using password: NO)
    0
  18. guy2mars Messages postés 210 Statut Membre 71
     
    tu te connectes quand?????
    0
  19. dran
     
    la : include 'conf.php';

    <?php
    try
    {
    	$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    	$bdd = new PDO('mysql:host=localhost;dbname=4lastwar', 'root', '', $pdo_options);
    }
    catch (Exception $e)
    {
            die('Erreur : ' . $e->getMessage());
    }
    ?>
    0
  20. guy2mars Messages postés 210 Statut Membre 71
     
    OOOOPS
    je ne connais rien dans le protocole PDO.
    je reconnais mes errements. Désolé de t'avoir fait perdre du temps.
    Je crois avoir lu les PDO::prepare et PDO::query qui sont proches du mysql, mais proches seulement
    renouvelle ton sujet avec PDO en en tete pour etre explicite
    Codialement
    0
  21. dran
     
    <?php
    
        // Parametres de connexion à la base de données
        $BD_serveur     = "localhost";
        $BD_utilisateur = "root";
        $BD_motDePasse  = "";
        $BD_base        = "4lastwar";
    	
    	if ((empty($_POST['login'])) || (empty($_POST['passe'])) || (empty($_POST['mail'])) || (empty($_POST['passe2'])))
    	{
    		echo"Vous avez oublier un champ !";
    	}
    	else
    	{
    		// Récupération des paramètres POST
    		$login  = $_POST["login"];
    		$passe     = $_POST["passe"];
    		$passe2 = $_POST["passe2"];
    		$mail = $_POST["mail"];
    		
    		//vérifier les mot de passe
    		if ($_POST['passe'] != $_POST['passe2'])
    		{
    			echo'les deux mot de passe sont différent. ';
    		}
    		else
    		{
    			$x = mysql_query("SELECT * FROM membres WHERE login='",$login,"'");
    			if (mysql_result($x,0) != 0)
    			{
    				echo"un membre a déjà ce pseudo";
    			}
    			else
    			{
    				//connexion mysql
    				mysql_pconnect($BD_serveur, $BD_utilisateur, $BD_motDePasse)
    					or die("Impossible de se connecter au serveur de bases de données.");
    				mysql_select_db($BD_base)
    					or die("Impossible de se connecter à la base de données.");
    	
    				//requete
    				$requete = "INSERT INTO membres (login, passe, mail) VALUES ('$login', '$passe','$mail')";
    				$result = @mysql_query($requete);
    			}
    		}
    			//verification de l'ajout a la bdd
    			if (!$result) 
    			{
    				echo "Votre inscription a echoué <br />";
    			} 
    			else 
    			{
    				echo "Félicitations. Vous êtes desormais un nouveau membre de 4lastwar!".
    					"<br />";
    			}
    	}
        
    ?> 


    voila c'est déjà mieu mais il reste un bug a la ligne 28 29 :

    Warning: Wrong parameter count for mysql_query() in C:\wamp\www\4lastwar\inscription.php on line 28
    
    Warning: mysql_result(): supplied argument is not a valid MySQL result resource in C:\wamp\www\4lastwar\inscription.php on line 29
    0
  • 1
  • 2