Probleme avec mon code php

Résolu/Fermé
turboooo Messages postés 50 Date d'inscription jeudi 10 avril 2008 Statut Membre Dernière intervention 8 octobre 2012 - 23 mars 2010 à 17:50
turboooo Messages postés 50 Date d'inscription jeudi 10 avril 2008 Statut Membre Dernière intervention 8 octobre 2012 - 24 mars 2010 à 00:00
bonjour ;
en faite je suis débutant en php et j'ai voulu faire un espace membre bon l'inscription dans la base marche mais quand je veux faire l'authentification ca marche pas je vais mettre mes code et puis je vais dire au fur et a mesure les messages d'erreur qui s'affiche sachant que j'utilise easyphp 1.8

inscription.php

<?php
$info='';
if (isset ($_POST['valider']))
{
$login = $_POST['log1'];
$password = $_POST['pass1'];
$confirm_pass = $_POST['confir1'];
$nom=$_POST['nom1'];
$prenom =$_POST['pren1'];
$email=$_POST['email1'];

// Si l'un des champs est vide, lancer une erreur
if (empty ($login) || empty($password) || empty($confirm_pass)|| empty($nom) || empty($prenom) || empty($email))
{
$info = 'Veuillez renseigner tous les champs';
}

if ($password != $confirm_pass) {
$erreur = 'Les 2 mots de passe sont différents.';
echo 'les deux mots de passes sont differents';
}

else
{
$hostname_connexion = "localhost";
$database_connexion = "didact";
$username_connexion = "root";
$password_connexion = "";
global $connexion;

$connexion = mysql_pconnect($hostname_connexion, $username_connexion, $password_connexion) or trigger_error(mysql_error(),E_USER_ERROR);
mysql_select_db($database_connexion, $connexion);



$query = "INSERT INTO etudiant(ID_etu,password,nom,prenom_etu,login_etud,email_etu) VALUES ('','$login','$password','$nom','$prenom','$email')";

if (mysql_query($query))
{
echo 'mihaw';
$info = 'L"inscription a été créé avec succès';
}
else
{
echo'nono';
$info = 'Erreur lors de la l"inscription';
}
}


}
?>

<html>
<head>
<title>Inscription</title>
</head>
<body>
Inscription à l'espace etudiant :<br />
<form action="inscription.php" method="post" enctype="multipart/form-data">
<p>login : <br /><input type="text" name="log1"/></p>
<p>password : <br /><input type="password" name="pass1" /><p>
<p>confirmer votre password: <br /><input type="password" name="confir1" /><p>
<p> Nom : <br/><input type= "text" name="nom1" /><p>
<p> Prenom :<br/> <input type="text" name="pren1"/><p>
<p> email :<br/> <input type"=text" name="email1" /><p>
<input name="valider" type="submit" value="Valider" />
</form>
</body>
</html>

bon ca marche pas de probleme voici maintenant

index.php



<?php
if (isset($_POST['connexion']))
$login = $_POST['log1'];
$password = $_POST['pass1'];

if (!empty ($login) || !empty($password))
{
$hostname_connexion = "localhost";
$database_connexion = "didact";
$username_connexion = "root";
$password_connexion = "";
global $connexion;

$connexion = mysql_pconnect($hostname_connexion, $username_connexion, $password_connexion) or trigger_error(mysql_error(),E_USER_ERROR);
mysql_select_db($database_connexion, $connexion);
// on teste si une entrée de la base contient ce couple login / pass
$sql = 'SELECT count(*) FROM etudiant WHERE login_etud="'.mysql_escape_string($_POST[
'log1']).'" AND password="'.mysql_escape_string(md5($_POST['pass1'])).'"';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$data = mysql_fetch_array($req);
mysql_free_result($req);
mysql_close();

// si on obtient une réponse, alors l'etudiant est un membre
if ($data[0] == 1) {
session_start();
$_SESSION['login'] = $_POST['log1'];
header('Location: membre.php');
exit();
}
// si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son login,soit dans son mot de passe

elseif ($data[0] == 0) {
$erreur = 'Compte non reconnu.';
}
// sinon, alors la, il y a un gros problème :)
else {
$erreur = 'Probème dans la base de données : plusieurs membres ont les mêmes
identifiants de connexion.';
}
}
else {
$erreur = 'Au moins un des champs est vide.';
}


?>
<html>
<head>
<title>Accueil</title>
</head>
<body>
Connexion à l'espace membre :<br />
<form action="index.php" method="post">
<p>Login :<br/> <input type="text" name="log1" /><p>
<p>Mot de passe : <br/><input type="password" name= "pass1" /><p>
<input type="submit" name="connexion" value="Connexion">
</form>
<a href="inscription.php">Vous inscrire</a>

