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

  FORUM HardWare.fr
  Programmation
  PHP

  Couper une boucle avec des includes

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Couper une boucle avec des includes

n°1952529
Pascal le ​nain
Posté le 22-12-2009 à 18:28:02  profilanswer
 

Bonjour,
 
C'est marrant, ca doit être une question archibasique, mais j'ai jamais eu affaire à ce genre de problème...
Je veux faire un backoffice rapide.
Donc je check la session à chaque page pour savoir si l'utilisateur est connecté.
J'utilise un systeme classique d'inclusions selon le schéma header/contenu/footer.
La vérification de la permission se fait à chaque début de page par une condition if dans mon header.php.
 
Le problème c'est que la boucle if commence dans le header et se termine dans le footer.
 
Et ça, ça lui plait pas, au petit php. Il préférerait que je termine ma boucle avant la fin du header.php...
 
Donc ma question est simple : n'y a-t-il pas moyen de commencer une boucle dans le header, d'ouvrir des accolades, de faire toute ma merdouille dans ma page, puis de refermer les accolades lors du footer ?
 
Merci d'avance  :hello:

mood
Publicité
Posté le 22-12-2009 à 18:28:02  profilanswer
 

n°1952538
stealth35
Posté le 22-12-2009 à 18:37:53  profilanswer
 

t'as essayer en fermant pas les balise PHP a la fin des fichiers
 
pas de '?>'
 

n°1952557
Pascal le ​nain
Posté le 22-12-2009 à 19:01:54  profilanswer
 

Mmmh ca n'aurait aucun sens  :p  
De plus j'ai du code HTML dans mon header.php juste après le check en php. C'est pour le doctype, head, toussa...
 
Mais dis-moi, c'est possible de faire ça ou bien je suis pas censé le faire ?
Parce que si je referme les accolades dans mes fichiers inclus, d'un coup il m'exécute joyeusement mon code...
Ca veut bien dit que c'est ça qui l'ennuie... Et ya aucun gros code de oufzor hein, c'est super classique comme vérification...


Message édité par Pascal le nain le 22-12-2009 à 19:03:07
n°1952565
stealth35
Posté le 22-12-2009 à 19:16:51  profilanswer
 

c'est pas terrible ouai
et ton session_start() ne devrai pas etre dans ton header
par exemple : index.php

 
Code :
  1. <?php
  2. require_once 'header.php';
  3.  
  4. blabla
  5.  
  6. require_once 'footer.php';
 

apres je voi pa trop le coup du if geant,  qui di if dis else ,  donc sinon quoi ? il affche autre chose ?


Message édité par stealth35 le 22-12-2009 à 19:18:14
n°1952575
Pascal le ​nain
Posté le 22-12-2009 à 20:18:47  profilanswer
 

La connexion utilisateur est représentée par une variable session $_SESSION['id']
 
Je veux que ma page ne soit accessible que si le visiteur est connecté.
 
Donc j'ai mon code :  
 

Code :
  1. if isset($_SESSION['id'])
  2. {
  3. ma page avec plein de trucs
  4. }
  5. else
  6. {
  7. //s'il n'est pas connecté
  8. header('location: vatefaire.php');
  9. }


 
Comme j'ai plein de page de ce genre à faire, je fais un header avec le IF et un footer avec le ELSE
 
Pourquoi ? C'est mal ?  :ange:


Message édité par Pascal le nain le 22-12-2009 à 20:22:32
n°1952582
stealth35
Posté le 22-12-2009 à 21:01:28  profilanswer
 

tu te compliques
 

Code :
  1. if(!isset($_SESSION['id']))
  2. {
  3.  header('location: vatefaire.php');
  4.  exit;
  5. }
  6.  
  7. //blabla

n°1952599
Pascal le ​nain
Posté le 22-12-2009 à 22:15:02  profilanswer
 

C'est laid  [:ex-floodeur:4]  
 
Ya vraiment rien d'autre que "exit" ??
 
Ca me gène de casser le script comme ça...
Question de...propreté... d'éthique...  :whistle:  
 
Vraiment rien d'autre ? Mmmh  [:freedatoune]

Message cité 3 fois
Message édité par Pascal le nain le 22-12-2009 à 22:18:45
n°1952621
stealth35
Posté le 22-12-2009 à 23:47:03  profilanswer
 

je sais pas, on me critique bien parce j'utilise la bufferisation de sortie alors que dans les code source de certaine grosse lib c'est utilisé
 
dans les commentaires de la doc y'a plusieur exemple avec exit;

n°1952932
CyberDenix
Posté le 23-12-2009 à 22:23:14  profilanswer
 

