1

PHP部分:

$php = $_POST['php'];

//$php = "print \"hello world\";";

if ($php != null){
    if (strlen($php) < 400){
        echo $php;
        eval($php);
        //eval("print \"hello world\";");
    }else die ("Evaluated Expression Exceeds Maximum Length");
}

LSL部分:

string php = "print \"hello world\";";

现在我将注释掉的位添加到 PHP 中以表明它可以工作。然后当 LSL 脚本发送到 PHP 时,它会返回:

print \"hello world\"; -- this line is from, 'echo $php;'

<b>Parse error</b>:  syntax error, unexpected '&quot;', expecting identifier
(T_STRING) in <b>xxxxxx.php(141) : eval()'d code</b> on line <b>1</b><br />
-- this is the error.

这与两个脚本发送数据的方式有关。我想可能与$php = $_POST['php']; 所以将其更改为$php = $_POST[php]; 结果没有变化。然后我尝试改变print \"hello world\"; 打印“你好世界”;然后它只返回错误:T_ENCAPSED_AND_WHITESPACE。

我没有在这里提供完整的来源。只有有问题的部分。它以示例状态提供。输出与源代码中看到的实际错误结果相同。lsl 脚本和 php 需要使用 eval。因为代码是由双方动态重新配置并相互发送的。从本质上讲,使两者能够相互编码。这是第二人生的游戏。

因此,如果有人知道将所需数据传入和传出脚本的实际方法。我可以使用一些建议。或者,如果我错过了一些简单的事情,就会被击中头部。

4

1 回答 1

0

来自马里奥的善意戳关闭magic_quotes。然后我在源中找到了数据在做什么。然后我最终研究并使用了以下内容: eval(stripslashes($php)); 这完全解决了这个问题。并且基于marios poke。

它与逃逸数据无关。不这么认为,因为 echo 报告得很好。这也确实是对我头部错误的一记耳光。

stripslashes — 取消引用带引号的字符串

将其投票为最佳答案,也是马里奥的最佳答案。希望他能做他的回答而不是评论。所以本来可以投票的。

于 2013-08-11T01:39:03.847 回答