Problème de session (merci JoJo)

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème de session (merci JoJo)

par jojolapine » 18 avr. 2006, 13:07

euh un mars et un café :?: :-*
derien, le savoir ça se partage (pour ce que je sais, je m'emballe un peu là :oops: )

par Maldus » 18 avr. 2006, 13:06

Merci, mais j'ai réglé le probleme, c'était, une fois de plus un point virgule qui manquait, la il me sort sort tout, et je peux appeler l'id par $id dans toutes mes pages après l'identification ou j'ai inclut le petit module session.php, et le login par $pseudo !

Tout est nickel, merci encore pour ton aide, qui m'a été très précieuse, si des fois tu as besoin de quelques chose n'hésite pas ;)

par jojolapine » 18 avr. 2006, 13:02

fait comme ceci pour récupérer tes deux valeures:
$test = mysql_query("SELECT id FROM login WHERE login ='".$pseudo."'");
if(mysql_num_rows($test)==1){
   $id = mysql_result($test,0,"id");//si ton champ s'appel id
   $pseudo=mysql_result($test,0,"pseudo");//si ton champ ds ta table s'appel pseudo
}
et après tu les mets dans tes sessions

par Invité » 18 avr. 2006, 12:58

Ca cherche en fonction du pseudo rentrer dans le formulaire.
Sinon, en faite c'est que je lui faisait tester avant d'avoir rentrer une quelquonque valeure !
LA tout est nickel, ils stockent l'id dans la session (2 fois je sait pas pk au lieu de 1 fois l'id et 1 fois le pseudo ! mais je ne m'en plaint pas, le pseudo était secondaires, juste pour afficher le nom sur certaines pages, je le rejouterais par la suite.)

par jojolapine » 18 avr. 2006, 12:53

Je te répond quand-même...
l'erreur qu'il te met correspond je pense à un enregistrement nul, c.a.d. qu'il n'a pas trouvé dans la table d'enregistrement correspondant à tes critères.
tu peux tester avant de faire le mysql_result(), tu peux faire un test du genre:
if(mysql_num_rows($test)==1){
   $id = mysql_result ($test,0,"id");
}
je comprend pas trop ton
mysql_result ($test,$pseudo);
:-s

par Maldus » 18 avr. 2006, 12:48

J'ai résolu le problème tout seul comme un grand, j'ai remplacer l'appel a data par un autre appel dédié !

$test = mysql_query ("SELECT id FROM login WHERE login ='".$pseudo."'");
      $id = mysql_result ($test,$pseudo);
et ca marche nickel, merci encore JoJo !!





ps : peit bug sans importance, il me dit qu'il ne peut pas aller au row 0 mais jai ma petite idée la dessus, je vais mettre dans la =boucle et je t'en dit des nouvelles ;)




edit, c'est bon tout est ok, merci de ton aide !

par jojolapine » 18 avr. 2006, 12:38

je comprend pas très bien....
est-ce que ton fichier zonemembre.php est un fichier différent que celui que tu montres...? si oui on pourrait peut-être le voir aussi, autre chose, est-ce que tu as vérifié si:

Code : Tout sélectionner

$id = $data["id"];
te donne qqch?
tu peux mettres un echo $id; juste après pour voir, s'il n'ya rien... c'est que ton $data['id'] ne contient rien et donc que c'est dans ta table qu'il y a un problème

par Maldus » 18 avr. 2006, 12:33

Ok merci encore, j'aimerai bien aider en retour, mais vu l'état actuel de mes connaissances, c'est plutot limité ^^

Donc : (parti interessante du code mis en grand)
<?php
session_start();
include "Connexion.php";
include "ConnexionBDD.php";




/* Faire le if, ci dessous systeme de rechercher pseudo dans table, get id, faire la redirection si succès et avant test du mdp !  */




      $query = "SELECT pass FROM login WHERE login ='".$pseudo."'";
    $resultat= mysql_query ($query) or die('Erreur SQL:'. $query);
      $data = mysql_fetch_array($resultat);
$id = $data["id"];



       if ($pass == $data["pass"]) {
              $loginOK = "oui";
       }



if ($loginOK == "oui") {
$_SESSION["id"] = $data["id"];
$_SESSION["login"] = $data["login"];
echo " <strong><h1>Identifiants corrects, accès à votre empire...</h1></strong><br><br><form name=\"membre\" method=\"post\" action=\"zonemembre.php?id=$id\">
       <input type=\"submit\" value=\"Accéder\">
       </form>
       ";
}
else { echo "<strong>mot de passe incorrect, ou authentification non validée.</strong>"; }

var_dump($_SESSION["id"]."<br />".$_SESSION["login"]);
die;

session_write_close();

?>

Merci encore


$id = $data["id"];

puis
echo " <strong><h1>Identifiants corrects, accès à votre empire...</h1></strong><br><br><form name=\"membre\" method=\"post\" action=\"zonemembre.php?id=$id\">
       <input type=\"submit\" value=\"Accéder\">
       </form>
       ";

par jojolapine » 18 avr. 2006, 12:27

Ayé :) !
Maintenant que le problème de session est réglé...
Tu nous dits que la redirection ne marche plus...
Je veu bien aider, mais montre moi au moins le bout de code correspondant à ta redirection... :wink:

