【问题标题】:PHP buttons in 'for' and onclick with parameter'for' 中的 PHP 按钮和带有参数的 onclick
【发布时间】: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


【解决方案1】:

我已经找到了解决办法! 我用过ajax。 所以在每个按钮上都会调用一个 ajax 函数,你可以将一个参数传递给 ajax 函数(在我的例子中是一个链接)

应该是这样的:

<button onclick="function('parameter')">

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-20
    • 2023-04-08
    • 1970-01-01
    • 2022-01-15
    相关资源
    最近更新 更多