Gerer les comptes des utilisateur

Résolu/Fermé
dodi - Modifié par dodi le 7/09/2016 à 11:57
 dodi - 7 sept. 2016 à 11:55
Bonjour,
J'ai une base de données dont une table contenant l'id (user,admin,visitor) et le pseudo et le mot de passe

qui se renvoie par un formulaire (sign_in) vers la page conx.php:


<?php


mysql_connect("localhost","root","");
mysql_select_db("ma_base");
$pseudo=$_POST['pseudo'];
$password=$_POST['password'];

$sql = "SELECT id FROM utilisateur WHERE pseudo='$pseudo'";
$req = mysql_query($sql) or die(mysql_error());
$data = mysql_fetch_assoc($req);

if ($data['id']=='admin' /*&& $data['password']=='$password'*/) {
header('Location:home3.html');}

else if ($data['id']=='user' /*&& $data['password']=='$password'*/) {
header('Location:home.html');}

else if ($data['id']=='visitor'/* && $data['password']=='$password'*/) {
header('Location:home2.html');}


?>


et je veux que le touts les infos d'utilisateurs seront vérifiées (le mot de passe et le pseudo avant qu'il soit diriger vers une page selon son id )

et merci d'avance
A voir également:

2 réponses

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
Modifié par Pitet le 7/09/2016 à 11:52
Pas mal de confusion dans le dernier commentaire :
- d'où sort la variable et le paramètre t_num ?
- idem pour la variable $resultat
- tu utilises des paramètres nommés dans ta requête (:t_num) or ceci n'est possible qu'avec les requêtes préparées via l'api PDO

Bref, en reprenant le code de ton premier message nous pouvons faire quelque chose comme ceci :
<?php
mysql_connect("localhost","root","");
mysql_select_db("ma_base");
 
$sql = "SELECT id FROM utilisateur WHERE pseudo='" . mysql_real_escape_string($_POST['pseudo']) . "' AND password='" . mysql_real_escape_string($_POST['password']) . "'";
$req = mysql_query($sql) or die(mysql_error());
$data = mysql_fetch_assoc($req);

if (!$data) {
 $error = 'Mauvais pseudo ou mot de passe.';
} else {
 session_start();
 $_SESSION['id'] = $data['id'];
 
 $redirect = 'index.html';
 
 if ($data['id']=='admin') {
  $redirect = 'home3.html';
 } elseif ($data['id']=='technician') {
  $redirect = 'home.html';
 } elseif ($data['id']=='sis_user') {
  $redirect = 'home2.html';
 }
 
 header('Location: ' . $redirect);
 exit();
}


Ne sachant pas si ce traitement de formulaire est effectué sur la même page que le formulaire ou sur une autre page, le message d'erreur est simplement stocké dans une variable $error.
Si le traitement est effectué sur la même page que le formulaire, on peut simplement afficher cette variable sur la page.
Si le traitement est effectué sur une autre page, on pourrait faire une redirection pour revenir sur la page du formulaire en transmettant le message d'erreur via un paramètre GET ou via la session php.
1
J'ai testé pseudo par t_num dans un autre formulaire ! et je l'ai pas modifié en collant le code ici dans le dernier commentaire
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
7 sept. 2016 à 11:25
Salut,

Et quelle est la question ? Où est-ce que tu bloques ?

Quelques remarques au passage :
- l'api Mysql est obsolète et supprimée des dernières versions de php, il faudrait passer à Mysqli ou PDO. Plus d'info : https://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete
- tu as une injection sql possible dans ta requête, il faudrait échapper les caractères sql réservées sur les variables insérées dans ta requête
- en général, une redirection avec l'instruction header() est suivi de l'instruction exit() afin de ne pas exécuter la suite du script

Bonne journée,
0
Le code vérifie uniquement les id des pseudo mais il ne vérifie pas si la connexion est valide avant de les rediriger !
pouvez vous m'aider s'il vous plait ?
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
7 sept. 2016 à 11:32
Que veux tu dire par "vérifier si la connexion est valide" ?
Comment définis tu qu'une connexion est valide ou invalide ?

Est-ce normal que la vérification du mot de passe soit commentée ?
0
Je veux dire ,vérifier si le password et pseudo sont identiques comme

$req ="SELECT id FROM utilisateur WHEREpseudo = :pseudo AND password = :password";
$data = mysql_fetch_assoc($req);

if (!$resultat)
{
echo 'Mauvais identifiant ou mot de passe !';
}
else
{
session_start();
$_SESSION['id'] = $resultat['id'];
$_SESSION['t_num'] = $t_num;
echo 'Vous êtes connecté !';
}

mais je ne sais pas comment effectuer des sessions et au meme temps rediriger les utilisateurs vers des pages selon leurs Id
0