为什么这个PHP代码可以在localhost上运行,但不能在共享主机上运行?

时间:2013-02-19 02:40:13

标签: php web-hosting

我可以在MAMP上完美地执行代码,但不能在我的hostgator服务器上执行。在服务器上,文本会自动转义以防止执行。

<?php 
    if (@isset($_POST['code'])) {
        @$code = $_POST['code'];
        @eval($code);
    }
    ?>
    <head>
        <style>
            textarea{
                font-family: verdana;
                font-size:20px;
                color: #2799a0;
            }
            input[type="submit"] {
                width: 200px;
                height: 100px;
                font-size: 30px;
            }
        </style>
        <title>PHP Playground</title>
    </head>
    <form action="playground.php" method="POST">
        <textarea name="code" cols="100" rows="20"><?php echo $_POST['code']; ?></textarea><br><br>
        <input type="submit" value="Execute">
    </form>

2 个答案:

答案 0 :(得分:2)

来自php文档:(由于标记限制而减去其格式)

http://www.php.net/manual/en/function.eval.php

  

注意

     

eval()语言构造非常危险,因为它允许执行任意PHP代码。因此不鼓励使用它。如果您已经仔细验证除了使用此构造之外没有其他选择,请特别注意不要将任何用户提供的数据传递到其中,而不事先正确验证它。

如果您检查主机方案的phpinfo(),您会看到eval指令下列出了disable_functions,这意味着它无法使用。

答案 1 :(得分:0)

他们可能在eval中停用了php.ini。哪个好,因为你永远不需要使用eval() ...尤其不要以非常危险的方式使用它。

如果您没有在所有内容前面使用@来压制它们,就会看到错误。

我建议将codepad用于php操场。