Authentification en php

Fermé
biduleeva Messages postés 9 Date d'inscription jeudi 12 juin 2008 Statut Membre Dernière intervention 17 juin 2008 - 12 juin 2008 à 15:47
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 21 juin 2008 à 10:36
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>

6 réponses

biduleeva Messages postés 9 Date d'inscription jeudi 12 juin 2008 Statut Membre Dernière intervention 17 juin 2008
12 juin 2008 à 23:42
S'il vous plait une reponse y a quelqu'un ooooh
0
Dr Zoidberg Messages postés 529 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 12 juin 2015 100
13 juin 2008 à 08:15
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 Date d'inscription jeudi 12 juin 2008 Statut Membre Dernière intervention 17 juin 2008
15 juin 2008 à 02:48
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 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
15 juin 2008 à 10:16
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 Date d'inscription jeudi 12 juin 2008 Statut Membre Dernière intervention 17 juin 2008 > Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017
15 juin 2008 à 14:56
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 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894 > biduleeva Messages postés 9 Date d'inscription jeudi 12 juin 2008 Statut Membre Dernière intervention 17 juin 2008
15 juin 2008 à 23:24
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 Date d'inscription jeudi 12 juin 2008 Statut Membre Dernière intervention 17 juin 2008 > Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017
16 juin 2008 à 00:04
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 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894 > biduleeva Messages postés 9 Date d'inscription jeudi 12 juin 2008 Statut Membre Dernière intervention 17 juin 2008
16 juin 2008 à 11:35
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
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 Date d'inscription jeudi 12 juin 2008 Statut Membre Dernière intervention 17 juin 2008
17 juin 2008 à 22:33
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 529 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 12 juin 2015 100
18 juin 2008 à 08:18
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 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
20 juin 2008 à 18:18
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 529 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 12 juin 2015 100
20 juin 2008 à 21:03
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 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
21 juin 2008 à 10:36
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