[PHP] session précision

session précision [PHP] - PHP - Programmation

Marsh Posté le 25-06-2002 à 16:23:54    

cette fois ci je craque !!!
j ai mis ça ds la partie php de ma page :
 

Code :
  1. <?
  2. include("log.inc.php" );
  3. session_start();


 
et j ai le msg suivant :
 
Warning: Cannot send session cookie - headers already sent by (output started at /var/www/free.fr/7/t/e/s/t/testphp4/menu2.php:5) in menu2.php on line 48
 
Est ce que c est parcequ' il y a du html avant ???


Message édité par seb90 le 26-06-2002 à 00:56:33

---------------
Vendez, achetez et échangez vos jeux vidéos sur http://www.jeutroc.com
Reply

Marsh Posté le 25-06-2002 à 16:23:54   

Reply

Marsh Posté le 25-06-2002 à 16:26:46    

pour autant que je me souvienne, session_start() doit etre la 1ere instruction de ton code. a confirmer.
 
inutile d'ouvrir 36 topics pour ça au passage...
 
enfin, as tu fait ce que Free recommande de faire (cf ma réponse dans ton précédent topic) ?


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 25-06-2002 à 16:30:26    

j ai effacé l autre topic personne le lisait , sinon ouais j ai fais le repertoire sessions ...


---------------
Vendez, achetez et échangez vos jeux vidéos sur http://www.jeutroc.com
Reply

Marsh Posté le 25-06-2002 à 16:43:38    

extrait de www.php.net....
 
 

Citation :


Note: If you are using cookie-based sessions, you must call session_start() before anything is output to the browser.  
 


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 25-06-2002 à 16:46:06    

ok ben j v reorganiser la disposition de la page alors ... merci


---------------
Vendez, achetez et échangez vos jeux vidéos sur http://www.jeutroc.com
Reply

Marsh Posté le 25-06-2002 à 16:51:14    

pas besoin de réorganiser ta page, tu colles juste ce code au début de ta page :
 
<? session_start(); ?>
 
et dire que j'ai jamais fait de PHP.....  :sarcastic:


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 25-06-2002 à 16:53:19    

Harkonnen a écrit a écrit :

pas besoin de réorganiser ta page, tu colles juste ce code au début de ta page :
 
<? session_start(); ?>
 
et dire que j'ai jamais fait de PHP.....  :sarcastic:  



:love:  t trop fort  :love:

Reply

Marsh Posté le 25-06-2002 à 16:56:22    

Ou alors tu mets

Code :
  1. ob_start('gz_handler');

comme 1ere instruction et tu laisses ton session_start() là où il est... Comme ça t'auras la compression des pages en + !

Reply

Marsh Posté le 25-06-2002 à 16:59:55    

prettysmile a écrit a écrit :

 :love:  t trop fort  :love:  




merci ma belle :love:
mais tu me sur-estimes je pense, j'ai juste lu pendant quelques secondes la page suivante :
 
http://www.php.net/manual/en/funct [...] -start.php


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 25-06-2002 à 17:04:57    

g mis ce ptit truc et ça marche : ob_start('gz_handler';);
dc merci  
mais lorsque je veux afficher le login , il affiche rien ...
( en fait loesque je regarde les fichiers sessions y a pas de valeurs associés eu login et password )


Message édité par seb90 le 25-06-2002 à 17:09:49

---------------
Vendez, achetez et échangez vos jeux vidéos sur http://www.jeutroc.com
Reply

Marsh Posté le 25-06-2002 à 17:04:57   

Reply

Marsh Posté le 25-06-2002 à 17:08:15    

Harkonnen a écrit a écrit :

 
merci ma belle :love:
mais tu me sur-estimes je pense, j'ai juste lu pendant quelques secondes la page suivante :
 
http://www.php.net/manual/en/funct [...] -start.php



savoir effectuer une rechercher, t vraiement trop fort  :love:  (unménage à 3 avec google, ça ne me dérange pas outre mesure)

Reply

Marsh Posté le 25-06-2002 à 17:55:19    

donc je fais ça :
 

Code :
  1. $login=$nom;
  2. $password=$mdp;
  3. session_register("login" );
  4. session_register("password" );
  5. $logstate=1;


 
ou nom et mdp sont des champs texte...
 
hé ben qd j ouvre les fichiers de session , login et password sont vide ....
je capte pa d ou ça vient la ....


---------------
Vendez, achetez et échangez vos jeux vidéos sur http://www.jeutroc.com
Reply

Marsh Posté le 25-06-2002 à 18:37:43    

[:yoyoz]  [:yoyoz]


