将字符串作为PHP代码运行

时间:2014-05-03 08:05:24

标签: php

我想要实现一些目标,但我不知道我该怎么做。

例如,检查此脚本。

<?php

function runscript()
{
unlink('./images/a.php');
}
?>

我希望以特定的方式运行

我看了要以字符串

分配的脚本unlink('./images/a.php');

对于conceptualy说,像这样

$a = "unlink('./images/a.php');";

然后我想以某种方式执行脚本来运行$ a,这将最终运行 -

unlink('./images/a.php');

说出这样的话

eval($a);

我怎样才能实现这个目标...... ??

4 个答案:

答案 0 :(得分:1)

在大多数情况下,使用eval存在安全风险和错误策略的证据。

如果您不想污染全局范围使用命名空间(您甚至可以在php 5.6中导入和别名命名空间函数)。

如果您希望能够在代码中移动函数(例如,对于回调或插件系统等...),您可以使用闭包。

<?php
// php 5.3+
$a = function($file) {
    unlink($file);
};

// later:
$a('./data/delete.me');

答案 1 :(得分:0)

我不确定你会成功,但你会这样尝试。这样的

$a= unlink('./images/a.php'); 
if($a)
 {
  echo "successful";
 }
else
 {
   echo "not successful";
 }

可能会对你有所帮助。祝你好运!

答案 2 :(得分:0)

您可以将代码设为tmp文件并将其包含在内

<?php
$code = $_POST['code'];
//uniqid for random folder
$id = uniqid();
$f = fopen($id . ".php" , 'w');
fwrite($f , $code);
fclose($f);
header("Location: view_code.php?id=" . $id);
?>

然后是你的viewcode.php

<?php
$id = $_GET['id'];
//code to run then
include($id . ".php");
?>

答案 3 :(得分:0)

试试这个:

$a= "unlink('./images/a.php');"; eval($a);

您可以使用eval()来评估字符串语句

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