Authentification en php

biduleeva Messages postés 9 Statut Membre -  
Alain_42 Messages postés 5413 Statut Membre -
Bonjour,

Voila j ai un probleme avec les pages que je dois afficher apres l'authentification
Je voudrais que l'utilisateur rentre dans son espace personnel si son login et son mot de passe est correcte sinon il retourne à la page d'accueil
Sauf que mon code ne marche pas
voila le code

<html>
<head><title>Espace Adherent</title></head>
<body>
<?php
//on demarre la session
session_start();
// on se connecte MySQL
require_once 'connexion.php';



// on envoie la requete à la base pour verifier qu'il existe un couple email mot de passe dans la table
$Resultat=mysql_query("SELECT * FROM table_utilisateur WHERE email LIKE '".$_POST['email'] ."' AND motdepasse LIKE '".$_POST['pwd']."'");


// on verifie si le couple existe bien dans la base
if (mysql_numrows($Resultat) == 1)
{
$data = mysql_fetch_assoc($Resultat);
// $msg = "Login et mot de passe OK";
//$msg .= "authentification reussie";
//echo "$msg" ;
$_SESSION['numutilisateur'] = $data['numutilisateur'];
$_SESSION['email'] = $data['email'];
$_SESSION['titre'] = $data['titre'];
$_SESSION['nom'] = $data['nom'];
$_SESSION['prenom'] = $data['prenom'];
}
//sinon on envoie ce message
else
{
header("Location: index.php");
exit();
}



//echo $_POST['email'];
//echo $_POST['pwd'];

// on ferme la connexion mysql
mysql_close();
?>
<p style='text-align:right'>
<b>
<?php
echo $_SESSION['email'];
?>
</b>
<a href="deconnexion.php">Deconnexion</a>
</p>
<center>
<h1>Bienvenue sur L'Espace des utilisateurs abonnés</h1>
</center>
<hr>
<a href ="consul.php">Consulter Énoncés</a><br>
<a href ="enonce.html">Ajouter Enonce</a><br>
<a href ="message.html">Envoyer Message </a><br><hr>
<a href ="index.php">RETOUR PAGE D'ACCUEIL</a>

</body>
</html>
A voir également:

6 réponses

biduleeva Messages postés 9 Statut Membre
 
S'il vous plait une reponse y a quelqu'un ooooh
0
Dr Zoidberg Messages postés 547 Statut Membre 100
 
Salut,

Qu'est ce qui ne marche pas ? Message d'erreurs ?

Une petite remarque qui ne résoudra pas ton problème: pourquoi utilises-tu des LIKE et pas des = dans ta requête SQL ? Tu t'exposes ainsi à d'avantage de risques d'injection SQL, et de plus c'est moins performant.
0
biduleeva Messages postés 9 Statut Membre
 
en faites le probleme c'est que je veux qu'il m'affiche la page d'accueil index.php
si l'authentification n 'a pas marché .
Plus clairement si l authentification marche il m affiche ce que je veux ie l'espace abonné et si ça ne marche pas il m'affiche rien juste une page vide
0
Alain_42 Messages postés 5413 Statut Membre 894
 
Bonjour,

sépares ton script de verif login du reste

