2011-03-11 4 views
0
$var1 = $_REQUEST['id']; 
$var2 = file_get_contents('http://example.com/script.php?z=$var1'); 
echo $var2; 

file_get_contents가 비활성화 된 것으로 보입니다.이 PHP 코드는 무엇이 잘못 되었습니까? file_get_contents replacement

나는이 일을하기 위해 file_get_contents를 대체 할 수 있습니까?

+0

정확히 어떤 오류 메시지가 나타 납니까? –

+0

메시지가 없습니다. 콘텐츠가 단순히로드되지 않습니다. – m3tsys

+0

오류보고 기능이 켜져 있습니까? –

답변

3

작은 따옴표를 사용하고 있습니다. 즉, $var1은 문자열로 대체되지 않습니다. 그러나 큰 따옴표를 사용하더라도 쿼리 문자열은 여전히 ​​올바르게 이스케이프되지 않을 수 있습니다.

당신은 유효한 URL을 구축하도록 http_build_query를 사용한다 : file_get_contents가 비활성화되고 경고를 발행하는 경우 패트릭의 대답은, 지적

$url = 'http://example.com/script.php?' . http_build_query(array(
    'z' => $_REQUEST['id'] 
)); 

, 당신은 그것을 가능하게 할 수 있습니다. 그렇지 않은 경우 cURL을 사용하여 다음과 같이 요청할 수 있습니다.

$url = 'http://example.com/script.php?' . http_build_query(array(
    'z' => $_REQUEST['id'] 
)); 
$ch = curl_init(); 
curl_setopt_array($ch, array(
    CURLOPT_URL => $url, 
    CURLOPT_HEADER => 0, 
    CURLOPT_RETURNTRANSFER => true 
)); 
$result = curl_exec($ch); 
if ($result === false) { 
    trigger_error(curl_error($ch)); 
} else { 
    // do something with $result 
} 
curl_close($ch); 
+0

이것이 효과가 있습니다. 고맙습니다 – m3tsys

0

작동해야하지만 작은 따옴표를 사용할 때 문자열 (PHP 이름)에서 변수 대체를 수행 할 수 없다고 확신합니다. 큰 따옴표를 사용하거나 'http://example.com/script.php?z=' . $var1과 같은 방법으로 시도하십시오. 그게 너 한테 도움이되는지 알려줘.

+0

@ Nathan Ostgard가 나에게 추천 한 것을 사용 했어 – m3tsys

2

과 유사한 오류 메시지가 받고있는 경우 :

경고 : file_get_contents를() [function.file--내용을 얻을] : URL 파일 액세스가에 ...

서버 구성에서 사용할 수 없습니다

만 라인으로의 php.ini 파일을 확인하십시오

allow_url_fopen = On 
+0

이렇게 할 수있는 권한이 없으면 컬을 활용해야 할 수도있다 – dialer

+0

그리고 PHP 설정을 수정할 수 없다면 curl http://php.net/manual/en/ref.curl.php –

1

큰 따옴표를 사용해야합니다

0123을
$var2 = file_get_contents("http://example.com/script.php?z=$var1"); 
관련 문제