Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/07/2011, 19h29   #1
Futur Membre du Club
 
Mamadou Saliou DIALLO
Administrateur systèmes et réseaux
Inscription : juillet 2011
Messages : 71
Détails du profil
Informations personnelles :
Nom : Mamadou Saliou DIALLO
Localisation : Guinée

Informations professionnelles :
Activité : Administrateur systèmes et réseaux
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juillet 2011
Messages : 71
Points : 17
Points : 17
Par défaut authentification et redirection

bonjour tout le monde!
bon je vais allé direct au sujet! en faite je travail sur un projet de site web j'ai conçu une page de connexion pour les utilisateurs y compris l'administrateur inscrits (enregistrer dans la base de données) pour cela j'ai créer une page profil (profil.html) pour que dès qu'un utilisateur s'identifie avec son pseudo et le mot de passe qu'il soit directement rediriger vers la page de profile mais je veux faire l'exception pour l'administrateur pour que lui il soit redirigé vers la page administrateur (admin.html) et c'est ce que je n'arrive pas à faire. Et j'aimerais que vous m'aidiez! voici mon code
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<?php
 
// Initialisation de la session
include('connexion.html');
$_SESSION['erreur'] ='';
$_SESSION['connexion'] = '';
$host=""; // Host name
$username=""; // Mysql username
$password=""; // Mysql password
$db_name="nomdemabase"; // Database name
$tbl_name="visiteurs"; // Table name
$_SESSION['pseudo']=$_POST['pseudo'];
$_SESSION['motdep']=$_POST['motdep'];
// On vérifie que le login et le mot de passe ont été précisés
if(!empty($_POST['pseudo']) && !empty($_POST['motdep']))
{
session_start();
 
// Connexion à la base
$connexion=mysql_connect("localhost", "root", "" )or die("cannot connect" );
mysql_select_db("nomdemabase" )or die("cannot select DB" );
mysql_query("SET NAMES 'utf8'" );
 
// Requete à la base (verification login/mdp)
$SQL = 'SELECT * FROM visiteurs WHERE pseudo= "'.mysql_real_escape_string($_POST['pseudo']).'" AND mot_de_passe = "'. mysql_real_escape_string($_POST['motdep']).'"';
$request = mysql_query($SQL, $connexion) or die(mysql_error());
$data = mysql_fetch_assoc($request);
if (empty($data) || !sizeof($data)) // Login / Mot de passe invalide
{
$_SESSION['erreur'] = 'Login ou mot de passe non valide';
header("Location:erreurconnexion.html" );
}
else
{
$data = $data[0];
 
// Récupération des informations de l'utilisateur dans les variables de session
$_SESSION['connexion'] = 1;
 
// Redirection de l'utilisateur vers la page de profil
header("Location: profil.html" );
}
}
else // Si au moins un champs est vide
{
// Définition d'une erreur + Redirection
$_SESSION['erreur'] = 'Tous les champs doivent être renseignés';
header("Location: erreurconnexion.html" );
}
?>
 
 
<!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=utf-8" />
<title>Document sans titre</title>
</head>
 
<body>
</body>
</html>
Et vous pouvez me poser des questions si nécessaire
onesat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2011, 20h22   #2
Membre confirmé
 
Avatar de provirus
 
Homme Simon Levesque
Consultant informatique
Inscription : février 2009
Messages : 97
Détails du profil
Informations personnelles :
Nom : Homme Simon Levesque
Âge : 26
Localisation : Canada

Informations professionnelles :
Activité : Consultant informatique
Secteur : Conseil

Informations forums :
Inscription : février 2009
Messages : 97
Points : 279
Points : 279
Bonjour,

Il faudrait que dans la table visiteurs, vous ayez un champ boolean "admin" qui serait à vrai si c'est le cas.

Ensuite, à l'endroit où il y a
Code :
header("Location: profil.html" );
simplement ajouter une condition comme
Code :
1
2
3
4
5
6
 
if ($data['admin']) {
  header("Location: admin.html" );
} else {
  header("Location: profil.html" );
}
Quelques détails:

Étant donné que vous utilisez "mysql_fetch_assoc", vous devez accéder aux données comme j'ai montré et non avec Vous devriez aussi utiliser la fonction PASSWORD de MySQL pour obtenir le hash du mot de passe plutôt que d'écrire le mot de passe en clair dans la base de données
__________________
Blog - Tutoriels vidéos - Espace DVP
provirus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 18h38   #3
Futur Membre du Club
 
