我有一个提交按钮来删除用户:
<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;
}
}
}
现在我想将提交按钮更改为链接。我该怎么做?
答案 0 :(得分:5)
您不希望将按钮更改为链接,因为链接会发出GET请求并GET requests are supposed to be safe and idempotent。再次获取URI时,每次都应该发生同样的事情。删除用户后,将无法再进行此操作。
此外,当机器人或蜘蛛可以为您的网页编制索引时,删除链接而不是按钮可能会成为一个问题。你不会是第一个失去整个用户数据库的人,因为有些机器人触发了这些链接。
另请注意,使用JavaScript的建议解决方案不被视为良好做法,不鼓励使用它们:
答案 1 :(得分:1)
您可以使用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>
在服务器端代码中,您必须读取get参数
if (isset($_GET['remove_user']))
{
userid = $_GET['userid'];
}
很抱歉,如果代码中有任何错误我没有尝试
答案 2 :(得分:0)
<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将起作用,因为它适用于提交按钮。后期值和表单操作将保持不变。