par Maldus » 18 avr. 2006, 11:51

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA !!!
Meric :oops: :oops: :oops: :oops: :oops: :oops: :oops:

désolé...
Par contre a la suite de toutes ces manipulations du code, je n'arrive plus a me faire la redirection justevers zone membres, une eptite idée ?


Si vous en avez marre je comprendrai, mais c'est la première qu'un code me pose autant de blèmes...



8) :? Merci

par jojolapine » 18 avr. 2006, 11:46

t'es bouché ou quoi? :evil:
<?php
include "Connexion.php";
include "ConnexionBDD.php";
session_start();
Avec mes petits yeux, je vois que session_start() est situé après tes includes, mais le avant, juste après <?php

par Maldus » 18 avr. 2006, 11:38

Ahhhhhhhhh ! D'accord désolé je test de ce pas !

Désolé :roll:



<?php
include "Connexion.php";
include "ConnexionBDD.php";
session_start();


      $query = "SELECT pass FROM login WHERE login ='".$pseudo."'";
    $resultat= mysql_query ($query) or die('Erreur SQL:'. $query);
      $data = mysql_fetch_array($resultat);

       $id = $data["id"];



       if ($pass == $data["pass"]) {
              $loginOK = "oui";
       }



if ($loginOK == "oui") {
$_SESSION["id"] = $data["id"];
$_SESSION["login"] = $data["login"];
$id = $data["id"];
echo " <strong><h1>Identifiants corrects, accès à votre empire...</h1></strong><br><br><form name=\"membre\" method=\"post\" action=\"zonemembre.php?id=$id\">
       <input type=\"submit\" value=\"Accéder\">
       </form>
       ";
}
else { echo "<strong>mot de passe incorrect, ou authentification non validée.</strong>"; }

var_dump($_SESSION["id"]."<br />".$_SESSION["login"]);
die;

session_write_close();

?>

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /var/www/free.fr/4/e/sylvainmura/Connexion.php:6) in /var/www/free.fr/4/e/sylvainmura/autenthification.php on line 4


Encore et toujours...
Et toujours pas la bonne redirection.....

Rhaaaaaaa je vais mourrirrrrr


Meric de ton aide ;)

par Invité » 18 avr. 2006, 11:36

Non non non et non, tu ne m'a pas écouté....
<?php
include "Connexion.php"; /*Formulaire*/
...
if ($loginOK == "oui") {
session_start();
...
tu me mets le session_start() après avoir inclus connexion.php, qui je suppose d'après ton commentaire affiche qqch sur ta page, puisqu'il s'agit d'un formulaire...donc regarde mon post précédent et agis en conséquence

par Maldus » 18 avr. 2006, 11:28

D'ac, donc la j'ai un poil modifier le fichier, je n'ai plus d'erreur avant l'authetification, lorsque que je valide il me dit
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /var/www/free.fr/4/e/sylvainmura/Connexion.php:6) in /var/www/free.fr/4/e/sylvainmura/autenthification.php on line 27
Et j'ai toujours le petit "string 6" qui se ballade ^^

Par contre depuis la modification dans cette partie
$id = $data["id"];
echo " <strong><h1>Identifiants corrects, accès à votre empire...</h1></strong><br><br><form name=\"membre\" method=\"post\" action=\"zonemembre.php?id=$id\">
       <input type=\"submit\" value=\"Accéder\">
       </form>
       ";


Il ne me redirige pas vers la bonne zonemembre.php?id=... Il me met id= sans l'id derrière.

Bon je poste ici donc tout mon code d'authentification (qui m'en fait baver ce lui la, autant le code d'inscription ok, la MAJ des comptes concerné ok, mais la .....)


<?php
include "Connexion.php";       /*Formulaire*/
include "ConnexionBDD.php";


      $query = "SELECT pass FROM login WHERE login ='".$pseudo."'";
    $resultat= mysql_query ($query) or die('Erreur SQL:'. $query);
      $data = mysql_fetch_array($resultat);

       $id = $data["id"];



       if ($pass == $data["pass"]) {
              $loginOK = "oui";
       }



if ($loginOK == "oui") {
session_start();
$_SESSION["id"] = $data["id"];
$_SESSION["login"] = $data["login"];
session_write_close();
$id = $data["id"];
echo " <strong><h1>Identifiants corrects, accès à votre empire...</h1></strong><br><br><form name=\"membre\" method=\"post\" action=\"zonemembre.php?id=$id\">
       <input type=\"submit\" value=\"Accéder\">
       </form>
       ";
}
else { echo "<strong>mot de passe incorrect, ou authentification non validée.</strong>"; }

var_dump($_SESSION["id"]."<br />".$_SESSION["login"]);
die;


?>


Puis mon appel a la session qui est rattaché a zonemembre
<?php
session_start() ;
$id = &$_SESSION["id"];
echo $_SESSION["id"]."<br />".$_SESSION["login"];

?>

Merci !

par jojolapine » 18 avr. 2006, 10:52

Est-ce que tu est bien sur que dans ta page, tu n'affiche rien avant d'ouvrir les sessions avec session_start()?
je serai toit, je le mettrai au tt début du fichier...