Combiner Cookie et Session

cs_apz Messages postés 281 Date d'inscription dimanche 7 avril 2002 Statut Membre Dernière intervention 11 avril 2013 - 13 avril 2003 à 21:36
cs_Tortuegeniale Messages postés 1123 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 26 juin 2008 - 14 avril 2003 à 22:11
:) salut,

en fait je voudrais ajouter une zone membres dans mon site.

je voulais combiner cookie et session :

le cookie sert au login automatique de l'utilisateur quand il reviendra au site.

et depuis ce cookie on cre une session.

mais je n'arrive toujours pas à concretiser.

dans cette partie membre, il y a un menu dont une rubrique boite à messages.

1 - l'utilisateur en demandant de se logger dans son compte doit passer par un formulaire, s'il n'y a pas de session deja enregistree, ni un cookie present sur la machine.
2 - une fois le cookie ($var_cookie) est trouve, une verification du login dans la base des membres est necessaire.
3- la verification a ete passe avec succes, une session est enregistree et l'utilisateur est directement rediriger vers son compte.
4- s'il y a pas un cookie present, et le formulaire est bien rempli (verification avec user_memb.php), un cookie est cree ainsi qu'une session.

mais en cliquant sur la rubrique boite à message, parfois on est dedans avec comme login, celui passe par le formulaire ou cree depuis le cookie, mais parfois je me trouve dans l'espace messagerie avec le message "vous n'etes pas logger" !!!!

parfois tout fonctionne normalement mais la deconnexion ne se fait pas comme il faut : la session est toujours presente, elle n'est pas detruite, mais aussi elle ne permet pas de ce logger directement à la zone membre, il faut passer par le formulaire !

un autre probleme : en ouvrant une autre fenetre IE, et en voulant aller a la zone membre, j'aurais le formulaire au lieu du menu zone membre, meme si le cookie est encore present sur la machine !!! ou un autre message d'erreur s'affiche : Erreur, ce nom d'utilisateur est inexistant.

je crois qu'il reste du travail à faire.

la page login.php :
<?
if ($var_cookie)
{
$login=$var_cookie;
session_start();
session_register('login');
include "user_cook.php";
$id_mem=$HTTP_COOKIE_VARS['id_mem'];
header("locatin: memb.php?login=$login&pass=$pass&id=$id_mem)";
exit;
}
else { session_start();

if (($page == "login"))
{

$pass = md5(stripslashes($pass));

include "user_memb.php";

Header("Location: membre.php?login=login&pass=$pass&id=$checkid");
exit;
}
else
{
echo "<form action=login.php?&page=login method=post><center>
votre login, ,
----
votre mdp, ,
----

</form>";
}
}
?>

user_cook.php
<?$sql "SELECT id, login, pass FROM $matable WHERE login '$login'";
$result = mysql_query($sql);
$i = mysql_fetch_array($result);
if ($i == "") {
echo "Erreur, ce nom d'utilisateur est inexistant";
die;
} elseif ($i!= "") {

session_destroy();
$checkid = $i[id];
$id_membre = $i[id];
$login = $i[login];
setcookie('memb', '$login', time()+ 3600);

session_name ('compte');
session_start();
$idsession = session_id();
session_register ('idsession');
session_register ('id_membre');
session_register ('login');
session_register ('pass');
}
?>

user_memb.php
<?$sql "SELECT id, login, pass FROM $matable WHERE login '$login'";
$result = mysql_query($sql);
$i = mysql_fetch_array($result);
if ($i == "") {
echo "Erreur, ce nom d'utilisateur est inexistant";
die;
} elseif ($i!= "") {
if ($pass != md5(stripslashes($i[pass]))) {
echo "Votre mot de passe est incorrect";
die;
}

session_destroy();
$checkid = $i[id];
$id_membre = $i[id];
$login = $i[login];
setcookie('memb', '$login', time()+ 3600);

session_name ('compte');
session_start();
$idsession = session_id();
session_register ('idsession');
session_register ('id_membre');
session_register ('login');
session_register ('pass');
}
?>

Merci.
:)

----------------------
Debutant PHP/SQL, Delphi
Club de correspondance :
http://www.elatlasclub.fr.st

3 réponses

