2010-06-28 17 views
2

Je n'arrive pas à comprendre pourquoi cela ne fonctionne pas. Tout d'abord j'ai une fonction comme celui-ci où le nom d'utilisateur apparaît:

if(isset($_POST['Commit'])){ 

if(empty($_POST['crime'])){ 
echo "You didn't select the type of crime you wish to do."; 
}else{ 

    (...lots of code) 

$name = $_SESSION['username'];` 

Puis-je une autre fonction où le nom d'utilisateur apparaît en blanc:

if(isset($_POST['action'])){ 

    (...) 

if(empty($_POST['car'])){ 
echo "You didn't select a car."; 
}else{ 


if($row['owner'] != $_SESSION['username']){ 
echo "This isn't your car."; 
}else{ 

Il y a allot de code que je ne l'ai pas post, mais vous avez l'idée. Pourquoi cela arrive-t-il? je pensais que $ _SESSION était globale et toujours disponible

Mon principal quelque chose comme ce look fichier php:

require("php functions\page_functions.php"); 
require("php functions\gta_functions.php"); 

session_start(); 

class gtapage extends Page 
{ 

     public function display() 
     { 

     displayGta(); 
     } 
} 

où displayGta(); est la fonction de mon premier message

Répondre

5

Est-ce que session_start() a été appelée dans le script qui utilise la deuxième fonction? $_SESSION n'est disponible que sur les pages dans lesquelles une session a été ouverte.

+0

Mis à jour mon premier message maintenant. La page principale a un session_start(); puis il appelle la fonction displayGta qui a les deux fonctions qui appelle le $ _SESSION ['nom d'utilisateur'], mais cela ne fonctionne que dans l'un d'entre eux ... – ganjan

+0

Que montre 'print_r ($ _ SESSION)' dans la deuxième fonction? – ceejayoz

+0

rien, mais j'obtiens cet avertissement: Attention: session_start() [function.session-start]: Impossible d'envoyer le limiteur de cache de session - les en-têtes déjà envoyés (sortie démarrée à C: \ xampplite \ htdocs \ Drug Empire \ php functions \ gta_functions.php: 346) dans C: \ xampplite \ htdocs \ Drug Empire \ gta.php sur la ligne 12 – ganjan