---------------
Vendez, achetez et échangez vos jeux vidéos sur http://www.jeutroc.com
Reply

Marsh Posté le 25-06-2002 à 20:02:14    

une recherche sur php.net nous apprend à propos de session_register que :

Citation :


This registers a global variable. If you want to register a session variable inside a function, you need to make sure to make it global using global() or use the session arrays as noted below.  


je te pose donc la question suivante : est-ce que tes variables $nom et $mdp sont globales ? (a l'extérieur d'une fonction)  
 
dans l'affirmative, une question de rechange : si tu fais "echo $nom" par exemple, obtiens tu la valeur que tu devrais obtenir ?
 
il faut toujours vérifier que les variables contiennent une valeur avant d'accuser la fonction qui les manipule, c'est la b-a ba de la prog...


Message édité par Harkonnen le 25-06-2002 à 20:03:53

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 25-06-2002 à 20:26:35    

ben com c est des champs qui sont ensuite postés ce sont des paramaètres dc y a pas d raison ...


---------------
Vendez, achetez et échangez vos jeux vidéos sur http://www.jeutroc.com
Reply

Marsh Posté le 25-06-2002 à 20:29:29    

fais quand meme un echo, pour vérifier ...


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 25-06-2002 à 20:33:32    

Harkonnen a écrit a écrit :

fais quand meme un echo, pour vérifier ...




 
ben justement ça marche pa


---------------
Vendez, achetez et échangez vos jeux vidéos sur http://www.jeutroc.com
Reply

Marsh Posté le 25-06-2002 à 20:35:13    

et ben voila ! donc ça veut dire que tes variables ne sont pas récupérées...
 
poste le code entier pour voir


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 25-06-2002 à 20:37:46    

nom et mdp sont les noms des champs recupérés avant ds le post
 

Code :
  1. <?
  2. include("log.inc.php" );
  3. $sql="SELECT * FROM utilisateur WHERE pseudo = '$nom'";
  4. $req=mysql_query($sql);
  5. $logstate=0;
  6. while ($data=mysql_fetch_array($req))
  7. {
  8. if ($data['mdp']='$mdp')
  9.  {
  10.  $login=$nom;
  11.  $password=$mdp;
  12.  session_register("login" );
  13.  session_register("password" );
  14.  $logstate=1;
  15.  }
  16. }
  17. if ($logstate==1)
  18. {
  19. echo "<font color=\"#FFFF00\" size=\"2\"><b>";
  20. session_start();
  21. echo $login;
  22. echo "</b></font><br><font color=\"#000033\" size=\"2\"><a href=\"menu1.php\">Déconnexion</a></font>";
  23. }
  24. else
  25. {
  26. echo "<br>Mauvais log ou mdp<br>";
  27. session_destroy();
  28. }
  29. ?>


---------------
Vendez, achetez et échangez vos jeux vidéos sur http://www.jeutroc.com
Reply

Marsh Posté le 25-06-2002 à 20:39:34    

oui ben justement, c'est le post qui m'interessait
 
poste le code de ton formulaire


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 25-06-2002 à 20:43:54    

Code :
  1. <form name="form2" method="post" action="menu2.php" enctype="multipart/form-data">
  2. <input type="text" name="nom" size="13" maxlength="15"style="color: #00184A; background: #6C98BF">
  3. <input type="password" name="mdp" size="9"maxlength="15"style="color: #00184A; background: #6C98BF">
  4. <input type="submit" name="Submit" value="Go">


---------------
Vendez, achetez et échangez vos jeux vidéos sur http://www.jeutroc.com
Reply

Marsh Posté le 26-06-2002 à 00:56:09    

en fait c est depuis que je suis passé au php4 !!! Qqn a une idee ???


---------------
Vendez, achetez et échangez vos jeux vidéos sur http://www.jeutroc.com
Reply

Marsh Posté le 26-06-2002 à 08:53:49    

non, la je vois pas, je connais pas assez PHP  :??:  
d'apres ce que je lis, ça a l'air correct, mais il te faudrait l'aide de Sh@rdar ou kayasax, qui sont des demi dieux en PHP.
 


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 26-06-2002 à 09:22:57    

deja, fo mettre if ( $data['mdp'] == $mdp )
et puis le mie c de mettre $_POST['mdp'], si t en php >= 4.1.0

Reply

Marsh Posté le 26-06-2002 à 19:41:58    

1. Je sais pas si ça change qqch mais j'ai l'habitude de mettre session_register() avant d'affecter la variable.
 
2.

Code :
  1. if ($data['mdp']='$mdp')

