2012-07-07 6 views
2

PHP 5.2.17을 사용하여 원격 페이지를 가져 오는 중, HTTP 요청에 일부 쿠키 값이 포함되어 있지만 대상 페이지로 쿠키가 배달되지 않습니다.서버가 사용자 정의 헤더 값을 보내지 않습니다.

$url = 'http://somesite.com/'; 
$opts = array(
    'http' => array 
     (
     'header' => array("Cookie: field1=value1; field2=value2\r\n") 
    ) 
); 
$context = stream_context_create($opts); 
echo file_get_contents($url, false, $context); 

어디서 문제를 찾을 수 있습니까? 참고 : 컬을 사용할 수 없습니다. 감사합니다. .

+0

을 내가 때문에 일부의 것 같아요 PHP 또는 아파치 설정,하지만 난 모르겠다 ... – Farhad

+0

내가 말한 것처럼'allow_url_fopen'을 확인하십시오. 비활성화 된 경우 socket i/o를 사용하여 작업을 수행 할 수 있습니다. 예를 들어 [here] (http://php.net/manual/en/function.fsockopen.php)에서 'fsockopen-based HTTP request'페이지를 검색하십시오. – quickshiftin

+0

ini_get ('allow_url_fopen')의 ​​결과는 "1"입니다. – Farhad

답변

0

allow_url_fopen이 사용 설정되지 않았 으면 w/ini_get 값을 확인하십시오 : ini_get('allow_url_fopen');

공개적으로 액세스 할 수있는 것으로 알고있는 이전 페이지에서 file_get_contents()를 호출하여 상태 확인을 수행 할 수도 있습니다.

이외의 예제 코드는 정상적으로 보입니다.

두 번째 옵션, 소켓 연결 :

<?php 
$fp = fsockopen("somesite.com", 80, $errno, $errstr, 30); 
if (!$fp) { 
    echo "$errstr ($errno)<br />\n"; 
} else { 
    $out = "GET/HTTP/1.1\r\n"; 
    $out .= "Host: somesite.com\r\n"; 
    $out .= "Cookie: field1=value1; field2=value2; path=/; domain=somesite.com;\r\n"; 
    $out .= "Connection: Close\r\n\r\n"; 
    fwrite($fp, $out); 
    while (!feof($fp)) { 
     echo fgets($fp, 128); 
    } 
    fclose($fp); 
} 
echo PHP_EOL; 
+0

나는 phpinfo()를 사용했다. 로컬 값 및 마스터 값이 "켜짐"이라고 표시됩니다. – Farhad

+0

cli에서 스크립트를 실행하지 않습니까? – quickshiftin

+0

죄송합니다. cli는 무엇입니까? PHP 스크립트는 서버에서 실행 중이며 localhost에서는 훌륭하게 작동하지만 서버에 업로드하면 쿠키가 전송되지 않습니다. – Farhad

0

는 당신에게 수신 코드가 제대로 작동하는지 확인 있습니까?

나는 수신 페이지가 단순히 메아리와 함께 작동하도록 예를 얻을 수 있습니다 :

<?php 
echo $_COOKIE['field1'] . '::' . $_COOKIE['field2']; // returns value1::value2 
?> 

또는 사이트가 사용자 에이전트 (아무것도)이 요구 될 수있다. Wikipedia에 이르러서 일찍이 문제가 발생했습니다 (모든 Mediawiki 소프트웨어가 제한적이지는 않지만 Wikimedia 사이트에만 해당). 'http'배열의 user_agent 속성을 원하는 값으로 설정하십시오. (당신이 위키 백과에 도달하려고 할 일이 할 경우, 당신은 대신 자신의 api.php 시도 할 수 있습니다 : http://en.wikipedia.org/w/api.php를 또 다른 미디어 위키 사이트, 같은 상대 경로를 사용하는 경우)

+0

수신 코드가 정확하고 aloso 나는 http://www.ericgiguere.com/tools/http-header-viewer.html 같은 도구를 확인하는 데 사용했지만 성공하지는 않았습니다. – Farhad

+0

그래서받는 쪽 끝은 사이트와 소프트웨어입니다. 누락 된 사용자 에이전트는 문제가되지 않을 수 있습니까? –

+0

사용자 에이전트 ini_set ('user_agent', "test agent");를 설정할 수 있습니다. 사용자 에이전트 설정에 문제가 없습니다. – Farhad

0
$url = 'http://somesite.com/'; 
$opts = array(
    'http' => array 
    (
     'header' => "Cookie: field1=value1; field2=value2\r\n" 
    ) 
); 
$context = stream_context_create($opts); 
file_get_contents($url, false, $context); 
+0

결과가 변경되지 않습니다. – Farhad

+0

잘못되었습니다. 다시 시도하십시오. – Leo

관련 문제