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 '"', 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 \”; 更改为打印'hello world'; 然后只返回错误:T_ENCAPSED_AND_WHITESPACE。
我没有在这里提供完整的资源。只有有问题的部分。它以示例状态提供。输出与实际错误结果相同,即在源中可以看到。 lsl脚本和php需要使用eval。因为代码由两者动态地重新配置并且彼此发送。基本上赋予两者相互编码的能力。这是第二人生的游戏。
因此,如果有人知道将所需数据传递到脚本和从脚本传递所需数据的实际方法。我可以使用一些建议。如果我错过了一些简单的东西,或者在头脑中砸了一下。
答案 0 :(得分:0)
来自马里奥的那种捅来关掉magic_quotes。然后我找到了数据源中的数据。然后我最终研究并使用以下内容:eval(stripslashes($ php));这完全解决了这个问题。并基于marios戳。
它与转义数据无关。没有想到回声报道那么好。而且这也确实让我感到头疼。
stripslashes - 取消引用带引号的字符串
将此作为最佳答案投票,也是马里奥的最佳答案。希望他能够通过评论来回答他的问题。所以可以投票。