Poblème de sessions sur serveur mutualisé OVH

CEDDRIC
Invité n'ayant pas de compte PHPfrance

22 mai 2008, 14:40

Bonjour, voici mon problème qui ce passe sur ovh, par sur les autre serveurs, ni en local avec easy php.
Je me connecte via un formulaire qui me redirige sur une page admin donc j'attribu une sessions et grace a cette session je peut prendre les éléments de l'utilisateurs dans ma base de donnée. De la page admin quand je veut allez dans une autre pas avec ovh en récupérant toujours ma sessions ca ne fontionne plus donc erreur sql obligé car la session est perdu. On m'a dit que mon code étai obselète et avec des failles de sécurité pouvez vous m'aider.
Merci

Voici le code que je met au début de chaque page.

Code : Tout sélectionner

<? session_start(); require("infos_bdd.php"); if(isset($_SESSION['pseudo'])) { //On récupère la variable pseudo issue de la session $pseudo = $_SESSION['pseudo']; // CONNEXION MYSQL $db_link = @mysql_connect($sql_serveur, $sql_login, $sql_pass); if(!$db_link) {echo "Connexion impossible à la base de données <b>$sql_bdd</b> sur le serveur <b>$sql_server</b><br>Vérifiez les paramètres du fichier infos_bdd.php"; exit;} // On selectionne tous les champs de SQL concernant le pseudo $requete=mysql_db_query($sql_bdd,"select * from finance_membres_fc where nom=\"$pseudo\"",$db_link) or die(mysql_error()); $id=mysql_result($requete,0,"id"); $cabinet=mysql_result($requete,0,"cabinet"); ?>
Et donc voisi l'érreur sql normal car la variable pseudo qui vient de la sessions n'existe plus! Pourqoi???

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 5 in /home.10.29/financec/www/inc/membres_fc.php on line 16

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 5 in /home.10.29/financec/www/inc/membres_fc.php on line 17

Eléphant du PHP | 174 Messages

22 mai 2008, 15:46

Bonjour.

Tout d'abord je note au passage que ton if ne semble pas fermé...

Pour le reste, premier problème, tu fais un if(isset(...)) or isset teste si la session existe mais pas si elle est vide.
Je te conseille de remplacer par if(!empty(...)) (qui retourne false si elle n'existe pas ou si elle est vide et true si elle existe et est non vide).

Normalement la condition ne sera pas vérifiée et si tel est le cas je t'invite à vérifier le script qui initialise la variable $_SESSION['pseudo'].

Bonne progra !
"Il vaut mieux avoir du luxe dans ses sentiments que sur ses habits, je ne crains, moi, le mépris de personne" Honoré De Balzac.
"On s'étonne trop de ce que l'on voit rarement et trop peu de ce que l'on voit chaque jour" Mme de Genlis
"L'absence diminue les médiocres passions et augmente les grandes comme le vent éteint les bougies et allume le feu" La RocheFoucauld
"People have hope because they can't see Death standing behind them" (anonymous)
"Of all the things I've lost, I miss my brain the most" (from a fanfic)

ceddric
Invité n'ayant pas de compte PHPfrance

22 mai 2008, 20:47

Je suis d'accord mon if n'est pas fermé car c'est une portion du code normalement il est fermé.
Pourqoi est ce que ca marche sur tous les serveur cette histoir de session ainsi que en local mais pas sur OVH comment ca ce fait qui ya t'il dans mon code qui ne va pas voici le programme qui initialise la session.

Code : Tout sélectionner

mysql_connect($sql_serveur, $sql_login, $sql_pass) or die("erreur de connexion au serveur $host"); $db_link = @mysql_connect($sql_serveur, $sql_login, $sql_pass); if(!$db_link) {echo ""; exit;} //Si des valeurs sont envoyées if (isset($_POST['pseudo']) AND isset($_POST['mot_de_passe'])) { //On réupère les infos postées par le formulaire sous forme de variables $pseudo = ($_POST['pseudo']); $mot_de_passe = ($_POST['mot_de_passe']); // On vérifie si le mot de passe correspond au pseudo $requete=mysql_db_query($sql_bdd,"select * from finance_membres_fc where nom=\"$pseudo\" and pass=\"$mot_de_passe\"",$db_link) or die(mysql_error()); //Si la requête est nulle, on affiche une erreur if(mysql_num_rows($requete)==0) { $ok= "<center><span class='erreur orange Style45'><b>Login et/ou Mot de passe invalide</b></span></center>"; } else //Si la requeête est correcte, on attribue une session et on redirige vers la zone membre { $ok= "<center><span class='erreur orange Style45'><b>Chargement en cours...</b></span><center>"; $_SESSION['pseudo'] = $pseudo;

Eléphant du PHP | 174 Messages

22 mai 2008, 20:55

Re-bonsoir.

Pour info cela ne vient pas de chez ovh, je le sais puisque j'héberge mon site chez eux et que les sessions fonctionnent correctement.

Question stupide (mais utile on ne sait jamais) dans ta page de connexion, tu as bien un "session_start()" rassure-moi ?

Parce que dans le cas contraire la session n'est pas transmise/initialisée, et il sera alors logique que la variable de session ne contienne rien...
"Il vaut mieux avoir du luxe dans ses sentiments que sur ses habits, je ne crains, moi, le mépris de personne" Honoré De Balzac.
"On s'étonne trop de ce que l'on voit rarement et trop peu de ce que l'on voit chaque jour" Mme de Genlis
"L'absence diminue les médiocres passions et augmente les grandes comme le vent éteint les bougies et allume le feu" La RocheFoucauld
"People have hope because they can't see Death standing behind them" (anonymous)
"Of all the things I've lost, I miss my brain the most" (from a fanfic)

ceddric
Invité n'ayant pas de compte PHPfrance

22 mai 2008, 22:07

oui bien sur session_start(); est au début de ma page je comprend pas c'est la premiere fois que ca me fait ca!!! arfff

lux
Eléphant du PHP | 372 Messages

23 mai 2008, 09:37

Hello. Moi j'ai remarqué un truc chez OVH, car je perdais des Sessions en cours de route ... évite de donner le même non à tes variables :
$pseudo = $_POST['pseudo']; 
$_SESSION['pseudo'] = $pseudo;
$pseudo = $_SESSION['pseudo']; 
Ce genre de truc me fait perdre mes sessions après 2-3 pages, aléatoirement, chez OVH. Donc appelle les $session1,$session2, etc... ça peut jouer, mais ça peut être qqch de totalement autre. J'ai pas vraiment réussi à déterminer d'ou venait le bug, et de temps en temps on me signale une perte de session, sans que je puisse le reproduire ... :x

ceddric
Invité n'ayant pas de compte PHPfrance

23 mai 2008, 11:37

EUUh oaui alors comment faire pour qu'une session de ce perde pas au bout de quelque page, car ca me fait plaisir de voir que je suis pas le seul dans ce cas!!!z toute vos idées ca serai cool
Merci :)