isset для ссылки - PHP - PullRequest
       8

isset для ссылки - PHP

0 голосов
/ 10 февраля 2012

Я пытаюсь создать для пользователей ссылку, по которой они будут удалены из списка. Я пытаюсь понять, как это сделать, не используя кнопку отправки и не используя $ _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 ]

2 голосов
/ 10 февраля 2012

Никогда не удаляйте по ссылке. Читать Паук Судьбы

Лучший способ - создать ссылку на страницу «Удалить» с формой «Вы уверены?». Отправка формы (через 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 голос
/ 10 февраля 2012

Вы должны использовать либо $_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 голосов
/ 10 февраля 2012

Вы можете использовать некоторую кодировку, чтобы сделать get var нечитаемой, например, md5 или даже зашифрованную строку.

0 голосов
/ 10 февраля 2012

Если у меня есть право JavaScript, это должно сработать:

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

По ссылке будет отправлена ​​форма.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...