Page 1 sur 2

Problème de session (merci JoJo)

Posté : 18 avr. 2006, 02:25
par Maldus
Re salut a tous, une fois de plus je bloque (j'entame mon 3eme jour ^^)
Désolé de vous déranger une fois de plus mais j'ai quelques problème au niveau des sessions !
Je veux m'authentifier par une page ou la page récuperera l'id et le login stocker dans la BDD en session.
Malheuresement après lorsque je fait appel a la session rien ne ressort....


Le code ci dessous :
la partie qui ouvre la session qui nous interesse lors du test du pass
if ($pass == $data['pass']) {
              $loginOK = 'oui';
       }



if ($loginOK == 'oui') {
$_SESSION['id'] = $data['id'];
$_SESSION['login'] = $data['login'];
echo " <strong><h1>Identifiants corrects*****...</h1></strong><br><br><form name=\"membre\" method=\"post\" action=\"*****.php?id=$id\">
       <input type=\"submit\" value=\"Accéder\">
       </form>
       ";
}
else { print "<strong>Pas bon</strong>"; }






?>


Et la partie qui fait appel
<?php
session_start() ;
$id = $_SESSION['id'];


echo "$id"   (ou print je sait plus ^^)


?>

Merci d'avance de votre aide !


Bonne nuit ;)

Posté : 18 avr. 2006, 05:28
par Ultiny
Donne nous le résultat de ceci :
<?php

// Il ne faut pas oublier de lancer la session
session_start();

if ($pass == $data["pass"])
{
	$_SESSION["id"] = $data["id"];
	$_SESSION["login"] = $data["login"];
	
	echo "<strong><h1>Identifiants corrects*****...</h1></strong><br><br>"
		."<form name=\"membre\" method=\"post\" action=\"*****.php?id=$id\">"
		."<input type=\"submit\" value=\"Accéder\"></form>";
}
else
{
	echo "<strong>Pas bon</strong>";
}

// Ici il faut tester la validitée de :
var_dump($_SESSION["id"]."<br />".$_SESSION["login"]);
die;


?>


<?php

session_start() ;
echo $_SESSION["id"]."<br />".$_SESSION["login"];

?>

Posté : 18 avr. 2006, 10:47
par Maldus
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 26

Voila le problème du jour.....

Merci pour ton aide, déja il essai de sender quelque chose ;)

Donc je présente mon code :


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

  session_start();   (ligne 26)

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;






?>


Et mon appel pour reconnaitre l'id dans la session :
<?php
session_start() ;
$id = $_SESSION['id'];
echo $_SESSION["id"]."<br />".$_SESSION["login"];

?>


Malgrè l'erreur citée precedemment ca me créeé bien des sessions sous la forme :

Code : Tout sélectionner

[code]id|s:1:"1";login|s:6:"Maldus";
[/code]



Mais pas moyen de récuperer une quelquonque information (ni id ni login ....))






Merci de votre aide !


edit : "string(6) "
est affiché a la fin lrosque l'identification est ok :)
Merci

Posté : 18 avr. 2006, 10:52
par jojolapine
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...

Posté : 18 avr. 2006, 11:28
par Maldus
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 !

Posté : 18 avr. 2006, 11:36
par Invité
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

Posté : 18 avr. 2006, 11:38
par Maldus
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 ;)

Posté : 18 avr. 2006, 11:46
par jojolapine
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

Posté : 18 avr. 2006, 11:51
par Maldus
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

Posté : 18 avr. 2006, 12:27
par jojolapine
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:

Posté : 18 avr. 2006, 12:33
par Maldus
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>
       ";

Posté : 18 avr. 2006, 12:38
par jojolapine
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

Posté : 18 avr. 2006, 12:48
par Maldus
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 !

Posté : 18 avr. 2006, 12:53
par jojolapine
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

Posté : 18 avr. 2006, 12:58
par Invité
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.)