Bonjour,

Voilà, je suis nouveau en PHP et je me retrouve confronté à un problème:

J'ai 2 objets que je voudrais rendre globaux à l'application, c'est à dire que je voudrais les instancier une fois lors de la demande de "index.php", et ensuite pouvoir les utiliser.

Mon application est très simple, elle a 3 menus qui lorsqu'on clique dessus rechargent "index.php" en lui passant des paramètres dans l'URL afin d'en déterminer le contenu.

Seulement voilà: Quand la page index.php se recharge, mes objets globaux se réinitialisent aussi! Du coup je perd toutes les infos que j'avais stockées...

Un objet global sert pour la connection à la base de données, et l'autre à la gestion de l'utilisateur loggué.

Voici le code simplifié:

index.php

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
 
 
<?php 
 
// Initialisations
include("Init/initIncludesPaths.php") ; // Initialisation des includes
include("Init/initObjects.php") ; // Initialisation des objets --> code qui pose problème
 
?>
 
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml'>
 
<head>
 
<title>Un titre</title>
 
</head>
<body>
 
<div id='page_wrapper'>
  <div id='page_header'>
    <?php include("InterfaceGraphique/Template/page_header.php")?>
  </div>
  <div id='menu_bar'>
    <div id='navcontainer'>
      <ul id='navlist'>
   	<?php include("InterfaceGraphique/Template/navlist.php")?>
      </ul>
    </div>
  </div>
  <div id='content_wrapper'>
    <div id='left_side'>
     	<?php include("InterfaceGraphique/Template/left_side.php")?>
    </div>
    <div id='right_side'>
    	<?php include("InterfaceGraphique/Template/right_side.php")?>
    </div>
    <div id='center'>
    	<?php include("InterfaceGraphique/Template/center.php")?>           
    </div>
  </div>
  <div id='page_footer'>
  		<?php include("InterfaceGraphique/Template/page_footer.php")?>  
  </div>
</div>
</body>
</html>
Le code qui pose problème se trouve dans "initObjects.php". En effet, a chaque fois que la page est chargée, bien que j'ai mis les objets dans des variables globales, ceux-ci sont toujours inexistants lors du chargement....

initObjects.php

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
 
 
<?php
 
// Initialisation de la BD si l'utilisateur n'y est pas connecté
initDatabase();
 
// Initialisation de la session si l'utilisateur n'est pas loggué
initSessionDefaults();
 
// Initialisation de l'objet utilisateur
initUser() ;
 
// Initialisation de l'objet utilisateur
function initUser()
{
 
if(!isset($GLOBALS['user'])) 
	{
		// Problème, passe toujours ici à chaque chargement 
		// de index.php!
		$GLOBALS['user']= new user() ; 
	}
 
	//Si on est en train de logguer
	$page = params::getParamFromURL('page', 'POST') ;
 
	if(isset($page))
	{
		// Essayer de logguer l'utilisateur
		$login = params::getParamFromURL('login', 'POST') ;
		$pass = params::getParamFromURL('pass', 'POST') ; 
 
		if(isset($login) && isset($pass))
		{
			$GLOBALS['user']->checkLogin($login, $pass, false) ;
 
			if($GLOBALS['user']->failed == true)
			{
			   navigation::gotoLogin();
			}
			else
			{
				navigation::gotoAcceuil();
			}
		}
	}
 
}
// Fonction qui initalise la connection à la base de données
function initDatabase()
{
	// Problème, passe toujours ici à chaque chargement 
		// de index.php!
	if(!isset($GLOBALS['adressesBD']))
	{
		$GLOBALS['adressesBD']= new adressesBD() ; 
 
		// On se connecte de suite à la base
		$GLOBALS['adressesBD']->connect();
	}
}
 
// Fonction qui initilalise l'objet de session
function initSessionDefaults()
{
	if (!isset($_SESSION['uid']) )
	{
		$_SESSION['logged'] = false;
		$_SESSION['uid'] = 0;
		$_SESSION['username'] = '';
		$_SESSION['cookie'] = 0;
		$_SESSION['remember'] = false;
	}
}
 
?>
Du coup, je n'arrive pas à naiguer dans le site, car l'utilisateur se réinitialise à chaque appel de index.php, m'obligeant à me relogguer.

Et-ce que je fais quelque-chose de faux?

Merci pour votre aide!