</body>
</html>
bon quand j'execute ce code il m'affiche ce message :
Notice: Undefined index: pass1 in c:\program files (x86)\easyphp1-8\www\didacticiel\fat\yes\index.php on line 4
il ya un probleme dans la ligne 4 de fichier index bon quand j'essaye de l'ignore et j'
essaye faire la connexion bon ca marche pas et le message disparaisse et il apparaisse le formulaire de l'inscription vide

bon je vous montre aussi le fichier membre .php
membre.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>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
<?php
session_start();
if (!isset($_SESSION['login'])) {
header ('Location: index.php');
exit();
}
?>
<html>
<head>
<title>Espace membre</title>
</head>
<body>
Bienvenue <?php echo htmlentities(trim($_SESSION['login'])); ?> !<br />
<a href="deconnexion.php">Déconnexion</a>
</body>
</html>

j'attends votre aide et

merci d'avance pour votre aide
A voir également:

12 réponses

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
23 mars 2010 à 18:26
une correction pour index.php

<?php
if (isset($_POST['connexion']))
{ //il te manquait cette {
	$login = $_POST['log1'];
	$password = $_POST['pass1'];

	if (!empty ($login) || !empty($password))
	{
		$hostname_connexion = "localhost";
		$database_connexion = "didact";
		$username_connexion = "root";
		$password_connexion = "";
		//global $connexion;  // non c'est inutile
		//ensuite pourquoi utiliset mysql_pconnect  ? mysql_connect suffit
		$connexion = mysql_pconnect($hostname_connexion, $username_connexion, $password_connexion) or trigger_error(mysql_error(),E_USER_ERROR);
		mysql_select_db($database_connexion, $connexion);
		// on teste si une entrée de la base contient ce couple login / pass
		$sql = 'SELECT count(*) FROM etudiant WHERE login_etud="'.mysql_escape_string($login).'" AND password="'.mysql_escape_string(md5($password)).'"';
		$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
		$data = mysql_fetch_array($req);
		mysql_free_result($req);
		mysql_close($connexion);

		// si on obtient une réponse, alors l'etudiant est un membre
		if ($data[0] == 1) {
			session_start();
			$_SESSION['login'] = $_POST['log1'];
			header('Location: membre.php');
			exit();
		}
		// si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son login,soit dans son mot de passe

		elseif ($data[0] == 0) {
			$erreur = 'Compte non reconnu.';
		}
		// sinon, alors la, il y a un gros problème :)
		else {
			$erreur = 'Probème dans la base de données : plusieurs membres ont les mêmes
			identifiants de connexion.';
		}
	}
	else {
		$erreur = 'Au moins un des champs est vide.';
	}
}//il te manquait cette }
  //et tu en fait quoi de $erreur ?
?>
<html>
<head>
<title>Accueil</title>
</head>
<body>
Connexion à l'espace membre :<br />
<form action="index.php" method="post">
<p>Login :<br/> <input type="text" name="log1" /><p>
<p>Mot de passe : <br/><input type="password" name= "pass1" /><p>
<?php
if(isset($erreur) && $erreur!="") {echo '<p><font color="red">'.$erreur.'</font></p>';}
?>
<input type="submit" name="connexion" value="Connexion">
</form>
<a href="inscription.php">Vous inscrire</a>

</body>
</html> 
1
SamuHell Messages postés 67 Date d'inscription lundi 27 octobre 2008 Statut Membre Dernière intervention 23 mai 2010 11
23 mars 2010 à 18:39
Effectivement, bien joué à Alain !
Mais dans ton script d'inscription, tu ne crypte pas le mot de passe alors que tu le fais dans le script d'identification.

$query = "INSERT INTO etudiant(ID_etu,password,nom,prenom_etu,login_etud,email_etu) VALUES ('','$login','$password','$nom','$prenom','$email')";

à transformer donc en :

$query = "INSERT INTO etudiant(ID_etu,password,nom,prenom_etu,login_etud,email_etu) VALUES ('','$login','". md5($password)."','$nom','$prenom','$email')";
1
turboooo Messages postés 50 Date d'inscription jeudi 10 avril 2008 Statut Membre Dernière intervention 8 octobre 2012
23 mars 2010 à 19:24
bon les amis j'ai fais ce que Alain m'a dit
et aussi ce que SamuHELL aussi mais apres la correction de requête bon il me dit une errerur parse : Parse error: parse error, expecting '','' or '';''
svp les amis vous faché pas car vraiment je connais pas bien le php et j'ai commencer a utiliser l'autre semain je l'ai etudier tout seul c'est pour ca je sen que mes faute sont bete mais je connais pas comment faire
merci
0
aloison Messages postés 22 Date d'inscription lundi 22 février 2010 Statut Membre Dernière intervention 23 mars 2010 1
Modifié par aloison le 23/03/2010 à 18:10
Salut,