Le exit() permet de forcer php à ne pas continuer d'interpréter le reste du script. Placer un exit() après chaque header() est une pratique recommandée, puisque tu n'as plus besoin du reste du script...
 
Et la bufferisation de sortie, c'est le bien.
Sans ça il devient lourd de faire un système de cache dans un code contenant des require et un tas d'objets qui crachent ce que bon leur semble.


---------------
Directeur Technique (CTO)
n°1953013
art_dupond
je suis neuneu... oui oui !!
Posté le 24-12-2009 à 12:35:13  profilanswer
 

Pascal le nain a écrit :

C'est laid  [:ex-floodeur:4]  
 
Ya vraiment rien d'autre que "exit" ??
 
Ca me gène de casser le script comme ça...
Question de...propreté... d'éthique...  :whistle:  
 
Vraiment rien d'autre ? Mmmh  [:freedatoune]


tu fais la même chose mais avec des accolades qui se trouvent dans des fichiers différents et tu trouves ça laid ? :pt1cable:


---------------
oui oui
mood
Publicité
Posté le 24-12-2009 à 12:35:13  profilanswer
 

n°1953350
stealth35
Posté le 28-12-2009 à 02:32:19  profilanswer
 

sinon si t'as php >= 5.3.0  tu peu utilisé "goto"
http://www.php.net/manual/fr/contr [...] s.goto.php

Message cité 1 fois
Message édité par stealth35 le 28-12-2009 à 02:32:27
n°1953388
tomsoft
Posté le 28-12-2009 à 11:35:01  profilanswer
 

stealth35 a écrit :

sinon si t'as php >= 5.3.0  tu peu utilisé "goto"  
http://www.php.net/manual/fr/contr [...] s.goto.php


 
 :(

n°1953401
macgawel
Posté le 28-12-2009 à 13:30:18  profilanswer
 

Pascal le nain a écrit :

C'est laid  [:ex-floodeur:4]  
 
Ya vraiment rien d'autre que "exit" ??
 
Ca me gène de casser le script comme ça...
Question de...propreté... d'éthique...  :whistle:  
 
Vraiment rien d'autre ? Mmmh  [:freedatoune]


A la limite, tu peux toujours commencer par alimenter une variable en fonction du test, et la tester dans chaque include.
Ou mettre ton test dans ta page principale, et faire tes include en fonction :

Code :
  1. <?php
  2. if isset($_SESSION['id']) {
  3.   include ('header.php');
  4.   ...
  5.   include ('footer.php');
  6. }
  7. else {
  8.   header('location: vatefaire.php');
  9. }?>


Mais la solution du exit est quand même la meilleure...

n°1953584
shadok123
Posté le 29-12-2009 à 12:04:48  profilanswer
 

[troll]
Quand on veut faire propre on code en mvc
[/troll]

n°1953769
CyberDenix
Posté le 29-12-2009 à 21:38:43  profilanswer
 

Le mieux c'est quand même de faire :

Code :
  1. for ($i = 0; $i < 1024; ++$i) {
  2.  exit();
  3. }


 
Vous, ça ne vous fait peut-être rien, mais moi... ça m'exit for ! :D :D :D


Message édité par CyberDenix le 29-12-2009 à 21:39:05

---------------
Directeur Technique (CTO)
n°1953808
tomsoft
Posté le 30-12-2009 à 00:03:24  profilanswer
 

il m'a fallu environ 1024 itérations pour comprendre la blague :o

n°1954081
theredled
● REC
Posté le 30-12-2009 à 20:52:09  profilanswer
 

Pascal le nain a écrit :

C'est laid  [:ex-floodeur:4]  
 
Ya vraiment rien d'autre que "exit" ??
 
Ca me gène de casser le script comme ça...
Question de...propreté... d'éthique...  :whistle:  
 
Vraiment rien d'autre ? Mmmh  [:freedatoune]


Non exit c'est très bien. Si tu veux faire des choses à l'arret du script, utilise register_shutdown_function() etc.


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique

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

  Couper une boucle avec des includes

 

Sujets relatifs
Boucle ping dans un batch pour détecter une déconnexionPb de boucle While avec 2 bases
[Résolu - PHP] Incrémenter une variable par autre chose que +1protection des includes chgmod
URGENT : problème shell windows boucle forappel d'une fonction dans une boucle ne se réalise qu'une fois
lecture d'un flv (random)Problème avec boucle while qui ne s'arrêt pas
Pb avec les paths des includes et require[vba excel debutant] creer 1 programme en boucle
Plus de sujets relatifs à : Couper une boucle avec des includes


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