Inclusion et sessions... conception à revoir?

Eléphanteau du PHP | 36 Messages

24 avr. 2006, 10:56

Bonjour,

Encore un problème en ce lundi matin. J'espère le dernier.

Je suis toujours sur mon put*** de site et cette fois-çi c'est l'architecture qui pose problème.

J'ai une page statique qui inclue dans une zone un script qui charge dynamiquement une autre page. Voici le code de la partie "centrale" :

Code : Tout sélectionner

<?php if(!isset($_GET['page'])){ include('accueil.php'); } else { if(file_exists($_GET['page'])){ include($_GET['page']); } else{ echo ("<h3>Cette page n'existe pas!</h3>"); } } ?>
Index.php inclue donc acceuil.php par défaut etc... Pour l'instant aucun problème sauf pour créer des sessions. Comme il y a du code html dans index.php, si toto.php veut créer une session et qu'elle est incluse dans index.php ça ne fonctionne pas. Idem pour les cookies.


Image

Quelle serait la meilleure solution pour résoudre ce problème?
merci,

ViPHP
ViPHP | 3607 Messages

24 avr. 2006, 12:48

la meilleure solution c'est de changer de place la fonction session_start() ( au moins pour les sessions, pour les cookies je sais pas faire...
moi je ferait comme ça:
<?php
session_start();
 
  if(!isset($_GET['page'])){
    include('accueil.php');//enlevre le session_start() de ce fichier
    }
   
    else {
      if(file_exists($_GET['page'])){
        include($_GET['page']);//enlevre le session_start() de ce fichier
        }
       
        else{
          echo ("<h3>Cette page n'existe pas!</h3>");
          }
      }
      ?> 

Eléphanteau du PHP | 36 Messages

24 avr. 2006, 14:10

la meilleure solution c'est de changer de place la fonction session_start() ( au moins pour les sessions, pour les cookies je sais pas faire...
moi je ferait comme ça:
<?php
session_start();
 
  if(!isset($_GET['page'])){
    include('accueil.php');//enlevre le session_start() de ce fichier
    }
   
    else {
      if(file_exists($_GET['page'])){
        include($_GET['page']);//enlevre le session_start() de ce fichier
        }
       
        else{
          echo ("<h3>Cette page n'existe pas!</h3>");
          }
      }
      ?> 
En gros j'ai une session en permanence alors?

Invité
Invité n'ayant pas de compte PHPfrance

24 avr. 2006, 15:16

ou sinon, je pense que tu peux faire autre chose, comme ça:
<?php

  if(!isset($_GET['page'])){
    //pas de session_start() parcequ'il yen a pas besoin (je sais pas j'imagine)
    include('accueil.php');//enlevre le session_start() de ce fichier
    }
   
    else {
      if(file_exists($_GET['page'])){
        //page qui a besoin des sessions
        session_start();
        include($_GET['page']);//enlevre le session_start() de ce fichier
        }
       
        else{
          echo ("<h3>Cette page n'existe pas!</h3>");
          }
      }
      ?>

Eléphanteau du PHP | 36 Messages

24 avr. 2006, 17:06

ou sinon, je pense que tu peux faire autre chose, comme ça:
<?php

  if(!isset($_GET['page'])){
    //pas de session_start() parcequ'il yen a pas besoin (je sais pas j'imagine)
    include('accueil.php');//enlevre le session_start() de ce fichier
    }
   
    else {
      if(file_exists($_GET['page'])){
        //page qui a besoin des sessions
        session_start();
        include($_GET['page']);//enlevre le session_start() de ce fichier
        }
       
        else{
          echo ("<h3>Cette page n'existe pas!</h3>");
          }
      }
      ?>

non car j'ai du html avant... ça ne fonctionne pas. Mais j'ai réussi à me débrouiller en mettant le session_start tout en haut de ma page. c'est un peu du bricolage mais pour ce que je veux faire ça fonctionne et ça suffit.
Cela m'oblige à créer une session à chaque fois que l'on arrive sur ce site, je ne pense pas que cela soit gênant...