2010-02-21 18 views

Respuesta

4

Enviar una solicitud a través de curl, a una URL HTTPS, no es tan difícil por sí mismo, en términos de código PHP.

Algo como esto debería hacer perfectamente bien (Sólo traté de esta porción de código en mi máquina, Windows, PHP 5.3):

$url = 'https://.../...'; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$data = curl_exec($ch); 
curl_close($ch); 

echo $data; 

Y envía el resultado bien: lo mismo me sale en mi navegador cuando intento acceder a la URL https://; a excepción del CSS, por supuesto.


Es posible que desee echar un vistazo a la página del manual de la función curl_setopt: hay una gran cantidad de opciones, y algunos de ellos podrían ser útiles, en su caso específico :-)

Aquí, Usé CURLOPT_SSL_VERIFYPEER y CURLOPT_SSL_VERIFYHOST; no estoy seguro de que los necesite con Amazon, pero tuve que usarlos, de lo contrario, esta parte del código no funcionó, pero eso podría estar relacionado con el hecho de que el certificado que estoy usando es autofirmado ... Pruebe con y sin ellos, y descubrirá rápidamente si los necesita.

+0

url http: // ...? – Sarfraz

+0

@Sarfraz> ergh, maldito copiar y pegar * (He copiado y pegado una URL de mi navegador, sin darme cuenta de que no agregaba la 's' como solía hacerlo en mi servidor anterior) * ;; He editado mi respuesta para corregir eso ;; gracias por el comentario :-) –

+0

eres bienvenido :) – Sarfraz

12

Ejemplo:

$url = "https://example.com"; 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); 

$result = curl_exec($ch); 
curl_close($ch); 

print_r($result); 

CURLOPT_SSL_VERIFYPEER

Comprobar si el certificado de pares es válida o inválida/expirado.

opción CURLOPT_SSL_VERIFYHOST citando php manual:

1 para comprobar la existencia de un nombre común en el certificado SSL del otro. 2 a compruebe la existencia de un nombre común y también verifique que coincida con el nombre de host provisto.

+0

¿Podría describir por qué son necesarios SSL_VERIFYPEER y SSL_VERIFYHOST? –

+0

He editado mi respuesta. – rogeriopvl

2

Si desea configurar CURL para aceptar ciegamente el certificado, puede establecer la opción CURLOPT_SSL_VERIFYPEER en false.

$url = 'https://www.example.com/abc'; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

// Blindly accept the certificate 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 

$response = curl_exec($ch); 
curl_close($ch); 

var_dump($response); 
1

También es posible usar Zend Framework y el adaptador de cURL para ayudar con esta tarea. Detalles here

Cuestiones relacionadas