2011-02-10 15 views
8
function get_data($url) { 
    $ch = curl_init(); 
    $timeout = 5; 
    curl_setopt($ch,CURLOPT_URL,$url); 
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 
    curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout); 
    $data = curl_exec($ch); 
    curl_close($ch); 
    return $data; 
} 

encuentro esta función de internet. cuando lo pruebo en un archivo php usando este código $returned_content = get_data('http://google.com'); pero no puede funcionar.y obtengo un "301 movido permanentemente" El documento se ha movido aquí. error. ¿por qué?por qué esta función php cURL no puede funcionar

+4

¿Qué ocurre o no ocurre? –

+1

¿Obtiene un error http movido 302? o algo similar. Hombre elaborado –

+0

yeap, obtengo un error http movido 302.cómo corregir el código. agradecerá – runeveryday

Respuesta

29

Según sus comentarios, obtendrá un código de estado 302. Pruebe

curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true); 

siguiendo 30x redirige.

Manual de curl_setopt()

+0

gracias. está bien. pero no sé por qué debe agregar esa línea. – runeveryday

+2

@runeveryday porque el servidor remoto le pasa una redirección de encabezado '302' y le da una cadena 'location:' en el cuerpo. Un navegador normal seguirá automáticamente a la nueva ubicación (desencadenando una nueva solicitud). Con curl, tienes que decirle explícitamente que siga. Consulte esta página sobre los códigos de estado y su significado: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.htmlhttp://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html –

-1

podría ser tan fácil como añadir un "eco" Trate siguiente línea:

echo get_data('http://google.com'); 

Además, compruebe si el módulo de curvatura se activan en el PHP.ini

Para averiguar fácilmente sólo ponga las siguientes líneas en un nuevo archivo llamado info.php

<?php 
phpinfo(); 

?> 

Busque cUrl.

Si no lo encuentra por favor, eche un vistazo a http://php.net/manual/en/book.curl.php para ver lo que se trata de instalar el módulo php rizo

o añadir siguiente opción de enrollamiento:

curl_setopt ($ ch, CURLOPT_FOLLOWLOCATION ,CIERTO);

Y perdón por las publicaciones dobles.

+0

Si la extensión cURL no está activado obtendría un error función no definida en el primer lugar ... -_- – BoltClock

+0

curl_setopt ($ ch, CURLOPT_FOLLOWLOCATION, TRUE); Debe hacer – bandam

+0

tiene razón, pero no sé por qué debe agregar esta línea – runeveryday

3

añadir una opción más para la función de su get_data:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);

Google le está redirigiendo a los servidores de Google locales y su llamada rizo actualmente no está persiguiendo redirecciones.

oh sí,
y hacer un var_dump($returned_content); a ver los resultados: P

+0

Gracias . Me salvó la vida. –

Cuestiones relacionadas