【问题标题】:How to convert an html submit button to a link in php如何将html提交按钮转换为php中的链接
【发布时间】:2011-09-05 05:41:54
【问题描述】:

我有一个提交按钮来删除用户:

 <form class="spform" action="<?=$_SERVER['PHP_SELF']?>" method="post" name="userdetails" onsubmit=""> 
   <input type="submit"' name="remove_user[<?=$i?>]" id="formButton" value="Remove" /> 
</form> 

我的脚本删除用户如下:

if (isset($_POST['remove_user']))
{
    for ($j = 1; $j <= $_SESSION['highest_user_index']; $j++)
    {
        if (array_key_exists($j, $_POST['remove_user']))
        {
            // remove user details from session variables
            unset($_SESSION["delegate".$j]);
            $_SESSION['number_of_usesr'] = $_SESSION['number_of_users'] - 1;
        }
    }
}

现在我想将提交按钮更改为链接。我该怎么做?

【问题讨论】:

    标签: php html


    【解决方案1】:

    您不想将按钮更改为链接,因为链接会发出 GET 请求和GET requests are supposed to be safe and idempotent。当您再次获取 URI 时,每次都应该发生同样的事情。删除用户后,就无法再这样做了。

    此外,当机器人或蜘蛛可以索引您的页面时,删除链接而不是按钮可能会成为一个问题。您不会是第一个丢失整个用户数据库的人,因为某些机器人触发了这些链接。

    另请注意,使用 JavaScript 的建议解决方案不被视为良好做法,不鼓励使用:

    【讨论】:

      【解决方案2】:

      你可以使用javascript:

      <form class="spform" action="<?=$_SERVER['PHP_SELF']?>" method="post" name="userdetails" onsubmit=""> 
         <a href="javascript: submitform()">Delete user</a>
         <input type="hidden" name="remove_user[<?=$i?>]" value="Remove" /> 
      </form>
      
      <script type="text/javascript">
      function submitform()
      {
        document.userdetails.submit();
      }
      </script>
      

      或带有 GET 参数的链接:

      <a href="<?php echo $_SERVER['PHP_SELF']."?remove_user=1&userid=".$i ?>">Delete user</a>
      

      在您的服务器端代码中,您必须读出获取参数

       if (isset($_GET['remove_user']))
       {
           userid = $_GET['userid'];
      
       }
      

      如果代码有任何错误我没有尝试,请见谅

      【讨论】:

      • 但点击删除用户后会删除所有用户
      • 我只想删除选定的用户而不是全部
      【解决方案3】:
      <form name="userdetails" onSubmit="return false;"><a href="javascript: submitform()">delete user</a></form>
      
      
      <script type="text/javascript">
      function submitform(){
       document.userdetails.submit();}</script>
      

      在这里,href 将像提交按钮一样起作用。 post 值和表单操作将保持原样。

      【讨论】:

        猜你喜欢
        • 2012-07-26
        • 2010-10-17
        • 1970-01-01
        • 2016-01-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多