Petite question sur les sessions sessions_start()

Block
Invité n'ayant pas de compte PHPfrance

06 nov. 2005, 20:51

Bonsoir amis du php,
J'aurais bien aimé savoir ce que signifiait cela :
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/xxx/public_html/web/index.php:2) in /home/xxx/public_html/web/index.php on line 66
j'ai ceci qui s'affiche avec ce code :
<? session_start(); 
				  if(!session_is_registered(pseudo)) { 
				// On affiche ce message d'erreur 
				  include ('_files/_perso/auth.php'); 
				  }
				  // sinon, la session "login" est enregistrée 
					else { 
					// On affiche le message de bienvenue 
					echo "<center>Bienvenu sur votre espace membre $pseudo</center>"; 
					} 

				  ?>
Je ne comprend pas pourquoi il n'affiche pas
Bienvenu sur votre espace membre $pseudo
Merci de m'expliquer :)

Mammouth du PHP | 19672 Messages

06 nov. 2005, 21:05

Avec session_start(), on utilise pas
session_is_regstered(pseudo)
mais
isset($_SESSION['pseudo'])
Ceci dit, si tu as une erreur comme celle affichée, c'est parce que du contenu a déjà été envoyé vers le navigateur à cet endroit du script : session_start() doit être expréssément la première ligne de la page. Si ton script est inclus dans un autre, alors c'est dans l'autre qu'il faut mettre le session_start et non dans le fichier inclus.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Block
Invité n'ayant pas de compte PHPfrance

06 nov. 2005, 21:10

Merci, mais maitenant j'ai cette erreur :
Parse error: parse error, unexpected T_INCLUDE in /home/lanato/public_html/web/index.php on line 69
Cela signifie quoi? MErci[/code]

Mammouth du PHP | 19672 Messages

06 nov. 2005, 21:11

Sans voir le code, aucune idée, mais je parie pour un ";" oublié à la fin de l'instruction de la ligne précédente.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Block
Invité n'ayant pas de compte PHPfrance

06 nov. 2005, 21:16

Voilà le code modifié :
				  <? session_start(); 
				  isset($_SESSION['pseudo']);
				// On affiche ce message d'erreur 
				  include('_files/_perso/auth.php'); 
				  // sinon, la session "login" est enregistrée 
					else 
					// On affiche le message de bienvenue 
					echo "<center>Bienvenu sur votre espace membre $pseudo</center>"; 
				  ?>
Cela ne colle pas, d'ou vient le problème? j'ai à peu prés tout essayé, j'ai encore du mal comprendre quelque chose :(

Thx

Eléphanteau du PHP | 33 Messages

06 nov. 2005, 21:39

voilà la correction
<? session_start();
                 if(isset($_SESSION['pseudo']))
                // On affiche ce message d'erreur
                  include('_files/_perso/auth.php');
                  // sinon, la session "login" est enregistrée
                    else
                    // On affiche le message de bienvenue
                    echo "<center>Bienvenu sur votre espace membre $pseudo</center>";
                  ?>


Eléphant du PHP | 63 Messages

06 nov. 2005, 21:42

Perdu cyranon :lol:

Block
Invité n'ayant pas de compte PHPfrance

06 nov. 2005, 22:01

Perdu, j'avais déja essayé ca.
Cela me donne :
Parse error: parse error, unexpected T_ELSE in /home/xxx/public_html/web/index.php on line 71
Une idée, une suggestion?? Thx

Block
Invité n'ayant pas de compte PHPfrance

06 nov. 2005, 22:02

Perdu, j'avais déja essayé ca.
Cela me donne :
Parse error: parse error, unexpected T_ELSE in /home/xxx/public_html/web/index.php on line 71
Une idée, une suggestion?? Thx

Eléphant du PHP | 55 Messages

06 nov. 2005, 22:06

faur rajouter les {}.
<? session_start();
                 if(isset($_SESSION['pseudo'])) {
                // On affiche ce message d'erreur
                  include('_files/_perso/auth.php');
                  // sinon, la session "login" est enregistrée
                   } else {
                    // On affiche le message de bienvenue
                    echo "<center>Bienvenu sur votre espace membre $pseudo</center>";
                 }
                  ?>
Mais qu'importe..

Eléphanteau du PHP | 33 Messages

06 nov. 2005, 22:07

dans le include normalment ce sont des "" et non pas des ''
include("_files/_perso/auth.php");
essaye toujours sinon moi après je peux plus t'aider, faudra attendre le chef

Block
Invité n'ayant pas de compte PHPfrance

06 nov. 2005, 22:18

Arf lol c'est bon. Il suffisait de mettre
session_start(); 
tout en haut de la page ;)

Merci à tous...

Mammouth du PHP | 19672 Messages

07 nov. 2005, 00:52

J'ajouterais quand même une chose : le test est incomplet :
<?php
session_start();
if(!isset($_SESSION['pseudo']) || empty($_SESSION['pseudo']))
{
    // On affiche ce message d'erreur
    include('_files/_perso/auth.php');
}
// sinon, la session "login" est enregistrée
else
{
    // On affiche le message de bienvenue
    echo "<center>Bienvenu sur votre espace membre $pseudo</center>";
}
?>
Là, on vérifie non seulement que la variable de session existe mais également qu'elle n'est pas vide.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: