IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Eval file + exit/die


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 34
    Points : 27
    Points
    27
    Par défaut Eval file + exit/die
    Bonjour,

    Voilà je cherche à faire quelque chose de ne pas très évident :


    -- getcontent.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?php
      eval("?> ".file_get_contents("data.php")." <?php");
      print("ABC");
    ?>
    -- data.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
      die("PB");
    ?>
    ## Le résultat (normal) de getcontent.php

    PB

    ## Mais je veux que le die dans le fichier data.php ne fasse effet que dans celui-ci, donc pour afficher le résultat suivant de la page getcontent.php :

    PB
    ABC


    J'espère que vous comprenez et que vous pourrez m'aider.
    Merci.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu peux définir tes conditions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    $inclusion = TRUE;
      eval("?> ".file_get_contents("data.php")." <?php");
      print("ABC");
    ?>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    echo 'PB';
    if ($inclusion == TRUE) {die();}
    ?>

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 34
    Points : 27
    Points
    27
    Par défaut
    Mais je ne peux vraiment pas exécuter le code php de data.php comme dans une requête ajax mais au sein même de php ? une sorte d'include qui execute le code php du fichier data.php puis qui renvoi le resultat... sans avoir d'incidence sur le script php maitre (getcontent.php) ??

    PS : Je sais que je suis un peu embêtant mais je dois absolument continuer l'exécution du script maitre.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Et qu'est ce qui ne te va pas dans ce que j'ai proposé ?

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 34
    Points : 27
    Points
    27
    Par défaut
    Tu die, donc ça n'affiche pas "ABC".

    Mais je viens de penser il faudrait en fait une sorte fsockopen local pour ouvrir le fichier déjà exécuté par le serveur...

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    ah oui effectivement ce que j'ai ecris ne reponds pas du tout a ton problème.

    je pense que pour pouvoir mieux te répondre il faudrait savoir pourquoi tu as besoin de ce die().

    Si tu as besoin de ne pas executer une partie de code tu pourrais faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    echo 'PB';
    if (!isset($inclusion)) {
    //suite du code
    }
    ?>

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 34
    Points : 27
    Points
    27
    Par défaut
    Wé j'y avais déjà pensé mais le problème c'est que ça va être vite le foin avec le code html qui va être mélangé par tout dans mon script alors que la un die c'est beaucoup plus clair et normalement plus pratique... mais je re-m'explique : il faudrait en fait récupérer le code déjà exécuter par le serveur directement en PHP c'est pour ça que j'utilisais l'expression "fsockopen local"...

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 34
    Points : 27
    Points
    27
    Par défaut
    J'ai enfin trouvé une solution, certains n'y verrons aucun intérêt, d'autre si, mais voici pour la communauté de developpez.net ma solution :

    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
     
    class buffer {
    	var $buffer;
     
    	function start() {
    		ob_start();
    	}
     
    	function update() {
    		$this->buffer = ob_get_contents();
    	}
     
    	function clean() {
    		ob_end_clean();
    	}
     
    	function fetch() {
    		return $this->buffer;
    	}
    }
     
    function shutdown() {
    	global $buffer;
     
    	$buffer->update();
    	$buffer->clean();
     
    	print($buffer->fetch());
    	print("ABC");
    }
     
    $buffer = new buffer();
    $buffer->start();
    register_shutdown_function("shutdown");
    eval(" ?> ".file_get_contents("data.php")." <?php ");
    -- data.php

    -- Résultat

    Voilà

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. difference entre die et exit ?
    Par ours_en_pluche dans le forum Langage
    Réponses: 2
    Dernier message: 23/07/2013, 17h14
  2. equivalent de exit ou die
    Par simou9_4 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 21/06/2008, 17h30
  3. Différent niveau d'Exit() ou de die() ?
    Par Bighobbit dans le forum Langage
    Réponses: 7
    Dernier message: 20/09/2006, 12h04
  4. A propos des 'File management Functions' de Windows
    Par znaidi dans le forum Windows
    Réponses: 3
    Dernier message: 01/04/2003, 16h01
  5. recupèrer file d'attente d'impression
    Par magic corp. dans le forum Langage
    Réponses: 2
    Dernier message: 25/09/2002, 14h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo