authentification et redirection

authentification et redirection - PHP - Programmation

Marsh Posté le 13-07-2011 à 20:38:51    

bonjour tout le monde! Bon je vais allé droit au but et être plus précis dans ce que je veux obtenir comme résultat  
j'ai une page de d'authentification (connexion.html) avec 2 champs à remplir le Pseudo et le mot de passe
Pour cela j'ai créer une autre page verifconnexion.php
qui contient les scripts php pour la vérification et la validation de l'authentification avec les requêtes sql  
 
Et je voudrais que si l'authentification d'un utilisateur est validée qu'il soit soit connecté et redirigé vers la page profil (profil.html) et si c'est l'administrateur qu'il soit redirigé vers la page d'administration (adminpage.html)
 
Et si l'authentification n'est pas validée soit par un champ mal renseigné ou vide ou encore non inscrit, je voudrais qu'un message d'erreur s'affiche du genre "le Pseudo ou le mot de passe est invalide veuillez remplir correctement tous les champs Et si vous ne disposer pas d'un compte veuillez cliquer sur ce lien pour vous inscrire"
voici le code que j'ai utilisé à l'entête de la page de connexion.html
 
<?php
session_start();
// On vérifie si une erreur a été envoyée
if(isset($_SESSION['erreur']))
{
$erreurAffichage = $_SESSION['erreur'];
}
else
$erreurAffichage = "";
{
$_SESSION['erreur'] = "";
}
?>