cs_Tortuegeniale Messages postés 1123 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 26 juin 2008
14 avril 2003 à 01:47
Salut

perso je pense que tu devrais laisser le cookie de coté parceque c pas dutout sécurisé un cookie si c pas trés bien fait (enfin avis perso lol). Le log automatique c bien mais bon ça prends pas beaucoup de temps de se loguer (pff les flémard lol) et les gens qui accepte pas les cookies pourrons pas venir.

Pour chopper une infos d'un cookie utilise plutot
$_COOKIE[nomdelavariable] (plus sur parcequ'avec $nomdelavariable on peut la passer dans l'url)

Pareil pour les sessions utilise $_SESSION[nomdelavariable] c plus sur.

Pareil pour les formulaire utilise $_POST si tu fais un formulaire post ou $_GET si tu fais un formulaire get ça évite de pouvoir passer les variable dans l'url

Tes requetes pour l'autentification sont pas bonne :"SELECT id, login, pass FROM $matable WHERE login '$login'"; ici tu selectionnes les infos du login sans regarder le pass donc si je mets admin comme login et toto comme pass ou meme "" comme pass ça passera. Rajoute juste " and pass $pass" aprés login = '$login'
Ensuite tu utilises $i mysql_fetch_array($result); et if ($i "") pour voir si il y a des résultats. Utilise plutot ceci
$result = mysql_query($sql);
$nb_result = mysql_num_rows($result);
if (mysql_result > 0)
{
$i = mysql_fetch_array($result);
echo "membre existant";
}
else
{
echo "membre non existant";
}

Ensuite je trouve personnelement que pour un systeme de log automatique par cookie tu pourrais mettre un cookie avec une durée de vie plus longue ( la tu mets 3600 secondes donc 1 heure, c un peu leg lol)

Enfin (je pense que tu le sais vu que y en a partout mais je le repete quand meme on sait jamais lol) met des session_start() sur absolument toutes les pages de ton site sinon dés que tu passes sur une page sans session_start() bah hop plus de variables de session. c'est peut etre pour ça que tu as le "vous n'etes pas logger" dans l'espace messagerie.

Si tu veux pour t'aider j'ai fais 2 tutoriaux, 1 sur les sessions et 1 sur les cookies :
- Tuto cookie
- Tuto session

Bon je vais me coucher lol
redemande si t'as besoin

++

--> http://www.kame-house.org <--
La plus grosse base de données sur les dessins animés des années 80
Site gratuit et sans pub
0
cs_apz Messages postés 281 Date d'inscription dimanche 7 avril 2002 Statut Membre Dernière intervention 11 avril 2013
14 avril 2003 à 21:49
salut tortuegenial,

bon merci pour tes petits notes je vais voir tout ca !

a propos de ta remarque sur la requete, j'ai fait le WHERE que sur le login parce qu'à l'inscription j'ai verifie que ce login n'existera qu'une seule fois dans la base des membres !

mais bon avec une condition login/pass ca renforcera la securite !

pour le cookie, je veux l'utiliser comme tu as compris pour l'identification auto du membre (et puis dans ce cookie je peux aussi sauvegarder la langue du site avec laquelle il surfait).

pour qu'il accepte ou pas les cookie ca je crois qu'il le fera dans les options de son navigateur !

dans l'espace de messagerie, j'essaye d'adapter un script trouve sur le net, alors son auteura mis dans tout ces pages session_start();

Remarque : j'ai vesite ton site et je crois que la zone membre m'a vraiment plu. pêux-tu m'aider à realiser une similaire sur mon site ?

ben voila tout !

je vais encore voir tout ca apres, et je crois que je vais me casser la tete pour arriver a concretiser mon projet.

bon tu es toujours là pour m'aider, hein ?

Merci encore.

------------------------------
Debutant PHP/SQL, Delphi
Club de correspondance :
http://www.elatlasclub.fr.st
0
cs_Tortuegeniale Messages postés 1123 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 26 juin 2008
14 avril 2003 à 22:11
euh bah si tu veux mais c pas sorcier, un session_start();
des session_register, des is_session_is_register et le tour est joué lol

bah demande moi quand t'auras de problemes

++

--> http://www.kame-house.org <--
La plus grosse base de données sur les dessins animés des années 80
Site gratuit et sans pub
0
Rejoignez-nous