isset for link - PHP

时间:2012-02-10 03:31:09

标签: php mysql get

我正在尝试为用户创建一个链接,以便将其从列表中删除。我试图找出如何在不使用提交按钮和不使用$ _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的情况下执行此操作?谢谢!

4 个答案:

答案 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甚至加密字符串。