【发布时间】:2015-06-14 07:37:17
【问题描述】:
我的问题是我想为循环中的每个 $i 增量创建一个按钮,并且单击一个按钮时,我必须调用另一个 PHP 文件的包含,但将参数(链接)传递给包括PHP。 所以这是我尝试过的:
for($i=0;$i<64;$i++){
$link="https://www.google.fr/search?q=$i"; //for example
echo '
<form method="post">
<button name="button$link">Hello</button>
</form>';
// generate random string to have random variable name (unique)
$seed = str_split('abcdefghijklmnopqrstuvwxyz'.'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.'0123456789');
shuffle($seed);
$rand = '';
foreach (array_rand($seed, 5) as $k){
$rand .= $seed[$k];
}
$$rand=$link; //puts the parameter (link) in the dynamic variable
if(isset($_POST["button$$rand"])){
include("other.php"); // $$rand is used in that function
}
}
所以我尝试使用动态变量,但是由于“检查按钮是否被点击”的部分在循环之外完成了它的工作,我无法获得正确的按钮名称。
【问题讨论】:
-
您想通过随机字符串创建动态变量吗?这不是很危险吗?如果不小心覆盖了其他变量怎么办?对不起,但你真的应该改变这种方法。至少将动态变量放在某个特定容器(数组)中,这样更健壮。
-
除此之外,依赖 post 值包含额外的代码也是非常危险的。每个人都可以轻松伪造此类帖子数据,因此每个人都可以在您的代码中包含任意脚本并欺骗您运行这些脚本!甚至可能是远程脚本!
-
最后:我不明白最终
include声明背后的想法:include只需要一个参数,即文件名。然而,您交出由空格分隔的 两个 参数。 为什么?这是什么意思? -
关于您的具体问题的最后一点说明:我的印象是您在这里以某种方式混合了单独的请求。对此脚本的发布请求应如何准确包含您刚刚在此脚本中创建的随机字符串?
-
if(isset($_POST["button$$rand"])){ include("other.php $$rand"); }不起作用
标签: php loops button parameters onclick