C totalement n'importe.. Ca veut dire que juste après le if qui sera tjrs true $data['mdp'] contiendra '$mdp', et pas le contenu de $mdp !!!!!
Faut mettre comme a mis --Stan--.
 
3. Autre possiblité et c'est certainement là le pb. Tu es sur Free.fr ou Online, tu a mis enctype="multipart..." dans le <form> or Free refuse ça en PHP4 (en 3 ça fonctionne) ! Donc enlève le enctype et normalement tt devrait aller mieux.

Reply

Marsh Posté le 26-06-2002 à 22:02:23    

Pour ton histoire de session_start, regardes si dans ton include tu fais pas de echo ou print ...
 
Ensuite, j'ai un petit code pour toi, qui te permet de faire un override des register_globals :
 

if ( function_exists('ini_get') ) {
 $onoff = ini_get('register_globals');
} else {
 $onoff = get_cfg_var('register_globals');
}
if ($onoff != 1) {
 @extract($HTTP_SERVER_VARS, EXTR_SKIP);
 @extract($HTTP_COOKIE_VARS, EXTR_SKIP);
 @extract($HTTP_POST_FILES, EXTR_SKIP);
 @extract($HTTP_POST_VARS, EXTR_SKIP);
 @extract($HTTP_GET_VARS, EXTR_SKIP);
 @extract($HTTP_ENV_VARS, EXTR_SKIP);
}


Tu nous mets ça en tout premier dans ton script et tu réésayes ;)
 
Ensuite, je regarde ton code d'authentification, tu peux l'améliorer ... non seulement tu n'encrypte pas le mot de passe avant de le stocker dans ta base (ça peut se comprendre ...), mais tu as des lignes pour rien : une bonne synthaxe SQL te permet d'aller bcp plus vite.
 
Ton code :

 <?
  include("log.inc.php" );
   
  $sql="SELECT * FROM utilisateur WHERE pseudo = '$nom'";
  $req=mysql_query($sql);
  $logstate=0;
  while ($data=mysql_fetch_array($req))  
   {
     if ($data['mdp']='$mdp')
      {  
        $login=$nom;
        $password=$mdp;
        session_register("login" );
        session_register("password" );
        $logstate=1;
      }
   }
   
  if ($logstate==1)
   {
     echo "<font color=\"#FFFF00\" size=\"2\"><b>";
     session_start();
     echo $login;
     echo "</b></font><br><font color=\"#000033\" size=\"2\"><a href=\"menu1.php\">Déconnexion</a></font>";
   }
  else
   {
     echo "<br>Mauvais log ou mdp<br>";
     session_destroy();  
   }
   
  ?>


 
Le mien :

 <?
session_start();
 
if ( function_exists('ini_get') ) {
 $onoff = ini_get('register_globals');
} else {
 $onoff = get_cfg_var('register_globals');
}
if ($onoff != 1) {
 @extract($HTTP_SERVER_VARS, EXTR_SKIP);
 @extract($HTTP_COOKIE_VARS, EXTR_SKIP);
 @extract($HTTP_POST_FILES, EXTR_SKIP);
 @extract($HTTP_POST_VARS, EXTR_SKIP);
 @extract($HTTP_GET_VARS, EXTR_SKIP);
 @extract($HTTP_ENV_VARS, EXTR_SKIP);
}
 
include("log.inc.php" );
 
$sql="SELECT * FROM utilisateur WHERE pseudo = '$nom' AND mdp='$mdp'";
$result = mysql_query($sql);
 
if(@mysql_num_rows($result)){
        $login=$nom;
        $password=$mdp;
        session_register("login" );
        session_register("password" );
        $logstate=1;
        echo '<font color="#FFFF00" size="2"><b>'.$login.'</b></font><br><font color="#000033" size="2"><a href="menu1.php">Déconnexion</a></font>';}
else {
echo "<b>Mauvais log ou mdp</b>";
$logstate=0;
}
?>


Message édité par - Fred - le 26-06-2002 à 22:13:27

---------------
"You know the name, You know the number..."
Reply

Marsh Posté le 27-06-2002 à 15:52:48    

Je me fais chier à faire un listing de fou à 22h30 et personne répond :D


---------------
"You know the name, You know the number..."
Reply

Marsh Posté le 27-06-2002 à 16:48:17    

- Fred - >> Tu parles d'optimiser la requête SQL. Je sais pas si c'est plus rapide de faire :

Code :
  1. SELECT COUNT(*) AS cpt FROM utilisateur WHERE pseudo='$nom' AND mdp='$mdp'

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed