Espace membre php

Fermé
dran - 19 mai 2011 à 19:20
 guy2mars - 23 mai 2011 à 07:42
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.
A voir également:

21 réponses

guy2mars Messages postés 204 Date d'inscription dimanche 18 février 2007 Statut Membre Dernière intervention 24 janvier 2013 71
21 mai 2011 à 17:27
si tu ne recois rien, c'est que tu dois retourner a ton formulaire qui envoie les variables.
1
Nyctaclope Messages postés 5315 Date d'inscription dimanche 6 avril 2008 Statut Membre Dernière intervention 11 décembre 2022 1 253
Modifié par Nyctaclope le 19/05/2011 à 19:33
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
guy2mars Messages postés 204 Date d'inscription dimanche 18 février 2007 Statut Membre Dernière intervention 24 janvier 2013 71
Modifié par guy2mars le 19/05/2011 à 22:26
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
Pour la page du formulaire elle est faire et renvoie bien en post a la page que je vous ai montrer
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
guy2mars Messages postés 204 Date d'inscription dimanche 18 février 2007 Statut Membre Dernière intervention 24 janvier 2013 71
20 mai 2011 à 18:16
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
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
guy2mars Messages postés 204 Date d'inscription dimanche 18 février 2007 Statut Membre Dernière intervention 24 janvier 2013 71
20 mai 2011 à 19:31
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
cela me refais la même chose page blanche
0
guy2mars Messages postés 204 Date d'inscription dimanche 18 février 2007 Statut Membre Dernière intervention 24 janvier 2013 71
20 mai 2011 à 19:56
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
en fait sa n'écris rien dans la table puis quel est vide après l'inscription
0
guy2mars Messages postés 204 Date d'inscription dimanche 18 février 2007 Statut Membre Dernière intervention 24 janvier 2013 71
20 mai 2011 à 20:56
as tu fait les echos? as tu bien les variables transmises ?
dans ta table, as tu des null interdits etc... faut verifier
@+
0
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
guy2mars Messages postés 204 Date d'inscription dimanche 18 février 2007 Statut Membre Dernière intervention 24 janvier 2013 71
20 mai 2011 à 22:49
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
guy2mars Messages postés 204 Date d'inscription dimanche 18 février 2007 Statut Membre Dernière intervention 24 janvier 2013 71
Modifié par guy2mars le 21/05/2011 à 08:51
<?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
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
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
guy2mars Messages postés 204 Date d'inscription dimanche 18 février 2007 Statut Membre Dernière intervention 24 janvier 2013 71
21 mai 2011 à 18:47
tu te connectes quand?????
0
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
guy2mars Messages postés 204 Date d'inscription dimanche 18 février 2007 Statut Membre Dernière intervention 24 janvier 2013 71
21 mai 2011 à 20:20
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
<?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