我在 PHP 5.3.15 上的 VPS (Linux) 上运行 CentOS。我需要知道如何发布获取数据。当我进入页面时,它是空白的。
代码如下:
第一次尝试:
$a = $_POST['a'];
$c = $_POST['b'];
$c = $_POST['c'];
$d = $_POST['d'];
$k = include("newb.php?a=$a&b=$b&c=$c&&d=$d");
exec("php newb.php?a=$a&b=$b&c=$c&&d=$d");
第二次尝试:
$a = $_POST['a'];
$c = $_POST['b'];
$c = $_POST['c'];
$d = $_POST['d'];
$k = include("newb.php?a=$a&b=$b&c=$c&&d=$d");
exec("php $k");
无需对包含使用查询字符串(对于不起作用的初学者)。查询字符串是 URI 的一部分。你那里没有URI,它只是一些文件名。
包含的文件已经可以访问定义的变量。
附言您为变量命名的名称并不清晰易懂;)
附言你想做什么?因为几乎可以肯定有更好的方法。
查询字符串(带 ?key=value
的部分)是 URL 的一部分。它只能在您的地址栏中工作。不能使用查询字符串调用命令行脚本,也不能对包含的文件使用它们。
-
对于包含的文件,只需包含该文件,它将可以访问您声明的任何变量:
include("newb.php");
-
对于已执行的文件,将参数传递给命令,就像在命令行上一样:一次一个,用空格分隔:
exec("php newb.php $a $b $c $d");
然后,通过
$argv
.
请注意,您的代码中存在一个严重的漏洞。您正在传递要在命令行上执行的任意值。如果攻击者将"`rm -rf /`"
发布到您的程序中,您将盲目删除服务器上的每个文件。您绝不能盲目地将用户提交的数据作为代码执行,这实际上是您在这里所做的。