Foros del Web » Programando para Internet » PHP »

Enviar post con usuario y password

Estas en el tema de Enviar post con usuario y password en el foro de PHP en Foros del Web. Hola compañer@s, quiero analizar los datos de una página, descargar la página, con el file_get_contents(), el problema es que esta página es que para acceder ...
  #1 (permalink)  
Antiguo 21/11/2012, 09:01
 
Fecha de Ingreso: septiembre-2006
Mensajes: 94
Antigüedad: 17 años, 7 meses
Puntos: 1
Enviar post con usuario y password

Hola compañer@s, quiero analizar los datos de una página, descargar la página, con el file_get_contents(), el problema es que esta página es que para acceder tiene el formulario de acceso. Lo que quiero es con mi password y mi usuario desde php, automatizar el acceso y descarga la página para su análisis.
Estoy viendo ejemplos con el curl, y enviando el post, pero cuando intento descargar la página con file_get_contents() no funciona.
Alguna idea?
Un saludo a tod@s.
  #2 (permalink)  
Antiguo 21/11/2012, 09:04
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Enviar post con usuario y password

lo ideal es usar cURL el cual te debe obtener el código devuelto, incluyendo el header de redirreción y las cookies de sesión para seguir emulando el login, otro punto es ¿para que quieres hacerlo de ésa forma, esa otra página es tuya, es legal que accedas de ésa forma?
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 21/11/2012, 09:18
 
Fecha de Ingreso: septiembre-2006
Mensajes: 94
Antigüedad: 17 años, 7 meses
Puntos: 1
Respuesta: Enviar post con usuario y password

La página es un listado de precios. Quiero mediante un script, sacar los precios. (Se me ha ocurrido un ejercicio)Es legal, soy el programador/administrador de la página. Tengo usuario y contraseña.
Tienes algún ejemplo para simular el post y posteriormente descargame cualquier página del área privada y analizarla.
Gracias.
  #4 (permalink)  
Antiguo 22/11/2012, 01:17
 
Fecha de Ingreso: septiembre-2006
Mensajes: 94
Antigüedad: 17 años, 7 meses
Puntos: 1
Respuesta: Enviar post con usuario y password

Estoy viendo algún ejemplo con curl y con cookies, pero no termino de entender, alguien tiene algún ejemplo?
Un saludo a tod@s
  #5 (permalink)  
Antiguo 22/11/2012, 01:30
 
Fecha de Ingreso: abril-2012
Ubicación: 41°37′00″N, 00°37′00″E
Mensajes: 462
Antigüedad: 12 años, 1 mes
Puntos: 33
Respuesta: Enviar post con usuario y password

Hola,

Usé cURL hace poco por un tema similar...

El tema de las cookies me trajo de cabeza también... Has de crear un cookie jar y un cookie file. Entonces ese archivo se usará para enviar y recibir cookies entre las páginas.

Ésta web me ayudó a entender bastante el asunto (las primeras partes igual no te van del todo bien, mira la parte donde pone "una clase para facilitar las cosas")

http://web.ontuts.com/tutoriales/apr...a-curl-en-php/

Espero te sirva.

Saludos!
  #6 (permalink)  
Antiguo 22/11/2012, 04:35
 
Fecha de Ingreso: septiembre-2006
Mensajes: 94
Antigüedad: 17 años, 7 meses
Puntos: 1
Respuesta: Enviar post con usuario y password

Gracias, le pego un vistazo a la web...
  #7 (permalink)  
Antiguo 22/11/2012, 08:52
 
Fecha de Ingreso: septiembre-2006
Mensajes: 94
Antigüedad: 17 años, 7 meses
Puntos: 1
Respuesta: Enviar post con usuario y password

Estoy intentando utilizar la clase, para validar un formulario y cargar una página que esta detrás del formulario, haciendo algo así:

Código:
require_once("HttpConnection.php");

$http = new HttpConnection();  
$http->setCookiePath("/my_cookie_path/");  
$http->init();  

$apost = array('username' => urlencode("hola"), 'password' => urlencode("hola"));
$http->post("http://paginadondevaliaelform.php", $apost);

echo $http->get("http://paginaquenecesitadevalidacion.html");  

$http->close();
Pero no se si estoy haciendo bien y funciona, alguna sugerencia?
Gracias.
  #8 (permalink)  
Antiguo 23/11/2012, 00:32
 
Fecha de Ingreso: abril-2012
Ubicación: 41°37′00″N, 00°37′00″E
Mensajes: 462
Antigüedad: 12 años, 1 mes
Puntos: 33
Respuesta: Enviar post con usuario y password

Buenas,

Creo que no te hace falta que pongas el urlencode en el array, porque el método "post" de la clase ya lo hace.