Mamadou Saliou DIALLO
Administrateur systèmes et réseaux
Inscription : juillet 2011
Messages : 71
Détails du profil
Informations personnelles :
Nom : Mamadou Saliou DIALLO
Localisation : Guinée

Informations professionnelles :
Activité : Administrateur systèmes et réseaux
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juillet 2011
Messages : 71
Points : 17
Points : 17
Par défaut authentification et redirection

j'ai accédé aux données comme vous me l'avez suggerer et c'était OK! Merci d'avance et j'ai constaté aussi qu'en mettant la
condition sur pseudo sa marche comme ceci:
Code :
1
2
3
4
5
6
elseif($_POST['pseudo'] == 'admin'){ 
	header('Location: adminpage.html'); 	
	} 
	else{
	header('Location: profil.html');
}
elseif($_POST['pseudo'] == 'admin'){
header('Location: adminpage.html');
}
else{
header('Location: profil.html');
}
Mais j'ai constaté un autre problème au niveau de la vérification du pseudo et du mot de passe c'est à
dire si l'utilisateur saisi seulement le Pseudo et sans remplir le champ mot de passe ou bien sil rempli le champ mot de
passe sans remplir le pseudo aucun message d'erreur ne s'affiche et il fait une redirection en affichant la page de verification
de mon formulaire celle utilisée avec action='verifconnexion.php'
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?php
$_SESSION['erreur'] ='';
$_SESSION['connexion'] = '';
$host=""; // Host name 
$username=""; // Mysql username 
$password=""; // Mysql password 
$db_name="nomdemabase"; // Database name 
$tbl_name="visiteurs"; // Table name 
$_SESSION['pseudo']=$_POST['pseudo'];
$_SESSION['motdep']=$_POST['motdep'];
// On vérifie que le login et le mot de passe ont été précisés 
if(!empty($_POST['pseudo']) && !empty($_POST['motdep']))
{	
session_start();
 
// Connexion à la base 
$connexion=mysql_connect("localhost", "root", "" )or die("cannot connect" );
mysql_select_db("nomdemabase" )or die("cannot select DB" );
mysql_query("SET NAMES 'utf8'" );
 
// Requete à la base (verification login/mdp) 
$SQL = 'SELECT * FROM visiteurs WHERE pseudo= "'.mysql_real_escape_string($_POST['pseudo']).'" AND mot_de_passe = "'. mysql_real_escape_string($_POST['motdep']).'"';
$request = mysql_query($SQL, $connexion) or die(mysql_error());
$data = mysql_fetch_assoc($request);
if (empty($data) || !sizeof($data)) // Login / Mot de passe invalide 
{
$_SESSION['erreur'] = 'Login ou mot de passe non valide';
 header("Location:erreurconnexion.html" );
}
elseif($_POST['pseudo'] == 'admin'){ 
	header('Location: adminpage.html'); 	
	} 
	else{
	header('Location: profil.html');
}
 
}
 
?>
 
 
<!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=utf-8" />
<title>Document sans titre</title>
</head>
 
<body>
</body>
</html>
onesat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 18h58   #4
Membre confirmé
 
Avatar de provirus
 
Homme Simon Levesque
Consultant informatique
Inscription : février 2009
Messages : 97
Détails du profil
Informations personnelles :
Nom : Homme Simon Levesque
Âge : 26
Localisation : Canada

Informations professionnelles :
Activité : Consultant informatique
Secteur : Conseil

Informations forums :
Inscription : février 2009
Messages : 97
Points : 279
Points : 279
De ce que je vois, si l'utilisateur n'est pas valide, un message d'erreur est enregistré dans la session et il y a une redirection à erreurconnexion.html.

Code :
1
2
3
 
 $_SESSION['erreur'] = 'Login ou mot de passe non valide';
 header("Location:erreurconnexion.html" );
Première chose, le session_start() devrait être au début du fichier et non après les
Code :
1
2
$_SESSION['erreur'] ='';
$_SESSION['connexion'] = '';
Deuxième chose, la redirection devrait plutôt aller à un script php si tu veux pouvoir afficher le message
Code :
1
2
3
 
 $_SESSION['erreur'] = 'Login ou mot de passe non valide';
 header("Location: erreurconnexion.php" );
Dernièrement, dans le fichier erreurconnexion.php, il faudrait mettre le session_start() et un
Code :
echo $_SESSION['erreur']
pour afficher le message.

HTH
__________________
Blog - Tutoriels vidéos - Espace DVP
provirus est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h40.


 
 
 
 
Partenaires

Hébergement Web