Sans rentrer dans le code et en regardant rapidement, je pense qu'il manque au moins l'accolade ouvrante { sur ton 1er if du fichier index.php :
if (isset($_POST['connexion'])) {

Essayes de la rajouter, tu n'auras plus cette erreur là normalement.
0
turboooo Messages postés 50 Date d'inscription jeudi 10 avril 2008 Statut Membre Dernière intervention 8 octobre 2012
23 mars 2010 à 18:23
merci mon ami ca a marché y'a plus le message mais le pb de connexion marche pas
quand j'essaye fair la connexion ca marche pas est ce que tu peut m'aidé a trouvé le pb
je repete quand j'essaye de faire connexion et je clique sur le couton connexion rien ne se passe a part que les formulaire devient vide merci autre fois
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
23 mars 2010 à 19:33
essayes comme ça:

$query = "INSERT INTO etudiant(ID_etu,password,nom,prenom_etu,login_etud,email_etu) VALUES ('','". md5($password)."','".$nom."','".$prenom."','".$login."','".$email."')";


et attention il faut que les champs entre les parentheses etudiant(...) et VALUES (....) soient dans le même ordre !
0
turboooo Messages postés 50 Date d'inscription jeudi 10 avril 2008 Statut Membre Dernière intervention 8 octobre 2012
23 mars 2010 à 19:58
meme probleme Alain meme message d'erreur
bon moi au debut ca a marche mais comme vous avez dit j'ai oublier le cryptage de mot de passe ds la requete de l'insertion je sais pas quand j'ai ajouter comme vous avez dit au debut ca n'a pas marche j'ai essaye différente manière de cote
0

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

Posez votre question
aloison Messages postés 22 Date d'inscription lundi 22 février 2010 Statut Membre Dernière intervention 23 mars 2010 1
Modifié par aloison le 23/03/2010 à 20:35
A priori la solution de Alain_42 ou de SamuHell devrait fonctionner.

Est-tu sûr que ton erreur : Parse error: parse error, expecting '','' or '';'' vient de la ligne de la requête INSERT ??
Cette erreur peut venir de "n'importe quelle ligne", il suffit que tu ai oublié un ; ou une ( ) ou une { } ou une ' ou un " ou autre... quelque-part et tu auras cette erreur là donc vérifie bien tout ton code!! Surtout les parties où tu as modifié le code!
Fais un 'couper' des lignes où tu penses que l'erreur se trouve (afin de la retirer du code), sauvegarde et regarde si tu as toujours l'erreur! Si tu as toujours l'erreur, c'est que l'erreur n'est pas dans la partie que tu as retirée, si tu n'as plus l'erreur (tu en auras peut-être une autre car tu as retiré du code! ^^), tu sauras que l'erreur est bien dans la partie que tu pensais! :D
Ensuite reste plus qu'à la passer au peigne fin! ^^
0
turboooo Messages postés 50 Date d'inscription jeudi 10 avril 2008 Statut Membre Dernière intervention 8 octobre 2012
23 mars 2010 à 21:12
bon merci les amis j'ai trouvé l'erreur j'ai corrigé la requete et bon on a évolué maintenant
je vais expliquer quand j'èssaye la connexion cette fois il m'affiche le message
Compte non reconnu.
pourtant je susi sur que le login et le mdp sont ds la base
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
23 mars 2010 à 21:34
Compte non reconnu.
pourtant je susi sur que le login et le mdp sont ds la base


oui mais le mdp n'est peut être pas crypté comme avant tu faisait ton INSERT san scrypter le mdp
0
turboooo Messages postés 50 Date d'inscription jeudi 10 avril 2008 Statut Membre Dernière intervention 8 octobre 2012
23 mars 2010 à 21:38
ah ok Alain donc je dois me debarasser de cryptage car franchement je sais pas comment faire pour que ca marche je vais pas inserer le mdp crypter
0
turboooo Messages postés 50 Date d'inscription jeudi 10 avril 2008 Statut Membre Dernière intervention 8 octobre 2012
23 mars 2010 à 21:52
j'ai supprimer le cryptage
je clic sur connexion et la il me vient trois erreur les voila
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at index.php on line 28

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at c:\program files (x86)\easyphp1-8\www\didacticiel\fat\yes\index.php:17) in index.php on line 28

Warning: Cannot modify header information - headers already sent by (output started at c:\program files (x86)\easyphp1-8\www\didacticiel\fat\yes\index.php:17) in index.php on line 30
bon voila les ligne de 27 jusqua 32
if ($data[0] == 1) {
session_start();
$_SESSION['login'] = $_POST['log1'];
header('Location: membre.php');
exit();
}
merci une autre fois
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
23 mars 2010 à 22:35
Si tu arrives à cette ligne c'est que tu as bien trouvé un login et m d p correspondant donc il y a déja un mieux

verifies que tu n'as pas de ligne vide avant <?php tout au début de ton script

si tu as notepad++ comme editeur verifies que le format est bien en UNIX

menu Format "convertir en UNIX" doit être grisé
0
turboooo Messages postés 50 Date d'inscription jeudi 10 avril 2008 Statut Membre Dernière intervention 8 octobre 2012
23 mars 2010 à 22:43
non alain j'ai pas des ligne vide dans le code et j'utilse dreamweaver et easyphp 1.8
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
23 mars 2010 à 23:00
alors regarde dans les parametres ou preferences de dream si tu n'as pas un truc pour codifier en format UNIX (ca joue sur les caracteres de fin de ligne)
0
turboooo Messages postés 50 Date d'inscription jeudi 10 avril 2008 Statut Membre Dernière intervention 8 octobre 2012
23 mars 2010 à 23:20
non j'ai rien trouvé est ce que a une grande influance sur le code ?
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
23 mars 2010 à 23:26
c a dire to pb c'est qu'il y a un caratere avant la ligne28 qui est envoyé au navigateur et en regardant ton code on ne voit rien, et qd il y a comme ça des trucs inexpliqués cela vient souvent d'un problème de codage

essayes de télécharger Notepad++ et tu ouvrira ton code dedans
0
aloison Messages postés 22 Date d'inscription lundi 22 février 2010 Statut Membre Dernière intervention 23 mars 2010 1
23 mars 2010 à 23:34
Peux-tu mettre le code de la ligne 1 à 32 plutôt car a priori le problème vient de la ligne 17?
Comme la dit Alain_42 : si un caractère est envoyé au navigateur et qu'ensuite tu essayes de modifier le header, c'est trop tard tu ne peux plus le modifier... (enfin d'après ce que j'ai compris! ^^).
Donc soit, à la ligne 17, il y a un echo ou autre, soit le problème est celui auquel pense Alain_42 avec le format.

Ps: Tu modifies le header lorsque tu utilises :
-> $_SESSION['']
-> header('');
0
turboooo Messages postés 50 Date d'inscription jeudi 10 avril 2008 Statut Membre Dernière intervention 8 octobre 2012
23 mars 2010 à 23:51
bon aloison j'ai supprimé les echo ds le code deja moi je mets des echo pour savoir ou est la faute et ca a avancé maintenant il a passe au fichier membre et il ya un pb le voila
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at membre.php:7) in \membre.php on line 8


