2012-08-31 3 views
5

가능한 중복 :
PHP header() redirect with POST variablesPHP 헤더 위치

내가 폼 데이터가 다른 스크립트에 제출되고있는 스크립트를 쓰고 있어요. 두 번째 스크립트가 제출 된 $_POST 데이터에 대해 오류 검사를 수행하고 모든 것이 정상이면 데이터를 처리하기를 원합니다. 데이터에 오류가있는 경우 header('Location: http://www.example.com/script.php');을 사용하여 방문자를 양식 페이지로 되돌립니다.

내가 겪고있는 문제는 양식이 끈적 해지기를 원한다는 것입니다. 올바른 데이터가있는 필드는 사용자가 입력 한 값을 유지합니다. 분명히 그 값을 얻으려면 $_POST 어레이에 액세스해야합니다. 그러나 이것은 header() 호출이 방문자를 양식으로 전달할 때 파괴 된 것 같습니다.

$_POST 데이터를 그대로 유지하면서 헤더 위치 정보를 사용하여 방문자를 다른 페이지로 리디렉션 할 수 있습니까?

이제 다음과 같이 사용하고 있습니다 : header('Location: http://www.example.com/add.php?id='.$id.'&name='.$name.'&code='.$code.'&desc='.$description.'');$_GET으로 액세스 중입니다.

header('location: xxx')에서 동일한 종류의 POST를 사용할 수 있습니까? 너무 귀하의 오류 페이지의 상단에 session_start()이 기억의 $_SESSION['submitted_data'] 변수에서 그들을로드하여 입력에 값을로드 한 후

session_start(); 
$_SESSION['submitted_data'] = $_POST; 

을 그리고 :

+0

http://www.php.net/manual/en/book.session.php – DaveRandom

+0

[$ _POST] 수동 설정 가능 (http://stackoverflow.com/questions/3418044/setting-post- variable-without-using-form)을 다시 리다이렉션하기 전에. – Havelock

+0

게시 데이터를 저장하기 위해 세션 변수를 설정하지 않는 이유는 무엇입니까? ? – kushalbhaktajoshi

답변

2

당신은 세션에서 $_POST 데이터를 저장할 수 .

15

이 '끈적한 양식'을 달성하는 가장 좋은 방법은 세션을 사용하는 것입니다. 그것에 대해

<?php 
session_start(); 
//use $_SESSION like you would the post data 
?> 
0

사용 sessions :

<?php 
session_start(); 
$_SESSION = $_POST; 
//do error checking here 
//if all is valid 
session_write_close(); 
header('Location: *where you want your form to go*'); 
die; 
?> 

그리고 당신과 같이 사용할 수 있습니다 리디렉션 페이지에

. $ _POST 데이터를 수신하는 스크립트에서

<?php 
if (!empty($_COOKIE[session_name()])) { 
    // we only start session if there is a session running 
    session_id() || session_start(); 
} 

if (empty($_POST) && !empty($_SESSION['POST'])) { 
    // make sure you're not overwriting 
    $_POST = $_SESSION['POST']; 
} 
// and so on just like you have $_POST filled 

: 양식 페이지에서

<?php 
// after you're done with checking and stuff 
session_id() || session_start(); 
$_SESSION['POST'] = $_POST; 
header('Location: /script.php'); 

두 스크립트 작업 세션의 저장 도메인에 있어야합니다. 위치 헤더에서 상대 URI를 사용하는 경우 모든 것이 올바르게 작동합니다.