On 14 March 2011 12:14, DELiTH <t...@bytecode.se> wrote:
> Richard Quadling wrote:
>
>> 2011/3/14 Richard Quadling <rquadl...@gmail.com>:
>>
>> And where is my UNDO button.
>>
>> Essentially, having exit in the eval code is no different to having it
>> in non-eval code. eval isn't a separate entity which can be
>> terminated.
>>
>> So, code the eval code differently.
>>
>> If you can provide some examples, maybe we can come up with a better 
>> solution.
>>
>>
>>
>
> I'm developing a kind of sandbox where you will be able to run a script
> without affecting your current context. The script is loaded and parsed
> which gives me the opportunity to allow or deny functions and classes
> used in the script.
> The only problem I have so far is the exit function which, it if is
> allowed, terminates the calling script as well as the eval'ed script.
>
> By using a return the problem is solved as long as the user doesn't
> write a function containing an exit.
>
> Here is a simple script thet the user might write (probably as useful as
> a "Hello, world!".
>
> <?php
> function DoSomethingOrExit($test) {
>  if($test == 1) {
>    exit;
>  }
>  return;
> }
>
> DoSomethingOrExit(0);
> echo "Hello";
> DoSomethingOrExit(1);
> echo ", world!";
> exit;
> echo "Bye";
> ?>
>
> By replacing exit with return this code will echo "Hello, world!" before
> returning without echoing "Bye".
>
>
> Another perfect solution would be if there was a way to trigger an error
> within the eval'ed script that "crashes" it and returns to the calling
> script. But then it just comes back to the entity-problem as you pointed
> out.
>
>
> /Thomas
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>

Why not just invoke a separate instance of PHP using exec() ?

Or take a look at runkit/runkit_Sandbox :
http://uk.php.net/manual/en/book.runkit.php

-- 
Richard Quadling
Twitter : EE : Zend
@RQuadling : e-e.com/M_248814.html : bit.ly/9O8vFY

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to