Probleme avec mon code php

Résolu
turboooo Messages postés 50 Date d'inscription   Statut Membre Dernière intervention   -  
turboooo Messages postés 50 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   894
 
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   Statut Membre Dernière intervention   11
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   1
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   894
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   1
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   894
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   894
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   894
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   894
 
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   Statut Membre Dernière intervention   1
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   894
 
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   Statut Membre Dernière intervention   894
 
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   Statut Membre Dernière intervention  
 
je vous remercie infiniment les amis vous m'avez bcp aidé je suis reconnaissante j'ai bien appris
au revoir
0