我正在尝试为用户创建一个链接,以便将其从列表中删除。我试图找出如何在不使用提交按钮和不使用$ _GET(如果可能)的情况下执行此操作。
无论如何,我害怕用$ _GET(我现在的方式)来做,因为用户可以在URL中输入这个(尽管99%不知道如何或想到这样做)和它们将从列表中删除。
如何命名链接以便我可以使用$ _POST?
$attendingUsers = mysql_query("Select acceptedInvites from events where eventID = ".mysql_real_escape_string($_GET['eventID'])." ");
$users= mysql_fetch_array($attendingUsers);
$user = $users['acceptedInvites'];
if(preg_match("/$userid/", $user)){
echo "You are attending this event</br>";
echo '<a href="viewevent.php?eventID='.$_GET['eventID'].'&delete=1">Click here </a>to remove yourself from the list';
if($_GET['delete']=1){
$sql=...
}
}
是否可以在不使用$ _GET的情况下执行此操作?谢谢!
答案 0 :(得分:2)
永远不要通过链接删除。阅读The Spider of Doom
最好的方法是使用“您确定”的表单链接到“删除”页面。提交表单(通过POST)执行删除并重定向回合适的结果页面。
例如
<a href="remove.php?eventID=<?php echo $eventId ?>">Click here</a>
to remove yourself from the list
然后,在remove.php
<?php
// get Event details via $_GET['eventID']
if (isset($_POST['confirm'])) {
// delete via SQL
// redirect
header('Location: http://example.com/events.php');
exit;
}
// display event details
?>
<form method="post" action="remove.php?eventID=<?php echo $eventId ?>">
<p>Are you sure?</p>
<input type="submit" name="confirm" value="Remove me from this event">
</form>
你可能也应该研究CSRF保护,但这确实超出了这个问题的范围。
答案 1 :(得分:1)
您需要使用$_GET
或$_POST
<form action="delete.php" method="post">
<input type="hidden" name="eventId" value="yourEventId" />
<a href="#" onclick="this.form.submit();" > Delete</a>
</form>
答案 2 :(得分:0)
如果我的JavaScript正确,这应该可以解决问题:
<a href="javascript:void(document.getElementById('delete').submit());">Delete</a>
<form id="delete" action="delete.php" method="post">
...
</form>
然后该链接将提交表单。
答案 3 :(得分:0)
您可以使用某种编码来使get var不可读,例如md5甚至加密字符串。