Problemes de séssion

Résolu
pekplusultra Messages postés 19 Date d'inscription jeudi 10 novembre 2005 Statut Membre Dernière intervention 16 décembre 2005 - 19 nov. 2005 à 18:44
pekplusultra Messages postés 19 Date d'inscription jeudi 10 novembre 2005 Statut Membre Dernière intervention 16 décembre 2005 - 21 nov. 2005 à 13:29
helo,
toujours plus haut toujours plus fort,
jai crée un petit site en local qui fonctionne nikel mais sur le net apparait un gros bug.
je mexplique: je midentifie en tant qu'utilisateur et lorsque je clique sur un lien pour visiter une fiche d'une autre personne la session change automatiquement.
C'est a dire que je suis connecté avec le pseudo de l'autre personne et qui de mieux je peux changer la moitié de ces informations.

j'utilise easyphp version 1.8.01 et la version de php de mon serveur et la 5.0.4

Vous avez une ptite idée please?

9 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
21 nov. 2005 à 08:54
Hello,

je n'ai jamais testé, mais si tu es dans un environnement où register_globals est à on, le comportement est peut-être le même que pour $_POST ou $_GET...à savoir que si
$_GET['login'] sera différent de $_SESSION['login'], $login tout court pourra être utilisé en lieu et place de ces 2 variables. Et comme au lieu d'utiliser directement tes globales, tu passes par une affecation à $login...ton problème vient peut-être de là.
Utilise directement $_GET et pas $login dans ta page de visu (et partout, éventuellement, n'affectes pas tes variables globales à une tierce variable).
Sauf que normalement, session_register ne devrait pas fonctionner dans cet environnement là.

Heu ensuite, session_register('authentication'); je veux bien, mais tu ne stockes rien là, $authentication n'existe apparemment pas.

Bref de toutes façons, comme Antho, je préconise l'utilisation de $_SESSION.
3
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
19 nov. 2005 à 22:09
Salut,

quel est ton code ?
<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
pekplusultra Messages postés 19 Date d'inscription jeudi 10 novembre 2005 Statut Membre Dernière intervention 16 décembre 2005
20 nov. 2005 à 11:39
Code de la page index:

<?php require_once('connexion.php'); ?>
<?php

session_start();

if (isset($_POST['login'])){
$login = addslashes($_POST['login']);
$pass = addslashes(md5($_POST['pass']));

mysql_select_db($database_dbprotect, $dbprotect);
$verif_query=sprintf("SELECT * FROM utilisateurs WHERE login='$login' AND pass='$pass'");
$verif = mysql_query($verif_query, $dbprotect) or die(mysql_error());
$row_verif = mysql_fetch_assoc($verif);
$utilisateur = mysql_num_rows($verif);


if ($utilisateur) { // On test s'il y a un utilisateur correspondant

session_register("authentification"); // enregistrement de la session

// déclaration des variables de session
$_SESSION['privilege'] = $row_verif['privilege']; // le privilège de l'utilisateur (permet de définir des niveaux d'utilisateur)
$_SESSION['nom'] = $row_verif['nom']; // Son nom
$_SESSION['prenom'] = $row_verif['prenom']; // Son Prénom
$_SESSION['login'] = $row_verif['login']; // Son Login
$_SESSION['pass'] = $row_verif['pass']; // Son mot de passe (à éviter)

header("Location:accueil.php"); // redirection si OK
}
else {
header("Location:index.php?erreur=login"); // redirection si utilisateur non reconnu
}
}

// Gestion de la déconnexion
if(isset($_GET['erreur']) && $_GET['erreur'] == 'logout'){ // Test sur les paramètres d'URL qui permettront d'identifier un contexte de déconnexion
$prenom = $_SESSION['prenom']; // On garde le prénom en variable pour dire au revoir (soyons polis :-)
session_unset("authentification");
header("Location:index.php?erreur=delog&prenom=$prenom");
}
?>

Code de la page accueil

<?php require_once('connexion.php');
session_start();
if (session_is_registered("authentification")){$login = $_SESSION['login']; }
else {
header("Location:index.php?erreur=intru");
}

$login = $_SESSION['login'];
mysql_select_db($database_dbprotect, $dbprotect);
$query_users = "SELECT login, prenom, age, sexe FROM utilisateurs ORDER BY id_user DESC";
$users = mysql_query($query_users, $dbprotect) or die(mysql_error());
$row_users = mysql_fetch_assoc($users);
$cpt = 5;
?>

appel de la page visualisation ::
" class ="bleuxs">

Code de la page visualisation:

<?php
session_start();
if (session_is_registered("authentification")){
}
else {
header("Location:index.php?erreur=intru");
}

require_once('connexion.php');
$login = $_GET['login'];
mysql_select_db($database_dbprotect,$dbprotect);
$requete = ("SELECT etat, personnalite, taille, poid, aime, aimepas, prenom, ville, celibataire, age, admsn, cacher FROM utilisateurs WHERE login='$login'");
$query = mysql_query($requete,$dbprotect) or die (mysql_error());
$tab = mysql_fetch_array($query);
$etat = $tab[0];
$personnalite = $tab[1];
$taille = $tab[2];
$poid = $tab[3];
$aime = $tab[4];
$aimepas = $tab[5];
$prenom = $tab[6];
$ville = $tab[7];
$celibataire = $tab[8];
$age = $tab[9];
$admsn = $tab[10];
$cacher = $tab[11];
?>

Mais je pense pas que ca vienne de mon code, vue qu'en local ca fonctionne tres bien.
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
20 nov. 2005 à 11:53
j'ai la flemme de regarder tout le code, session_is_registered est dépréciée tu dois utiliser if(isset($_SESSION['variable']))

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pekplusultra Messages postés 19 Date d'inscription jeudi 10 novembre 2005 Statut Membre Dernière intervention 16 décembre 2005
20 nov. 2005 à 15:36
ok je vais essayer avec ca, merci
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
20 nov. 2005 à 17:41
"$utilisateur = mysql_num_rows($verif);


if ($utilisateur) { // On test s'il y a un utilisateur correspondant"

mysql_num_rows() n'a jamais renvoyée TRUE !!!!!!!!!
Faut pas s'étonner si ca marche une fois sur 30 :/

Y'a bien marqué : int mysql_num_rows() dans la doc PHP !!!

Ca renvoit false si y'a rien oui, mais jamais true !
En plus, tu récupères tes enregistrements, mais si jamais je demande le login de quelqu'un qui n'existe pas, tu va avoir une erreur de notice avec mysql_fetch_assoc() !

Par contre, autrement je vois pas d'erreur énorme :o
0
pekplusultra Messages postés 19 Date d'inscription jeudi 10 novembre 2005 Statut Membre Dernière intervention 16 décembre 2005
21 nov. 2005 à 09:55
ok je vais tester vos conseils s'apré-midi. je vous tiens au courant encore merci
0
pekplusultra Messages postés 19 Date d'inscription jeudi 10 novembre 2005 Statut Membre Dernière intervention 16 décembre 2005
21 nov. 2005 à 12:21
bon je viens de faire les modif de session, mais cela ne change rien.
me reste plus qu'a voir si register_globals est en position 'on'.
0
pekplusultra Messages postés 19 Date d'inscription jeudi 10 novembre 2005 Statut Membre Dernière intervention 16 décembre 2005
21 nov. 2005 à 13:29
Voilà le problemes est résolut, c'etait bien a cause du registers_global qui etait a 'on', pour ne pas changer touts mes fichiers , jai juste donner un autre nom a $login=$_GET['login']. j'ai remplacer $login par $login1. Et tout fonctionne pour le mieux.

Un grand merci à vous d'avoir répondu et corriger mes erreurs.
0
Rejoignez-nous