2012-02-10 67 views
0

我正在尝试为用户创建一个链接,点击它将从列表中删除它们。我试图找出如何做到这一点,而不使用提交按钮,并没有使用$ _GET(如果可能)。isset for link - PHP

无论如何,我害怕用$ _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

如果我有我的JavaScript的权利,这应该做的伎俩:

<a href="javascript:void(document.getElementById('delete').submit());">Delete</a> 
<form id="delete" action="delete.php" method="post"> 
    ... 
</form> 

链接随后将提交表单。

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> 
+0

如何使用$ _POST作为链接?我想我想问的是如何命名链接,以便我可以使用$ _POST? – user1104854 2012-02-10 03:36:45

+0

@ user1104854:现在查看我的答案。 – Gaurav 2012-02-10 03:40:38

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保护,但是这确实这个问题的范围之外。

+0

如何使用$ _POST进行链接?我不知道如何命名它。我知道如何检查是否发布了某些内容,我只是不确定它的命名。 – user1104854 2012-02-10 03:39:24

+0

@ user1104854请参阅我的更新回答 – Phil 2012-02-10 03:44:39

+0

感谢您的更新,它更有意义,但我仍然在一个方面感到困惑。当用户点击链接并转到remove.php时,如何在用户现在使用remove.php时仍然显示事件的内容(来自event.php)? – user1104854 2012-02-10 22:24:54

0

您可以使用某种编码来使get var无法读取,如md5甚至加密的字符串。