문제

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 확장.

  1. 나머지 사용자가 말하는 것처럼 컬로이 작업을 수행하는 것이 가장 쉽다고 말합니다.

  2. 컬을 사용할 수 없다면 아마도 가능합니다http://netevil.org/blog/2006/nov/http-post-from-php-without-curl

  3. 가능하지 않으면 소켓을 직접 쓸 수 있습니다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는 매우 인기가 있으므로 사용하는 것이 좋습니다. 스타터가 이해할 수 있기 때문에 추가 의견이있는 코드를 더 많이 설명 할 수도 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top