将字符串作为PHP代码运行

将字符串作为PHP代码运行,php,Php,我正在努力取得一些成就,但我不知道如何才能做到这一点 例如,检查这个脚本 <?php function runscript() { unlink('./images/a.php'); } ?> 然后我想以某种方式执行脚本来运行$a,它最终会运行- unlink('./images/a.php'); 说这样的话 $a = "unlink('./images/a.php');"; eval($a); 我怎样才能做到这一点…?我不确定你是否会成功,但你会这样尝试。这样 $a= u

我正在努力取得一些成就,但我不知道如何才能做到这一点

例如,检查这个脚本

<?php

function runscript()
{
unlink('./images/a.php');
}
?>
然后我想以某种方式执行脚本来运行$a,它最终会运行-

unlink('./images/a.php');
说这样的话

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

我怎样才能做到这一点…?

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

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

也许对你有帮助。祝你好运

您可以将代码设置为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");
?>

试试这个:


$a=“取消链接('./images/a.php');”;
评价(a美元)

可以使用eval()对字符串语句求值


参考资料:

在大多数情况下,使用eval是一种安全风险,也是错误策略的证据

如果您不想污染全局范围,请使用名称空间(您甚至可以在PHP5.6中导入和别名名称空间函数)

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

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

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

为什么要这样做?如果字符串来自用户输入,您确实意识到这是一个巨大的安全问题,对吗?此外,你已经提到了。如果您需要从分配给变量的字符串中运行PHP代码,那么您就犯了根本性的错误。你能告诉我们你为什么要这样做吗?很可能有更好的解决方案。为什么要将其放入字符串中然后执行,其已在函数中执行,而不是从函数返回true/false。显然,如果将带有“codebox name”属性的表单的页面设置为“code”