Foros del Web » Programando para Internet » PHP »

Se puede enviar datos con CURL a paginas ASP?

Estas en el tema de Se puede enviar datos con CURL a paginas ASP? en el foro de PHP en Foros del Web. Buenas, Hasta la fecha se que se puede utilizar en PHP, pero me pregunto si se pueden enviar datos POST a un formulario que este ...
  #1 (permalink)  
Antiguo 27/05/2010, 15:26
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Se puede enviar datos con CURL a paginas ASP?

Buenas,

Hasta la fecha se que se puede utilizar en PHP, pero me pregunto si se pueden enviar datos POST a un formulario que este hecho en ASP.

Se puede utilizar igualmente y funciona? se recibe respuestas?

Muchas gracias de antemano!
  #2 (permalink)  
Antiguo 27/05/2010, 15:32
rpv
 
Fecha de Ingreso: febrero-2010
Mensajes: 275
Antigüedad: 14 años, 2 meses
Puntos: 10
Respuesta: Se puede enviar datos con CURL a paginas ASP?

Sí, CURL no depende de que el cliente (sitio a donde apuntas) sea en PHP u otro CGI.
  #3 (permalink)  
Antiguo 27/05/2010, 23:43
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Se puede enviar datos con CURL a paginas ASP?

Cita:
Iniciado por rpv Ver Mensaje
Sí, CURL no depende de que el cliente (sitio a donde apuntas) sea en PHP u otro CGI.
Gracias, lo probaré ;)
  #4 (permalink)  
Antiguo 28/05/2010, 11:34
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Se puede enviar datos con CURL a paginas ASP?

Buenas,

Estoy teniendo problemas para enviar por datos por POST a un script.

El primer inconveniente que veo es que no puedo enviarle directamente al script los datos...

Procedimiento usuario:
Entrar en la web https://www.bookingh10hotels.com
Pulsar sobre el botón "Reservar un hotel", nos llevara a una página la cual no se puede acceder directamente sin haber pulsado previamente ese botón.
Una vez en esa pagina pulsar sobre el boton azul oscuro que dice "CLUB H10 y Promociones", esto mostrará una capa que esta oculta con un formulario.
Este formulario está publicado más abajo "comentado en el código".
Es desde ahí donde se debe enviar por POST (entiendo la única variable), CodPromocion.

Para ello he construido lo siguiente:

Código PHP:
Ver original
  1. <?php
  2.    
  3. $cookietmp='.';
  4. $target_url = "https://www.bookingh10hotels.com";
  5.  
  6.  
  7. $ch = curl_init();
  8. curl_setopt($ch, CURLOPT_URL, $target_url);
  9. curl_setopt($ch, CURLOPT_COOKIEJAR, $cookietmp);
  10. curl_setopt($ch, CURLOPT_FAILONERROR, true);
  11. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
  12. curl_setopt($ch, CURLOPT_AUTOREFERER, true);
  13. curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
  14. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
  15. curl_setopt($ch, CURLOPT_TIMEOUT, 180);
  16. $html = curl_exec($ch);
  17.  
  18. /* Una vez llegados aqui, interesa enviar el formulario siguiente por POST */
  19.  
  20. $target_url2="https://www.bookingh10hotels.com/reservasweb/cargar_grupo_codPromo_post.asp";
  21.  
  22. $fields = array(
  23.     'CodPromocion'=>"1234",
  24.     );
  25.  
  26. foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
  27. rtrim($fields_string,'&');
  28.  
  29. curl_setopt($ch, CURLOPT_URL, $target_url2);
  30. curl_setopt($ch, CURLOPT_COOKIEJAR, $cookietmp);
  31. curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
  32. curl_setopt($ch, CURLOPT_FAILONERROR, true);
  33. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
  34. curl_setopt($ch, CURLOPT_AUTOREFERER, true);
  35. curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
  36. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
  37. curl_setopt($ch, CURLOPT_TIMEOUT, 180);
  38. $html2 = curl_exec($ch);
  39.  
  40. echo "<pre>";
  41. echo $html2;
  42. echo "</pre>";
  43.  
  44. /*
  45.  
  46. <form action="cargar_grupo_codPromo_post.asp" method="POST">
  47.     <tr>
  48.         <td><br><u>Código Promocional</u></td>
  49.     </tr>
  50.     <tr>
  51.         <td colspan=3>Si dispones de un código promocional o de colectivo, introdúcelo aquí. Los códigos promocionales no son acumulables a otras ofertas ni promociones, <br><br></td>
  52.     </tr>
  53.     <tr>
  54.         <td></td>
  55.         <td align="center"><input type="text" name="CodPromocion" maxlength=20 value=""></td>
  56.         <td><input type="submit" class="BotonEnviarPagPresup" value="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enviar&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"></td>
  57.     </tr>
  58. </form>
  59.  
  60. */
  61. ?>

El procedimiento FALLA, cuando intento hacer la otra petición
Warning: curl_exec(): 2 is not a valid cURL handle resource in C:\AppServ\www\00-laboratorio_test\secciones\CURL\curl_hoteles.php on line 39

¿Qué estoy haciendo mal?

¿Se puede hacer de una manera más directa?

Si os fijáis intento hacer una segunda conexión aprovechando que estoy en una pagina... pero no se si esto es posible :S

Muchas gracias de antemano!
  #5 (permalink)  
