Session
Fermé
taratatie
-
18 oct. 2013 à 14:00
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 - 18 oct. 2013 à 15:33
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 - 18 oct. 2013 à 15:33
A voir également:
- Session
- Estelle vient de verrouiller sa session d'ordinateur. que peut-on dire ? ✓ - Forum Windows 7
- Veuillez ouvrir une session avec les privilèges du gestionnaire ✓ - Forum Jeux vidéo
- Estelle vient de verrouiller sa session d’ordinateur. que peut-on dire ? ✓ - Forum Windows
- Teamviewer code de session expiré ✓ - Forum Windows XP
- Session qui se verrouille ✓ - Forum Matériel & Système
4 réponses
Utilisateur anonyme
18 oct. 2013 à 14:11
18 oct. 2013 à 14:11
Bonjour
Qu'est-ce qui ne fonctionne pas ? Que se passe-t-il ?
Il te manque un exit; après chque header(), mais ça ne devrait pas empêcher le fonctionnement.
Qu'est-ce qui ne fonctionne pas ? Que se passe-t-il ?
Il te manque un exit; après chque header(), mais ça ne devrait pas empêcher le fonctionnement.
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
525
18 oct. 2013 à 14:59
18 oct. 2013 à 14:59
Salut,
Dans ton code, tu test si le login est égal au type d'utilisateur :
Plutôt que d'avoir plusieurs tables SQL pour stocker les informations utilisateurs (Abonnes, Annonceurs, AnnonceursPublicitaires...), il serait peut-être plus simple de n'avoir qu'une seule table avec un champ "type", par exemple :
table : utilisateurs
champs : id | login | password | type | etc...
données : 1 | toto | secret | Admin | ...
2 | tata | 12345 | Abonnes | ...
3 | titi | hello | Anonceurs | ...
Ainsi lorsque tu as identifié l'utilisateur qui se connecte, il te suffit de récupérer la valeur de son champ "type" pour savoir quel est son type.
Bonne journée
Dans ton code, tu test si le login est égal au type d'utilisateur :
if ($_SESSION['login'] == 'Abonnes')Mais la login correspond au nom de l'utilisateur, pas à son type.
Plutôt que d'avoir plusieurs tables SQL pour stocker les informations utilisateurs (Abonnes, Annonceurs, AnnonceursPublicitaires...), il serait peut-être plus simple de n'avoir qu'une seule table avec un champ "type", par exemple :
table : utilisateurs
champs : id | login | password | type | etc...
données : 1 | toto | secret | Admin | ...
2 | tata | 12345 | Abonnes | ...
3 | titi | hello | Anonceurs | ...
Ainsi lorsque tu as identifié l'utilisateur qui se connecte, il te suffit de récupérer la valeur de son champ "type" pour savoir quel est son type.
Bonne journée
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
525
Modifié par Pitet le 18/10/2013 à 15:37
Modifié par Pitet le 18/10/2013 à 15:37
Si tu es obligé de garder plusieurs tables utilisateurs, une solution possible à ton problème serait d'effectuer 4 requêtes (une pour chaque table) afin de savoir de quel table est issue l'utilisateur. Par exemple :
// on initialise notre variable : on ne connait pas encore le type :
$typeUtilisateur = '';
// on vérifie si l'utilisateur est dans la table Abonnes
$sql = "SELECT count(*) FROM Abonnes WHERE login='" . mysql_escape_string($_POST['login']) . "' AND password= '" . mysql_escape_string($_POST['password']) . "'";
$req = mysql_query($sql, $base) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$data = mysql_num_rows($req);
if ($data == 1) {
// l'utilisateur est dans la table Abonnes
$typeUtilisateur = 'Abonnes';
} else {
// l'utilisateur n'est pas Abonnes, donc on cherche dans une autre table
$sql = "SELECT count(*) FROM Anonceurs WHERE login='" . mysql_escape_string($_POST['login']) . "' AND password= '" . mysql_escape_string($_POST['password']) . "'";
$req = mysql_query($sql, $base) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$data = mysql_num_rows($req);
if ($data == 1) {
// l'utilisateur est dans la table Anonceurs
$typeUtilisateur = 'Anonceurs';
} else {
// l'utilisateur n'est pas Anonceurs, donc on cherche dans une autre table
$sql = "SELECT count(*) FROM Admin WHERE login='" . mysql_escape_string($_POST['login']) . "' AND password= '" . mysql_escape_string($_POST['password']) . "'";
$req = mysql_query($sql, $base) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$data = mysql_num_rows($req);
if ($data == 1) {
// l'utilisateur est dans la table Admin
$typeUtilisateur = 'Admin';
} else {
// l'utilisateur n'est dans aucune table (pas de compte)
}
}
}
// on peut maintenant faire la redirection en fonction du type de l'utilisateur
if ($typeUtilisateur == 'Abonnes') {
header('Location: espaceMembreAbonnes.php');
exit();
} elseif ($typeUtilisateur == 'Anonceurs') {
header('Location: espaceMembreAnonceurs.php');
exit();
} // etc...
Modifié par taratatie le 18/10/2013 à 14:50
<?php
// on teste si le visiteur a soumis le formulaire de connexion
if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['password']) && !empty($_POST['password']))) {
$base = mysql_connect ('localhost', 'port****', '******');
mysql_select_db ('portaileco', $base);
// on teste si une entrée de la base contient ce couple login / password
/*$sql = 'SELECT * FROM AnnonceursPublicitaires WHERE login="'.mysql_escape_string($_POST['login']).'" AND password="'.mysql_escape_string($_POST['password']).'"'*/ ;
$sql =
"SELECT count(*) FROM Abonnes, Annonceurs, AnnonceursPublicitaires WHERE (Abonnes.login='" . mysql_escape_string($_POST['login']) . "' AND Abonnes.password= '" . mysql_escape_string($_POST['password']) . "') OR (Annonceurs.login='" . mysql_escape_string($_POST['login']) . "' AND Annonceurs.password= '" . mysql_escape_string($_POST['password']) . "') OR (AnnonceursPublicitaires.login='" . mysql_escape_string($_POST['login']) . "' AND AnnonceursPublicitaires.password= '" . mysql_escape_string($_POST['password']) . "') ";
#echo $sql;
$req = mysql_query($sql, $base) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$data = mysql_num_rows($req);
//print_r($data);
mysql_free_result($req);;
mysql_close();
//print_r($data);
// si on obtient une réponse, alors l'utilisateur est un membre
if ($data == 1) {
session_start();
$_SESSION['login'] = $_POST['login'];
if ($_SESSION['login'] == 'Abonnes'){
header('Location: espaceMembreAbonnes.php');
}
elseif ($_SESSION['login'] == 'AnnonceursPublicitaires')
{
header('Location: espaceMembre.php');
}
else {
header('Location: EspaceMembreAnnonceurs.php');
}
}
// si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son login, soit dans son mot de passe
elseif ($data == 0) {
$erreur = 'Compte non reconnu.';
}
// sinon, alors la, il y a un gros problème :)
else {
$erreur = 'Probème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.';
}
}
else {
$erreur = 'Au moins un des champs est vide.';
}
}
?>
<html>
<head>
<title>Accueil</title>
</head>
<body>
Connexion à l'espace membre :<br />
<form action="" method="post">
Login : <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"><br />
Mot de passe : <input type="password" name="password" value="<?php if (isset($_POST['password'])) echo htmlentities(trim($_POST['password'])); ?>"><br />
<input type="submit" name="connexion" value="Connexion">
</form>
<a href="index.php">Vous inscrire</a>
<?php
if (isset($erreur)) echo '<br /><br />',$erreur;
?>
</body>
</html>
ça se passe dans la partie /// si on obtient une réponse, alors l'utilisateur est un membre
je lui dit que si le loggin appartient à la table Abonnes alors lorsque que je clic sur connexion il doit nous rediriger vers la page espacemenbre.php sinon ..... mais je pence que c'est là que ça bloque.