El otro error que veo es que no usas el post, si te fijas en la clase, el método "get" no usa datos POST (para eso tienes el método "post").

Yo haría algo así:

Código PHP:
Ver original
  1. require_once("HttpConnection.php");
  2. $http = new HttpConnection();  
  3. $http->setCookiePath("/my_cookie_path/");  
  4. $http->init();  
  5.  
  6. $apost = array('username' =>"hola", 'password' => "hola");
  7.  
  8. echo($http->post("http://paginadondevaliaelform.php", $apost));  
  9.  
  10. $http->close();

Saludos.
  #9 (permalink)  
Antiguo 23/11/2012, 01:16
 
Fecha de Ingreso: septiembre-2006
Mensajes: 94
Antigüedad: 17 años, 7 meses
Puntos: 1
Respuesta: Enviar post con usuario y password

Ok, ¿y cómo hago para una vez validado el formulario con el post enviado, poder descargarme una página que esté por detrás, en la que haga falta la validación para entrar?
ES posible que esto funcione en todas los formularios o por seguridad en algunas no se podrá?
Un saludo.
  #10 (permalink)  
Antiguo 23/11/2012, 01:29
 
Fecha de Ingreso: abril-2012
Ubicación: 41°37′00″N, 00°37′00″E
Mensajes: 462
Antigüedad: 12 años, 1 mes
Puntos: 33
Respuesta: Enviar post con usuario y password

Hola,

Vamos a ver, te hago un ejemplo rápido:

Supón que quieres entrar a mipagina.com, ok?

Si entras por el explorador, lo primero que te sale es un form de login (mipagina.com/login.php).

Inspeccionamos la web y vemos que el form es algo así:

Código:
<form name="miform" method="post" action="checkLogin.php">
  <input name="email" type="text" />
  <input name="pass" type="text" />
</form>
Ahora sabemos que envía a "checkLogin", por POST, y envía dos campos (email y pass).

Pues yo haría así:

Código PHP:
Ver original
  1. require_once("HttpConnection.php");
  2. $http = new HttpConnection();  
  3. $http->setCookiePath("/my_cookie_path/");  
  4. $http->init();  
  5.  
  6. $apost = array('username' =>"DoH", 'password' => "hola");
  7.  
  8. echo($http->post("http://mipagina.com/checkLogin.php", $apost));  
  9.  
  10. $http->close();

Esto me devolvería, por así decirlo "la ejecución" de checkLogin.php...

Piensa en cURL como una especie de AJAX para PHP...

Ahora bien, si dices que quieres sacar los precios de una web que es tuya, por qué no desarrollas una pequeña API para poder acceder con AJAX?

Te ahorraría tener que acceder con cURL (yo lo usé para ir a las páginas de una API que creé también... intenté con AJAX pero me daba problemas de ACD, por eso accedía con cURL (pero los problemas de ACD se pueden resolver fácil!)

Cualquier cosa relacionada con AJAX recuerda postearla en el foro de JS (si creas un tema avísame y te lo comento allí mejor!)

Saludos!
  #11 (permalink)  
Antiguo 23/11/2012, 08:39
 
Fecha de Ingreso: septiembre-2006
Mensajes: 94
Antigüedad: 17 años, 7 meses
Puntos: 1
Respuesta: Enviar post con usuario y password

Es un ejercicio de programación, los precios los tengo en MySql, es muy fácil sacarlos.
Hasta donde tu me dices, lo tengo claro, pero estoy pensando en descargarme en una de las páginas del área restringida, con el file_get_contents, y analizarla.
Después de ejecutar el código que has puesto anteriormente, si quisiera descargar el html de una de las páginas, ¿cómo debería hacerlo?
Un saludo.
  #12 (permalink)  
Antiguo 23/11/2012, 12:45
 
Fecha de Ingreso: abril-2012
Ubicación: 41°37′00″N, 00°37′00″E
Mensajes: 462
Antigüedad: 12 años, 1 mes
Puntos: 33
Respuesta: Enviar post con usuario y password

Deberías analizar cómo se accede a esa zona restringida, es decir, que cookies, variables GET y POST se necesitan, requisitos, etc...

Entonces, emular un login, almacenando los resultados que necesites en variables, de manera similar a:

Código:
$var = $http->post("http://mipagina.com/checkLogin.php", $apost);
Como te comentaba en posts anteriores, yo no llegué tan lejos con cURL, simplemente lo usé como puente para emular AJAX (es decir, en vez de usar AJAX, usé cURL).

Te dejo otro enlace que encontré cuando buscaba info de cURL.

En este enlace, explican como hacer login en twitter y actualizar el estado. Supongo que de ahí podrás sacar una buena base para seguir con tu proyecto.

http://www.tecnocaos.com/usando-la-l...curl-para-php/

Saludos!

Etiquetas: formulario, password, post, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:30.