Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1442 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [résolu] session_start()

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[résolu] session_start()

n°1396904
oli1987
Posté le 28-06-2006 à 21:44:26  profilanswer
 

Bonsoir,
 
Je viens de créer une zone membres.
Lorsque l'internaute s'y connecte avec les données correctes, il tombe sur une page d'erreur :
 
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /home/www/210749426b69527e61e114f8cf14a606/web/menu.php:38) in /home/www/210749426b69527e61e114f8cf14a606/web/Private/accueil.php on line 29
 
Mon code est le suivant, pouvez vous m'expliquer ce qui est anormal dans celui ci ? merci :
 

Code :
  1. <?php
  2. $pseudo = $_POST['pseudo'];
  3. $mdp = $_POST['mdp'];
  4. $db = mysql_connect('localhost', ***, ***); 
  5. mysql_select_db('users',$db);                   
  6. $req = mysql_query('SELECT mdp FROM users');           
  7. if($pseudo=='' || $mdp=='')
  8.     {
  9.     echo '<p>Vous avez oublié de remplir un champ.</p>';
  10.     exit;
  11.     }
  12. // on recupère le password de la table qui correspond au login du visiteur  
  13. $sql = "SELECT mdp FROM users WHERE pseudo='$pseudo'";
  14. $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
  15. $data = mysql_fetch_array($req);
  16. if($data['mdp'] != $mdp)
  17.     {
  18.     echo '<p>Mauvais login et/ou mot de passe. Merci de recommencer</p>';
  19.     exit;
  20.     }
  21. else
  22.     {
  23.     session_start();
  24.     session_register('pseudo');
  25.    
  26.     echo '<p align="center"><font face="verdana" size="2"><b>Vous êtes logué en tant que </b></font></p>'.$_SESSION['pseudo'];
  27.     // ici vous pouvez afficher un lien pour renvoyer   
  28.     // vers la page d'acueil de votre espace membres  
  29.     }
  30. mysql_close($db); 
  31. ?>


Message édité par oli1987 le 01-07-2006 à 10:42:15
mood
Publicité
Posté le 28-06-2006 à 21:44:26  profilanswer
 

n°1396917
naceroth
Posté le 28-06-2006 à 22:38:45  profilanswer
 

Je vais encore être désagréable, mais le manuel est pas là pour faire joli, on trouve aussi des réponses dedans.
 
Par exemple, celui de session_start() nous dit

Citation :

Note :  Si vous utilisez des sessions basées sur les cookies, vous devez appeler session_start() avant d'afficher quoi que ce soit au navigateur.


 
Ce qui, vu que la page mise en cause par le message d'erreur n'est pas celle où se produit le message d'erreur me fait penser que tu fais un include de ta page dans une page qui elle affiche déjà quelque chose à l'écran.
 
J'ai bon ?

n°1396938
newneo2001
Posté le 28-06-2006 à 23:18:56  profilanswer
 

oui c'est ca
 
de toute facon le  
 
else
   {
   session_start();
   session_register('pseudo');  
 
ne sert strictement à rien puisque session_start() doit être lancé avant n'importe quelle sortie navigateur.
donc tout en haut de ta page, et cela sur TOUTES tes pages.
 
++

n°1396974
oli1987
Posté le 29-06-2006 à 00:24:18  profilanswer
 

juste, autant pour moi.
Merci de ce rappel ;)

n°1396987
oli1987
Posté le 29-06-2006 à 00:58:29  profilanswer
 

j'ai besoin d'un conseil.
une fois la session démarrée, est ce que c'est tout aussi utile et sécurisé d'utiliser le code suivant pour déterminer si l'internaute est bien logué ???
 

Code :
  1. <?php
  2. if ($_SESSION['pseudo'] == ''){
  3. echo 'Vous n\'êtes pas logué';
  4. }
  5. else
  6. {
  7. echo 'salut '.$_SESSION['pseudo'];
  8. }
  9. ?>

n°1396989
dwogsi
Défaillance cérébrale...
Posté le 29-06-2006 à 01:06:05  profilanswer
 

Pas sécurisé à mon gout!

n°1397060
oli1987
Posté le 29-06-2006 à 11:00:32  profilanswer
 

pourquoi ? qu'est ce qui est plus approprié ? les cookies ?

n°1397149
tabb
Posté le 29-06-2006 à 12:35:02  profilanswer
 

oli1987 a écrit :


Code :
  1. <?php
  2. if ($_SESSION['pseudo'] == ''){
  3. echo 'Vous n\'êtes pas logué';



 
Si ton $_SESSION['pseudo'] est nul alors il n'est pas loggué. ok. Donc d'apres ton code si $_SESSION['pseudo'] est autre que nul, on est loggué.
Donc si on peut faire passer 'toto' (ou nimporte quel autre chose tant qu'il est != de null) à $_SESSION['pseudo'], alors toto aura access a ton else qui contient surement la zone membre...

n°1397154
oli1987
Posté le 29-06-2006 à 12:39:05  profilanswer
 

comment tu vas faire passer toto si le formulaire se situe deux pages avant ???

n°1397160
tabb
Posté le 29-06-2006 à 13:07:44  profilanswer
 

Je connais pas ton code entier.. en regardant la source tu vois ce qui est passé en parametre de ton fichier php qui recevra ton formulaire. Je ne dis pas que c'est facile.
Et encore moins faisable car je ne connais pas ton code :p

mood
Publicité
Posté le 29-06-2006 à 13:07:44  profilanswer
 

n°1398437
supermofo
Hello World !
Posté le 01-07-2006 à 08:43:51  profilanswer
 

ob_start


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [résolu] session_start()

 

Sujets relatifs
[resolu]besoin aide pour Jointureprobleme de double boucle et variables... [résolu]
[résolu] gérer le clic droit sur un bouton[Resolu] [SDL] taille d'une image en px
[Résolu]Div position absolute[resolu]Le deffilement souris!
référence indéfinie vers « __ctype_b » [Résolu][resolu]Pause
[Javascript] [Résolu] createElement et IE[resolu] nombre de noeuds correspondants à plusieurs critères
Plus de sujets relatifs à : [résolu] session_start()


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR