PHP 스크립트 내에 다른 페이지로 게시하십시오
문제
PHP 스크립트 내의 다른 PHP 페이지에 게시물 요청을하려면 어떻게해야합니까? HTML 페이지 서버로서 하나의 프론트 엔드 컴퓨터가 있지만 사용자가 버튼을 클릭하면 백엔드 서버가 처리를 수행 한 다음 정보를 프론트 엔드 서버로 다시 보내 사용자를 표시합니다. 백엔드 컴퓨터에 PHP 페이지를 가질 수 있으며 정보를 프론트 엔드로 다시 보낼 것입니다. 다시 한 번, PHP 페이지에서 다른 PHP 페이지에 대한 게시물 요청을 어떻게 할 수 있습니까?
해결책
PHP를 수행하는 가장 쉬운 방법은 게시물 요청을 수행하는 것입니다. 곱슬 곱슬하다, 확대 또는 단순히 다른 프로세스로 껍질을 벗기십시오. 다음은 게시물 샘플입니다.
// where are we posting to?
$url = 'http://foo.com/script.php';
// what post fields?
$fields = array(
'field1' => $field1,
'field2' => $field2,
);
// build the urlencoded data
$postvars = http_build_query($fields);
// open connection
$ch = curl_init();
// set the url, number of POST vars, POST data
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, count($fields));
curl_setopt($ch, CURLOPT_POSTFIELDS, $postvars);
// execute post
$result = curl_exec($ch);
// close connection
curl_close($ch);
또한 체크 아웃하십시오 Zend_http Zend Framework의 클래스 세트는 PHP에 직접 작성된 매우 유능한 HTTP 클라이언트를 제공합니다 (확장 프로그램이 필요 없음).
2014 편집 - 글쎄, 내가 그것을 쓴 지 오래되었습니다. 요즘은 확인할 가치가 있습니다 목구멍 컬 확장과 유무에 관계없이 다시 작동 할 수 있습니다.
다른 팁
PHP 설치에 컬 확장이 있다고 가정하면 아마도 가장 쉬운 방법 일 것입니다 (그리고 원하는 경우 가장 완전합니다).
샘플 스 니펫 :
//set POST variables
$url = 'http://domain.com/get-post.php';
$fields = array(
'lname'=>urlencode($last_name),
'fname'=>urlencode($first_name),
'email'=>urlencode($email)
);
//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string,'&');
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
//execute post
$result = curl_exec($ch);
//close connection
curl_close($ch);
크레딧이 간다 http://php.dzone.com. 또한 적절한 것을 방문하는 것을 잊지 마십시오 페이지 (S) PHP 매뉴얼에서
PHP 처리를 위해서는 살펴보십시오 곱슬 곱슬하다. 백엔드에서 페이지를 호출하고 데이터를 검색 할 수 있습니다. 기본적으로 당신은 다음과 같은 일을 할 것입니다.
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_URL,$fetch_url);
curl_setopt ($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt ($ch,CURLOPT_USERAGENT, $user_agent;
curl_setopt ($ch,CURLOPT_CONNECTTIMEOUT,60);
$response = curl_exec ( $ch );
curl_close($ch);
당신은 또한 조사 할 수 있습니다 PHP HTTP 확장.
나머지 사용자가 말하는 것처럼 컬로이 작업을 수행하는 것이 가장 쉽다고 말합니다.
컬을 사용할 수 없다면 아마도 가능합니다http://netevil.org/blog/2006/nov/http-post-from-php-without-curl
가능하지 않으면 소켓을 직접 쓸 수 있습니다http://petewarden.typepad.com/searchbrowser/2008/06/how-to-post-an.html
Curl을 사용하는 사람들의 경우 Curlopt_post 옵션은 부울 값으로 간주되므로 실제로 게시하는 필드 수로 설정할 필요가 없습니다.
curlopt_post를 true로 설정하십시오 (즉, 0을 제외한 모든 정수)는 Curl에 데이터를 Application/X-www-form-urlencoded로 인코딩하도록 지시합니다. Curl은 이미이 후자의 옵션이 설정된 값 (문자열 대 배열)의 유형별로 인코딩을 알려야합니다.
또한 PHP 5 이후 HTTP_BUILD_QUERY 기능을 사용하여 PHP UrlenCode를 필드 배열로 만들 수 있습니다.
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($fields));
솔루션은 다음과 같이 대상 = "_ blank"에 있습니다.
http://www.ozzu.com/website-design-forum/multiple-form-submit-actions-t25024.html
다음과 같은 양식 편집 :
<form method="post" action="../booking/step1.php" onsubmit="doubleSubmit(this)">
이 스크립트를 사용하십시오.
<script type="text/javascript">
<!--
function doubleSubmit(f)
{
// submit to action in form
f.submit();
// set second action and submit
f.target="_blank";
f.action="../booking/vytvor.php";
f.submit();
return false;
}
//-->
</script>
이상적이지는 않지만 CURL 옵션이 귀하를 위해 수행하지 않으면 Shell_Exec ()를 사용해보십시오.
Curl Method는 매우 인기가 있으므로 사용하는 것이 좋습니다. 스타터가 이해할 수 있기 때문에 추가 의견이있는 코드를 더 많이 설명 할 수도 있습니다.