Hola, me interesa aprender curl como sea ya que veo que una herramienta que para mi trabajo me puede ir de lujo. Ya hice un tema para ver si alguién tenía información acerca de curl pero nadie ha contestado (
http://www.forosdelweb.com/f18/curl-715721/), entonces no me queda otra que la de experimentar. Lo primero que quiero hacer es loguearme en una aplicación interna HTTP. Las cabeceras del navegador cuando loguea una vez introducidos user y pass son:
http://sitio.lan/OUT/out_index.php
POST /OUT/out_index.php HTTP/1.1
Host: sitio.lan
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; es-ES; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: es-es,es;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer:
http://sitio.lan/OUT/out_index.php
Cookie: PHPSESSID=d7416tdp9jp6vf37msiuf4cr60
Content-Type: application/x-www-form-urlencoded
Content-Length: 44
txtLOGIN=usuario&txtCLAVE=password&sub=Entrar
HTTP/1.x 302 Found
Date: Wed, 12 Aug 2009 18:06:59 GMT
Server: Apache/2.2.3 (CentOS)
X-Powered-By: PHP/5.1.6
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Location: out_index.php
Content-Length: 0
Connection: close
Content-Type: text/html; charset=iso-8859-1
Pues teniendo esto he hecho dos pruebas con distinto código:
1ª:
Código PHP:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://sitio.lan/OUT/out_index.php");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERPWD, "usuario:password");
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
$output = curl_exec($ch);
curl_close($ch);
echo $output;
y
2ª
Código PHP:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://sitio.lan/OUT/out_index.php");
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, "txtLOGIN=usuario&txtCLAVE=password&sub=Entrar");
curl_setopt($ch,CURLOPT_REFERER, 'http://sitio.lan/OUT/out_index.php');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
echo $output;
Lógicamente no loguea ninguna de las dos. Pongo que muestre la variable $output para comprobarlo pero sale la pantalla en blanco.
- Alguién sabe qué me falta o me sobra?
- La cookie para hacer el logueo no es necesaria verdad? Sólo para solicitar datos nuevos, no? Lo que no se es por qué sale en la cabecera de logueo ¿?
El funcionamiento lo entiendo pero no se aplicarlo.
Gracias.