Gestion des sessions chez free

Gestion des sessions chez free - PHP - Programmation

Marsh Posté le 02-11-2005 à 11:58:49    

Alors voila :
 
pour faire tourner mon site en local : j utilise le bout de code suivant :
 

Code :
  1. <script type="text/javascript">
  2. <!--
  3. window.onload=montre;
  4. function montre(id) {
  5. var d = document.getElementById(id);
  6. for (var i = 1; i<=10; i++) {
  7.  if (document.getElementById('smenu'+i)) {document.getElementById('smenu'+i).style.display='none';}
  8. }
  9. if (d) {d.style.display='block';}
  10. }
  11. //-->
  12. </script>
  13. <html>
  14. <?
  15. session_start();
  16. if (session_is_registered(login) && $_SESSION[login] != ''){
  17. $ident = $_SESSION[ident];
  18. $login = $_SESSION[login];
  19. $rankid = $_SESSION[rankid];
  20. }
  21. ?>


 
ce bout de code est présent en haut de toutes mes pages. et me sert a vérifier si l utilisateur est loggué ou non.  
 
mon site tourne parfaitement en local ( easyphp) mais chez free, j ai droit a l erreur suivante :  
 

Code :
  1. Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /var/www/free.fr/a/b/toons85/naweb/index.php:1) in /var/www/free.fr/a/b/toons85/naweb/index.php on line 15
  2. Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /var/www/free.fr/a/b/toons85/naweb/index.php:1) in /var/www/free.fr/a/b/toons85/naweb/index.php on line 15


 
 
si je modifie mon script de la sorte :  
 

Code :
  1. <?
  2. session_start();
  3. if (session_is_registered(login) && $_SESSION[login] != ''){
  4. $ident = $_SESSION[ident];
  5. $login = $_SESSION[login];
  6. $rankid = $_SESSION[rankid];
  7. }
  8. ?>
  9. <script type="text/javascript">
  10. <!--
  11. window.onload=montre;
  12. function montre(id) {
  13. var d = document.getElementById(id);
  14. for (var i = 1; i<=10; i++) {
  15.  if (document.getElementById('smenu'+i)) {document.getElementById('smenu'+i).style.display='none';}
  16. }
  17. if (d) {d.style.display='block';}
  18. }
  19. //-->
  20. </script>
  21. <html>


 
mes sessions ne fonctionnent plus, ni chez free, ni en local... (j ai bien créé le repertoire sessions). mais aucune erreur ne s affiche.
 
je vous met aussi le code de ma page de login :  
 
( qui elle aussi est basée sur mon modèle et contient donc le code ci dessus en haut de page )  
 

Code :
  1. include('config.php');
  2. @mysql_connect($host,$log,$pass);
  3. @mysql_select_db($dbname);
  4. $rep = @mysql_query("select * from users where login = '".$login."' and password = '".$password."'" );
  5. $res = @mysql_fetch_array($rep);
  6. if ($res != "" )
  7.     
  8.      {
  9.     
  10.      setcookie(session_name(),session_id(),time()+3600);
  11.      $_SESSION['ident'] = $res['id'];
  12.      $_SESSION['login'] = $res['login'];
  13.      $_SESSION['rankid'] = $res['rankid'];
  14.     
  15.     
  16.      echo("<script>document.location.replace('index.php');</script>" );
  17.      }
  18.     
  19.     
  20.      ?>


 
ma requete sql fonctionne.
 
Je m'en remet donc a votre science !  
 
 

Reply

Marsh Posté le 02-11-2005 à 11:58:49   

Reply

Marsh Posté le 02-11-2005 à 12:10:41    

Salut
 
Je suppose que tu as un fichier index.php qui inclus les différentes pages php.
Je te conseil donc vivement de mettre  

Code :
  1. <?php
  2. session_start();
  3. if (session_is_registered("login" ) && $_SESSION["login"] != "" ){
  4.     $ident = $_SESSION["ident"];
  5.     $login = $_SESSION["login"];
  6.     $rankid = $_SESSION["rankid"];
  7. ?>


au tout début de tout fichier index.php :)
 
et au moment de connexion, tu ne fais pas de session_register("login" );
Donc, c'est bizarre que ton session_is_registered("login" ) marche...


---------------
+jouj+
Reply

Marsh Posté le 02-11-2005 à 12:16:53    

en fait ce bout de code est présent en haut de toutes mes pages.
( je n inclue pas mes pages dans mon index.php, mais le modèle que j utilise est appliqué a toutes les pages)  
 
pour ce qui est de stocker la variable login, je le fais dans ma page de login :  
 
$_SESSION['login'] = $res['login'];
 
cela ne fonctionne toujours pas en modifiant le code de cette maniere :
 

Code :
  1. setcookie(session_name(),session_id(),time()+3600);
  2. session_register("login" );
  3. session_register("ident" );
  4. session_register("rankid" );
  5. $_SESSION['ident'] = $res['id'];
  6. $_SESSION['login'] = $res['login'];
  7. $_SESSION['rankid'] = $res['rankid'];


Message édité par babeuf le 02-11-2005 à 12:19:59
Reply

Marsh Posté le 02-11-2005 à 12:26:23    

je pense voir d ou vient le probleme ....
 
apparement le bout de code php en tout début de mon modèle n est pas appliqué a mes pages php si il est placé avant le <html> (alors que la fonction javascript est bien prise en compte...), alors qu'il est bien pris en compte s il est placé apres celui ci .
 
 
 
qq1 voit une solution pour que ce code soit mis de facon automatique sur toutes mes pages ?

Reply

Marsh Posté le 02-11-2005 à 12:33:31    

effectivement, si je rajoute le bout de code en début de page a la main, cela fonctionne..

Reply

Marsh Posté le 02-11-2005 à 16:51:49    

Si tu veux rajouter un bout de code sur toutes tes pages tu peux faire des header et les rajouter en include ...

Reply

Sujets relatifs:

Leave a Replay

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