Authentification en php
biduleeva
Messages postés
9
Statut
Membre
-
Alain_42 Messages postés 5413 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>
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:
- Authentification en php
- Double authentification google - Guide
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Code a 6 chiffres application d'authentification instagram - Forum Instagram
- Php alert ✓ - Forum PHP
6 réponses
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.
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.
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
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
Bonjour,
sépares ton script de verif login du reste
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
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
J'avais pas vu mais tu as une erreur ce n'est pas mysql_numrows()
mais mysql_num_rows()
et ta page ou sont saisis les mot de pass et identifiant se nomme bien index.php ?
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 ?
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.
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.
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");
}
?>
<?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");
}
?>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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.
Essai de le mettre en commentaire.
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.
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.