sacher bien qu il m'affiche bien venu et deconexion donc ca a marche presque je vais vous donner le script de membre .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>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
<?php
session_start();
if (!isset($_SESSION['login'])) {
header ('Location: index.php');
exit();
}
?>
<html>
<head>
<title>Espace membre</title>
</head>
<body>
Bienvenue <?php echo htmlentities(trim($_SESSION['login'])); ?> !<br />
<a href="deconnexion.php">Déconnexion</a>
</body>
</html>

et bien le ligne 8 c'est session_start()
0
turboooo Messages postés 50 Date d'inscription jeudi 10 avril 2008 Statut Membre Dernière intervention 8 octobre 2012
23 mars 2010 à 23:55
bon les amis quand je clique sur déconnexion en ignorant le worning il m'affiche aussi des worning

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at c:\program files (x86)\easyphp1-8\www\didacticiel\fat\yes\deconnexion.php:9) in c:\program files (x86)\easyphp1-8\www\didacticiel\fat\yes\deconnexion.php on line 10

Warning: Cannot modify header information - headers already sent by (output started at c:\program files (x86)\easyphp1-8\www\didacticiel\fat\yes\deconnexion.php:9) in c:\program files (x86)\easyphp1-8\www\didacticiel\fat\yes\deconnexion.php on line 13


voici le code deconexion.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>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>
<?php
session_start();
session_unset();
session_destroy();
header('Location: index.php');
exit();
?>
</body>
</html>
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
23 mars 2010 à 23:39
ou essayes de modifier la ligne:

$connexion = mysql_pconnect($hostname_connexion, $username_connexion, $password_connexion) or trigger_error(mysql_error(),E_USER_ERROR);


par

$connexion = mysql_connect($hostname_connexion, $username_connexion, $password_connexion) or die ("Erreur connexion :".mysql_error());
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
23 mars 2010 à 23:54
Ha ben oui !

dans ta page menbre il faut mettre <?php session_start() tout au début de ta page avant tout code html ou echo
0
turboooo Messages postés 50 Date d'inscription jeudi 10 avril 2008 Statut Membre Dernière intervention 8 octobre 2012
24 mars 2010 à 00:00
je vous remercie infiniment les amis vous m'avez bcp aidé je suis reconnaissante j'ai bien appris
au revoir
0