Antiguo 28/05/2010, 11:41
rpv
 
Fecha de Ingreso: febrero-2010
Mensajes: 275
Antigüedad: 14 años, 2 meses
Puntos: 10
Respuesta: Se puede enviar datos con CURL a paginas ASP?

tienes dos CURL usando la misma variable $ch y en el primer caso lo ejecutas ($html = curl_exec($ch);), por lo que cuando intentas ejecutarlo por segunda ocasión te dice que $ch ya no es una instancia válida de CURL.

Por cierto, qué haces con la primera petición?
  #6 (permalink)  
Antiguo 28/05/2010, 11:48
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Se puede enviar datos con CURL a paginas ASP?

Cita:
Iniciado por rpv Ver Mensaje
tienes dos CURL usando la misma variable $ch y en el primer caso lo ejecutas ($html = curl_exec($ch);), por lo que cuando intentas ejecutarlo por segunda ocasión te dice que $ch ya no es una instancia válida de CURL.

Por cierto, qué haces con la primera petición?
Con la primera petición no hago nada, simplemente "pensaba" utilizarla como si fuese un usuario que entra en la web y pulsa sobre el botón "Reservar un hotel" para que me muestre la siguiente página.

Ya que si accedo directamente a
https://www.bookingh10hotels.com/res...resupuesto.asp
Sin haber pasado por el botón "Reservar un hotel" me salta el siguiente mensaje

Código:
Ha transcurrido el tiempo máximo de inactividad. Agradecemos vuelva a empezar marcando el siguiente enlace:
Ha transcorregut el temps màxim d´activitat. Agraïm torni a començar marcant el següent enllaç:
The maximum activity time has expired. Please, try again
Der Höchszeit wurde verfliessen. Probieren Sie noch einmal bitte
Le temps maximum d’inactivité est passé. Veuillez commencer à nouveau
Il tempo massimo d´inattività é trascorso. Cominciare di nuovo 
Era un paso intermedio para acceder a esa página y desde esa pagina realizar el envio por POST al formulario
https://www.bookingh10hotels.com/res...Promo_post.asp

Muy lioso no? imagino que lo ideal sería hacer la petición directamente al script del formulario, pero no me deja, siempre me salta el mensaje anterior. De ahí que lo intentara de esa forma xD

Se te ocurre alguna manera?

Muchas gracias de antemano!
  #7 (permalink)  
Antiguo 30/05/2010, 05:40
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Se puede enviar datos con CURL a paginas ASP?

Un nuevo intento sin éxito...

Código PHP:
Ver original
  1. <?php
  2.    
  3. $cookietmp='.';
  4. $target_url = "https://www.bookingh10hotels.com";
  5.  
  6. $ch = curl_init();
  7. curl_setopt($ch, CURLOPT_URL, $target_url);
  8. curl_setopt($ch, CURLOPT_COOKIEJAR, $cookietmp);
  9. curl_setopt($ch, CURLOPT_FAILONERROR, true);
  10. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
  11. curl_setopt($ch, CURLOPT_AUTOREFERER, true);
  12. curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
  13. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
  14. curl_setopt($ch, CURLOPT_TIMEOUT, 180);
  15. $html = curl_exec($ch);
  16.  
  17. /* Una vez llegados aqui, interesa enviar el formulario siguiente por POST */
  18. $target2_url="https://www.bookingh10hotels.com/reservasweb/cargar_grupo_codPromo_post.asp";
  19.  
  20. $fields = array(
  21.     'CodPromocion'=>"1234"
  22.     );
  23.  
  24. foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
  25. rtrim($fields_string,'&');
  26.  
  27. $ch = curl_init();
  28. curl_setopt($ch, CURLOPT_URL, $target2_url);
  29. curl_setopt($ch, CURLOPT_COOKIEJAR, $cookietmp);
  30. curl_setopt($ch, CURLOPT_FAILONERROR, true);
  31. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
  32. curl_setopt($ch, CURLOPT_AUTOREFERER, true);
  33. curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
  34. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
  35. curl_setopt($ch, CURLOPT_TIMEOUT, 180);
  36. curl_setopt($ch, CURLOPT_REFERER,'https://www.bookingh10hotels.com');
  37. curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
  38.  
  39. $html2 = curl_exec($ch);
  40.  
  41. echo "<pre>";
  42. echo $html2;
  43. echo "</pre>";
  44.  
  45. /*
  46.  
  47. <form action="cargar_grupo_codPromo_post.asp" method="POST">
  48.     <tr>
  49.         <td><br><u>Código Promocional</u></td>
  50.     </tr>
  51.     <tr>
  52.         <td colspan=3>Si dispones de un código promocional o de colectivo, introdúcelo aquí. Los códigos promocionales no son acumulables a otras ofertas ni promociones, <br><br></td>
  53.     </tr>
  54.     <tr>
  55.         <td></td>
  56.         <td align="center"><input type="text" name="CodPromocion" maxlength=20 value=""></td>
  57.         <td><input type="submit" class="BotonEnviarPagPresup" value="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enviar&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"></td>
  58.     </tr>
  59. </form>
  60.  
  61. */
  62. ?>

¿Alguna sugerencia para enviar datos a ese formulario?

Muchas gracias de antemano!

Última edición por neodani; 30/05/2010 a las 07:39

Etiquetas: asp, curl, enviar
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 23:00.