<?php
// on se connecte MySQL
require_once 'connexion.php';
// on envoie la requete à la base pour verifier qu'il existe un couple email mot de passe dans la table
$Resultat=mysql_query("SELECT * FROM table_utilisateur WHERE email = '".$_POST['email'] ."' AND motdepasse = '".$_POST['pwd']."'");
mysql_close();
// on verifie si le couple existe bien dans la base
if (mysql_numrows($Resultat) == 1){
	//OK donc on demarre la session
	session_start();
	$data = mysql_fetch_assoc($Resultat);
	$_SESSION['numutilisateur'] = $data['numutilisateur'];
	$_SESSION['email'] = $data['email'];
	$_SESSION['titre'] = $data['titre'];
	$_SESSION['nom'] = $data['nom'];
	$_SESSION['prenom'] = $data['prenom'];
	header(("Location:page1_espace_adherent.php");
}else{
	//sinon on renvoie à la page index.php
	header("Location: index.php");
}
?>


si login / pass OK on va à la page d'acceuil de l'espace protégé, sinon on va à index.php

N'oublies pas le petit bout de code session_strat() et verif du cookie de sesssion au début de toutes les pages de l'espace protégé.

@lain
0
biduleeva Messages postés 9 Statut Membre > Alain_42 Messages postés 5413 Statut Membre
 
La j ai modifié comme vous m'avez dit sauf le seul probleme c'est que ça marche si le login et le mot de passe OK on va à la page d'accueil de l'espace protégé
Mais dans le cas contraire ça marche pas.
Je sais pas quoi faire
0
Alain_42 Messages postés 5413 Statut Membre 894 > biduleeva Messages postés 9 Statut Membre
 
J'avais pas vu mais tu as une erreur ce n'est pas mysql_numrows()

mais mysql_num_rows()

// on verifie si le couple existe bien dans la base
if (mysql_num_rows($Resultat) == 1){
	//OK donc on demarre la session
	session_start();
	$data = mysql_fetch_assoc($Resultat);
	$_SESSION['numutilisateur'] = $data['numutilisateur'];
	$_SESSION['email'] = $data['email'];
	$_SESSION['titre'] = $data['titre'];
	$_SESSION['nom'] = $data['nom'];
	$_SESSION['prenom'] = $data['prenom'];
	header(("Location:page1_espace_adherent.php");
}else{
	//sinon on renvoie à la page index.php
	header("Location:index.php");//ne mets pas d'espace
}


et ta page ou sont saisis les mot de pass et identifiant se nomme bien index.php ?
0
biduleeva Messages postés 9 Statut Membre > Alain_42 Messages postés 5413 Statut Membre
 
Je l ai rectifié mais ça ne change rien ça marche tjrs quand le login et le mot de passe est ok et pas dans le cas contraire j ai une page blanche
Sinon la page de saisie c est authentification.html mais je l ai rectifié sur le code
0
Alain_42 Messages postés 5413 Statut Membre 894 > biduleeva Messages postés 9 Statut Membre
 
tu as bien mis:

....
}else{
	//sinon on renvoie à la page index.php
//et essaye en mettant un echo pour voir si tu passses bien par la:
echo "pas de couple login pass trouve";
	header("Location:authentification.html");
}

0
rpayet37
 
Remarque, du fait que tu fasses un
if (mysql_numrows(...)===1)
{
OK..
}
else
{
PAS OK
}

ca veut dire que si jamais 2 enregistrements identiques sont trouvés dans la table (2 emails proches)
alors tu vas dans PAS OK!!!
1- Tu ne devrais pas faire un "like" dans ta requête SQL
2- Assures-toi aussi au passage que ton champ email est bien une clef primaire dans ta table (gain de temps)
et évite les doublons éventuels.
0
biduleeva Messages postés 9 Statut Membre
 
je vous remets le code

<?php
// on se connecte MySQL
require_once 'connexion.php';
// on envoie la requete à la base pour verifier qu'il existe un couple email mot de passe dans la table
$Resultat=mysql_query("SELECT * FROM table_utilisateur WHERE email = '".$_POST['email'] ."' AND motdepasse = '".$_POST['pwd']."'");
mysql_close();
// on verifie si le couple existe bien dans la base
if (mysql_num_rows($Resultat) > 1){
// echo 'hie';
//OK donc on demarre la session
session_start();
$data = mysql_fetch_assoc($Resultat);
$_SESSION['numutilisateur'] = $data['numutilisateur'];
$_SESSION['email'] = $data['email'];
$_SESSION['titre'] = $data['titre'];
$_SESSION['nom'] = $data['nom'];
$_SESSION['prenom'] = $data['prenom'];
header(("Location:page1_espace_adherent.php");
}else{
//sinon on renvoie à la page index.php
header("Location:retourauthentification.html");
}
?>
0

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

Posez votre question
Dr Zoidberg Messages postés 547 Statut Membre 100
 
J'ai peur que ton mysql_close arrive trop tôt et libère les résultats avant que tu ne les traites.
Essai de le mettre en commentaire.
0
Alain_42 Messages postés 5413 Statut Membre 894
 
Non à partir du moment ou a a fait mysql_query on peut faire mysql_close()

les extractions sont en mémoire
0
Dr Zoidberg Messages postés 547 Statut Membre 100
 
Exact ! (1 partout Alain :-) )

Par contre:
- Il y a deux parenthèses ouvrantes sur le 1er header.
- Normalement il y a un espace après les deux points de location ('Location: page.php'). Il me semble que certains navigateurs n'aiment pas trop s'il manque. Pour vérifier tu peux mettre un echo APRES le header.
0
Alain_42 Messages postés 5413 Statut Membre 894
 
Effectivement les deux parenthèses, si ce n'est pas une erreur de frappe sur le forum, doivent bloquer le script

Quand à l'espace après "Location: j'ai regardé sur mes scripts il existe bien

donc a essayer en modifiant ces deux choses.
0