2010-06-09 6 views
2

내 사이트에서 원격 웹 페이지로 일부 데이터를 보내려고합니다. 사실은 숨겨진 변수를 통해 얻을 수 있습니다. 하지만 보안상의 이유로 헤더의 게시물 변수로 설정 한 다음 해당 웹 페이지로 보냅니다. 이 코드를 사용합니다.PHP 헤더에 값 올리기

$post_data = 'var1=123&var2=456'; 

$content_length = strlen($post_data); 

header('POST http://localhost/testing/test.php HTTP/1.1'); 

header('Host: localhost'); 

header('Connection: close'); 

header('Content-type: application/x-www-form-urlencoded'); 

header('Content-length: ' . $content_length); 

header($post_data); 

그러나 코드가 올바르게 작동하지 않습니다. 도와주세요 ...

답변

2

POST 데이터는 HTTP 요청의 본문을 구성하며 헤더가 아니며 HTTP를 만들 때 헤더 메서드가 사용됩니다 응답.

askapache has an example of making a POST request PHP는 컬 라이브러리를 사용합니다.

+0

답장을 보내 주셔서 감사합니다. –

2

헤더를 응답에 넣으려고합니다. 클라이언트는 그걸로 무엇을 해야할지 모릅니다.

달성하려는 것은 불가능합니다.

수행하려는 작업은 무엇입니까? 다른 방법이있을 수 있습니다.

+0

사실 저는 그 웹 페이지로 게시물 데이터로 일부 데이터를 보내려고합니다. 그들은 내 데이터의 유효성을 검사합니다. 유효한 경우 해당 사이트에서 내 사이트에 액세스 할 수 있습니다. 또는 오류 메시지를 반환합니다. –

+0

@kumar 누가 "나"입니까? 브라우저? –

+0

내 사이트에 결제 섹션이 포함되어 있습니다. 나는 지불 게이트웨이 사이트에 고객 정보를 전달하고 싶다. 그래서 내가 DB에서 사용자의 세부 정보를 얻고 헤더에 게시물 변수로 설정합니다. 그런 다음 내 사용자 세부 정보가있는 웹 페이지를 요청합니다. 사용자가 지정한 데이터가 유효한 경우 사용자는 지불 프로세스를 수행 할 수 있습니다. 이것이 과정입니다. –

1

원격 서버에 요청을 게시하려면 cUrl과 같은 도구를 사용해야합니다. 여기에 부여 됨으로써는 다음과 같습니다

// Create a curl handle to a non-existing location 
$ch = curl_init('http://localhost/testing/test.php'); 

// Set options 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

// Execute 
$page = curl_exec($ch); 

또는 당신이 정말로 헤더에 데이터를 입력 할 경우,이 같은 것을 사용하여 사용자 정의 헤더를 설정할 수 있습니다 POST 헤더가 있습니다 리디렉션

curl_setopt($ch, CURLOPT_HTTPHEADER, array('field: value', 'field2: value')); 
1

유일한 방법 HTTP 1.1 Redirect with 307/308

307 임시 리디렉션

header('HTTP/1.1 307 Redirect'); 
header('Location: target.php', false, 307); 

308 영구 리디렉션

header('HTTP/1.1 308 Redirect'); 
header('Location: target.php', false, 308); 

!!! 이런 식으로 리디렉션 코드가 두 번 설정되면 PHP에서만 작동합니다! 두 번째 줄만 쓰는 경우. PHP는 정상적인 302 리디렉션을 만들었습니다.

클라이언트가 보안상의 이유로이 리디렉션을 수락하면 브라우저에서 메시지를받습니다.

+0

@AndrewLBarber 제발 삭제하지 마십시오. 이것은 옳은 대답입니다. 이렇게하면 서버가 hes가 해당 게시물을 다시 보냈던 클라이언트/브라우저를 알게됩니다. 다른 대상 –