2017-12-30 13 views
2

페이지를 다시로드하여 $_POST의 데이터를 삽입 할 때 $_POST DATA 및 브라우저 쿠키를 제거 할 수 없습니다.

if($_POST['submit']) { 
    $title   = $_POST['title']; 
    $location  = $_POST['location']; 
    $description = $_POST['description']; 

    $sql = "INSERT INTO `room_list` (`id`, room`) VALUES (NULL, '0');"; 
    $query = mysql_query($sql); 

    if($query){ // True } 
    else { // False } 

    unset($_POST[submit]); 
    unset($_REQUEST); 
} 
+1

을 피하기 위해 어떤 특별한 행동/양식 제출 한 후 리디렉션,'- 보증 것 그 페이지는 제출하지 않고 다시로드되는 경우 양식 데이터가 다시 전송되지 않도록 수동으로 양식을 작성하십시오. – RamRaider

+2

'header ('Location : http://www.example.com/');와 같은 것을 시도해 보았거나 아약스를 사용하여 클라이언트를 다른 경로로 재지 정하지 않고 백그라운드에서 양식 데이터를 제출할 수 있는지 살펴 보았습니까? 양식 데이터를 제출하기 위해 페이지를 다시로드하십시오. – NewToJS

+0

아마도 여러분의 서버가 mysql_ * 함수를 사용하는 것에 항의하고 있을지도 모르겠다. 그냥 (잘 정렬하고 더 이상 mysql_를 사용하지 말고 PHP7에서 제거됨) *, 제안 된대로 리디렉션을 생각할 수도있다. 다른 사람들에 의해. 나는 그런 식의 전역 배열을 직접 시도하지 않을 것이다. – Rasclatt

답변

0

은 첫째로 당신은 변수로에 할당 mysqli 또는 PDO를 사용하도록 코드를 업그레이드 한 일반적으로 header 기능을 사용하는 것이 다시 제출되는 양식을 방지하기 위해 시도하기 전에 POST 변수를 사용할 수 있는지 테스트한다고 삽입 문이`헤더 ('위치 : samepage.php')를 사용한 후 여러 삽입

if(isset($_POST['submit'], $_POST['title'],$_POST['location'],$_POST['description'])){ 

    /* why do these not get used? */ 
    $title   = $_POST['title']; 
    $location  = $_POST['location']; 
    $description = $_POST['description']; 

    /* Should use `mysqli` or `PDO` - the `mysql` api is deprecated */ 
    $sql = "INSERT INTO `room_list` (`id`, `room`) VALUES (NULL, '0');"; 
    $query = mysql_query($sql); 


    header("Location: " . $_SERVER['SCRIPT_NAME'] . '?status='.$query); 

}