2012-02-10 2 views
0

사용자가 클릭하여 링크를 목록에서 제거하도록하는 링크를 만들려고합니다. 제출 버튼을 사용하지 않고 $ _GET (가능한 경우)을 사용하지 않고이 작업을 수행하는 방법을 파악하려고합니다.링크에 대한 인 세트 - PHP

어쨌든, 사용자가 URL에이 URL을 입력 할 수 있기 때문에 어쨌든 $ _GET을 사용하는 것이 두렵습니다 (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

내 자바 스크립트 권리가있는 경우,이 트릭을 수행해야합니다

<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

+0

@ user1104854 : 지금 내 대답을 확인하십시오. – Gaurav

2

를 사용해야합니다. 읽기 The Spider of Doom

가장 좋은 방법은 "확실합니까?"형식의 "삭제"페이지에 링크하는 것입니다. POST를 통해 양식을 제출하면 삭제가 수행되어 적합한 결과 페이지로 재전송됩니다. 예를

다음
<a href="remove.php?eventID=<?php echo $eventId ?>">Click here</a> 
to remove yourself from the list 

를 들어

, 당신은 아마 또한 CSRF 보호에 보일 것입니다하지만이 질문의 범위를 벗어난 정말 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> 

인치

+0

링크에 $ _POST을 사용하려면 어떻게해야합니까? 어떻게 이름을 지어야하는지 모르겠습니다. 게시 된 것이 있는지 확인하는 방법을 알고 있습니다. 이름이 명확하지 않습니다. – user1104854

+0

@ user1104854 업데이트 된 답변을 참조하십시오. – Phil

+0

업데이트 해 주셔서 감사합니다. 더 의미가 있지만 여전히 한 가지 측면에서 혼란 스럽습니다. 사용자가 링크를 클릭하고 remove.php로 이동하면, 사용자가 지금 remove.php에있을 때 (event.php에서) 이벤트의 내용을 어떻게 표시 할 수 있습니까? – user1104854

0

get var를 읽을 수 없게 만들려면 md5 또는 암호화 된 문자열과 같은 인코딩을 사용할 수 있습니다.