Et voici le code de la page verifconnexion.php
<?php
session_start();
$_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']))
{  
 
 
// 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($data['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>

Et merci d'avance


---------------
Mr onesat
Reply

Marsh Posté le 13-07-2011 à 20:38:51   

Reply

Marsh Posté le 15-07-2011 à 14:26:21    

Et la question est? Faut qu'on la devine?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 18-07-2011 à 23:06:36    

La question est la suivante je veux que quand un simple utilisateur se connecte qu'il soit rédirigé vers la page profil.html mais quand c'est l'administrateur qu'il soit redirigé vers la page admin.html?

Reply

Marsh Posté le 19-07-2011 à 09:40:24    

C'est ce que fait déjà ton code non? Que contient $data['admin'] ?


---------------
Google isn't making us stupider, it's simply making us realise that omniscience is actually slightly boring. (Douglas Copland)
Reply

Marsh Posté le 19-07-2011 à 10:29:14    

onesat a écrit :

La question est la suivante je veux que quand un simple utilisateur se connecte qu'il soit rédirigé vers la page profil.html mais quand c'est l'administrateur qu'il soit redirigé vers la page admin.html?


 
ben un simple if sur la variable qui contient le type de profil et un header("location: url" ) différent selon le profil, je vois pas où tu bloques :??:


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 19-07-2011 à 16:31:07    

Ben g lè toute fois essayé (if) avec la redirection qu'il faut mais ça exécute toujours la première condition qu'elle soit vraie ou fausse et c'est là le problème
if($data['admin']){  
  header('Location: adminpage.html');  
 }  
 else{
  header('Location: profil.php');
 }

Reply

Marsh Posté le 19-07-2011 à 16:42:19    

quelle valeur contient $data['admin']?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 19-07-2011 à 16:49:44    

C'est que $data['admin'] ne contient pas une valeur que PHP peut assimiler à du booléen :o


---------------
Google isn't making us stupider, it's simply making us realise that omniscience is actually slightly boring. (Douglas Copland)
Reply

Marsh Posté le 19-07-2011 à 17:34:36    

Alors comment devrais-je procédé?????????

Reply

Marsh Posté le 20-07-2011 à 08:52:59    

ben dis-nous ce que contient $data['admin'] et on te donnera le bon test à mette dans ton elseif :/


Message édité par rufo le 20-07-2011 à 08:53:07

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 20-07-2011 à 08:52:59   

Reply

Marsh Posté le 20-07-2011 à 13:10:48    

Tu fais un:
 

Code :
  1. SELECT DISTINCT admin FROM visiteurs


 
et tu connaîtras la liste des valeurs que tu peux exploiter. Tu devrais en avoir minimum 2.


---------------
Google isn't making us stupider, it's simply making us realise that omniscience is actually slightly boring. (Douglas Copland)
Reply

Marsh Posté le 20-07-2011 à 21:31:57    

en faite "admin" est un utilisateur enregistrer dans la base de données tout comme les autres utilisateurs mais g veut l'octroyer un certain privilège contrairement aux autres utilisateurs C'est à dire qu'il soit le seul à être rediriger vers la page adminpage.html

Reply

Marsh Posté le 20-07-2011 à 22:55:30    

L'expression $data['admin'] réfère à la colonne admin.


Message édité par furie gastrique le 20-07-2011 à 22:55:50

---------------
Google isn't making us stupider, it's simply making us realise that omniscience is actually slightly boring. (Douglas Copland)
Reply

Marsh Posté le 21-07-2011 à 19:08:53    

Non l'expression 4data['admin'] réfère à un enregistrement

Reply

Marsh Posté le 21-07-2011 à 20:13:40    

à la colonne admin de ton enregistrement [:aloy]


---------------
Google isn't making us stupider, it's simply making us realise that omniscience is actually slightly boring. (Douglas Copland)
Reply

Marsh Posté le 21-07-2011 à 21:49:14    

je ne sais plus comment expliquer ça maintenant!!!!!!!!!!!!!!
admin est un utilisateur enregistrer dans la base de données et je voudrais que lui seul soit redirigé vers la page adminpage.html après son authentification

Reply

Marsh Posté le 21-07-2011 à 22:10:16    

Bon sang, mais tu vas nous dire la donnée que contient $data['admin'], oui :??: C'est une chaîne de caractères, un entier, un booléen???
 
Quand tu fais un var_dump($data['admin']), ça affiche quoi?
 
On essaye de t'aider, mais tu réponds pas à une question aussi basique :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 21-07-2011 à 22:17:10    

la données c'est varchar

Reply

Marsh Posté le 21-07-2011 à 22:32:46    

Bah c'est "admin" que la donnée contient, mais son test est erroné parce qu'il n'a pas compris comment ça fonctionne.
 
Je pense que tu devrais apprendre la programmation avant de te précipiter pour écrire un script.


---------------
Google isn't making us stupider, it's simply making us realise that omniscience is actually slightly boring. (Douglas Copland)
Reply

Marsh Posté le 21-07-2011 à 22:36:26    

Ah bon!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Reply

Marsh Posté le 22-07-2011 à 09:26:15    

Donc le bon test est :

Code :
  1. if($data['admin'] == "admin" ){  
  2.  header('Location: adminpage.html');  
  3. }  
  4. else{
  5.  header('Location: profil.php');
  6. }


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 22-07-2011 à 09:28:29    

Non parce qu'il n'y a pas de colonne "admin" [:joce]


---------------
Google isn't making us stupider, it's simply making us realise that omniscience is actually slightly boring. (Douglas Copland)
Reply

Marsh Posté le 22-07-2011 à 09:33:59    

Vue que sa requête est SELECT *, comment peux-tu le savoir :??:


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 22-07-2011 à 09:56:48    

Il veut tester que le pseudo soit égal à "admin". Si avec cette phrase il ne trouve pas la réponse, je ne sais plus quoi faire à part lui taper le code tout cru :o


---------------
Google isn't making us stupider, it's simply making us realise that omniscience is actually slightly boring. (Douglas Copland)
Reply

Marsh Posté le 25-07-2011 à 22:17:44    

salut les gas je me suis démerder et j'ai trouver la solution et voici:
j'ai renommer ma page de connexion.html par connexion.php
et j'ai maintenu ce code à l'entête de la page

Code :
  1. <?php
  2. session_start();
  3. // On vérifie si une erreur a été envoyée
  4. if(isset($_SESSION['erreur']))
  5. {
  6. $erreurAffichage = $_SESSION['erreur'];
  7. }
  8. else
  9. $erreurAffichage = "";
  10. {
  11. $_SESSION['erreur'] = "";
  12. }
  13. ?>


Et voici le code qui a beaucoup fatiguer Le Grand Programmeur furie gastrique!

Code :
  1. <?php
  2. session_start();
  3. $_SESSION['erreur'] ='';
  4. $_SESSION['connexion'] = '';
  5. $_SESSION['pseudo']=$_POST["pseudo"];
  6. $_SESSION['motdep']=$_POST["motdep"];
  7. // On vérifie que le login et le mot de passe ont été précisés  
  8. if(!empty($_POST['pseudo']) && !empty($_POST['motdep']))
  9. {
  10. // Connexion à la base  
  11. $connexion=mysql_connect("localhost", "root", "" )or die("cannot connect" );
  12. mysql_select_db("basedugenie" )or die("cannot select DB" );
  13. mysql_query("SET NAMES 'utf8'" );
  14. // Requete à la base (verification login/mdp)  
  15. $SQL = 'SELECT * FROM visiteurs WHERE pseudo= "'.mysql_real_escape_string($_POST['pseudo']).'" AND mot_de_passe = "'. mysql_real_escape_string(      $_POST['motdep']).'"';
  16.  $request = mysql_query($SQL, $connexion) or die(mysql_error());
  17. $data = mysql_fetch_assoc($request);
  18. if (empty($data) || !sizeof($data)) // Login / Mot de passe invalide  
  19. {
  20.  $_SESSION['erreur'] = 'Login ou mot de passe non valide';
  21.  header("Location:connexion.php" );
  22. }
  23. if($data['pseudo']=='admin'){
  24.  header('location:adminpage.php');
  25.  }
  26. elseif($data['pseudo']){
  27.  header('Location: profil.php');
  28. }
  29. else{
  30.  header('Location:connexion.php');
  31. }
  32. // Récupération des informations de l'utilisateur dans les variables de session   
  33. // Redirection de l'utilisateur  
  34. }
  35. else // Si au moins un champs est vide   
  36. {
  37. // Définition d'une erreur + Redirection  
  38. $_SESSION['erreur'] = 'Tous les champs doivent être renseignés';
  39. header("Location:connexion.php" );
  40. }
  41. //}
  42. ?>
  43. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  44. <html xmlns="http://www.w3.org/1999/xhtml">
  45. <head>
  46. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  47. <title>Document sans titre</title>
  48. </head>
  49. <body>
  50. </body>
  51. </html>


Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed