Include code from a PHP stream

后端 未结 4 483
旧巷少年郎
旧巷少年郎 2021-01-06 18:16

I\'m wondering if it is at all possible to create a stream wrapper in order to load some code from an array into using something like the following



        
相关标签:
4条回答
  • 2021-01-06 18:38

    eval, the word, isn't evil. Things you can do with it are. Any means of doing what you want will have the same risk as eval. So just use eval, since securing it is a more 'known' problem.

    0 讨论(0)
  • 2021-01-06 18:39

    I know this is an old question...but I think it's worth noting that you can do something like:

    $content = '
      <?php if($var=true): ?>
        print this html
      <?php endif; ?>
    ';
    

    Normally this would very cumbersome to eval, but you can do:

    include "data://text/plain;base64,".base64_encode($content);
    

    And it will parse it snappy like!

    0 讨论(0)
  • 2021-01-06 18:42

    Since include can use any appropriate stream and you can register your own stream wrapper, I don't see why not.

    Just for fun you could try an alternative: load your data from memcached and include it using the data stream wrapper.

    0 讨论(0)
  • 2021-01-06 18:43

    Include can take arbitrary urls. Read this. Here is an example HTTP code taken from there:

    <?php
    
    /* This example assumes that www.example.com is configured to parse .php
    * files and not .txt files. Also, 'Works' here means that the variables
    * $foo and $bar are available within the included file. */
    
    // Won't work; file.txt wasn't handled by www.example.com as PHP
    include 'http://www.example.com/file.txt?foo=1&bar=2';
    
    // Won't work; looks for a file named 'file.php?foo=1&bar=2' on the
    // local filesystem.
    include 'file.php?foo=1&bar=2';
    
    // Works.
    include 'http://www.example.com/file.php?foo=1&bar=2';
    
    $foo = 1;
    $bar = 2;
    include 'file.txt';  // Works.
    include 'file.php';  // Works.
    
    ?>
    

    And just change it to include "template://$thevalue";

    0 讨论(0)
提交回复
热议问题