Ver Mensaje Individual
  #4 (permalink)  
Antiguo 20/02/2011, 13:24
yamifr07
 
Fecha de Ingreso: febrero-2011
Mensajes: 16
Antigüedad: 13 años, 2 meses
Puntos: 1
Respuesta: Curl y cookies

hola. gracias por responder.
les cuento lo que realmente quiero. toda mi flia tiene personal como proveedor de telefonia celular. lo que queria es no tener q llenar el campo nombre y el campo celuar cada vez que les quiero mandar un sms desde la pagina http://sms2.personal.com.ar/Mensajes

probe ponerlo en un iframe dentro de un dominio personal pero no puedo modificar ya que el acceso a un frame de un server externo siempre es denegado.

buscando un poco me encontre con curl. si bien yo puedo acceder a la pagina y obtener los datos que necesito para mostrar el captcha (la url del mismo) la pagina de personal me obliga a mantener la sesion abierta, es decir si uso un captcha de otra pestaña que abri, manda el mensaje pero si uso el captcha de una que abri y cerre antes de mandar, no lo hace.

estoy programando algo pero me dice "revise la configuracion del navegador

Código PHP:
Ver original
  1. <?
  2.  
  3. $url = "http://sms2.personal.com.ar/Mensajes/sms.php";
  4. $options = array(
  5. CURLOPT_RETURNTRANSFER => true, // devuelve la web
  6. CURLOPT_HEADER => true, // devuelve los headers de la web
  7. CURLOPT_FOLLOWLOCATION => false, // sigue redirecciones (por ej, si al iniciar curl es direccionado a otra web)
  8. CURLOPT_ENCODING => "", // soportar todos los "encodings"
  9. CURLOPT_AUTOREFERER => true, // set referer on redirect
  10. CURLOPT_CONNECTTIMEOUT => 120, // el timeout para realizar la coneccion
  11. CURLOPT_TIMEOUT => 120, // el timeout de respuesta de la web
  12. CURLOPT_MAXREDIRS => 10, // maxima cantidad de redirecciones
  13. CURLOPT_COOKIEFILE => "cookies.txt", // de donde leer cookies
  14. CURLOPT_COOKIEJAR => "cookies.txt" // en donde guardar cookies
  15. );
  16. $ch = curl_init($url); // inicia el curl dando la web
  17. curl_setopt_array($ch, $options); // setea las opciones
  18. $content = curl_exec($ch); // executa la operacion curl y devuelve el contenido de la web en "$content"
  19. curl_close($ch); // cierra operacion
  20. $a = strpos($content,"Filename");
  21. $b = substr($content,$a+17,24);
  22. echo $b;
  23. // Aca podriamos preguntarnos si algun tipo de señal en el codigo html nos confirma el login, si es asi, procedemos a la proxima parte..
  24. if (isset($_POST['ok'])){
  25. $url = "http://sms2.personal.com.ar/Mensajes/sms.php";
  26. $codigo= $_POST['codigo'];
  27. $file=$_POST['Filename'];
  28. $postfields = 'historico=&FormValidar=validar&CODAREA=11&NRO=50252481&DE_MESG_TXT=yami&MESG_TXT=test11&Enviar.x=41&Enviar.y=10&pantalla=&sizebox=700&form_flag=&Snb=1150252481&subname=1150252481&sig=yami&msgtext=test11&form=ht4&size=10&btn_send=SEND&Filename='.$file.'&codigo='.$codigo;
  29. $options = array(
  30. CURLOPT_HEADER => true,
  31. CURLOPT_FOLLOWLOCATION => false,
  32. CURLOPT_ENCODING => "",
  33. CURLOPT_AUTOREFERER => true,
  34. CURLOPT_CONNECTTIMEOUT => 120,
  35. CURLOPT_TIMEOUT => 120,
  36. CURLOPT_MAXREDIRS => 10,
  37. CURLOPT_POST => 1,
  38. CURLOPT_POSTFIELDS => "$postfields", // datos post
  39. CURLOPT_COOKIEFILE => "cookies.txt", // de donde leer cookies anteriormente guardadas
  40. CURLOPT_COOKIEJAR => "cookies.txt" // en donde guardar cookies
  41. );
  42.  
  43. $ch = curl_init($url);
  44. curl_setopt_array($ch, $options);
  45. $content = curl_exec($ch);
  46. $text = $content;
  47. echo $text;  
  48.  
  49. }
  50. ?>

Código HTML:
Ver original
  1. <form name="f1" id="f1" action="h.php" method="post">
  2. <input name="Filename" type="text" value="tmp/img"/>
  3. <input name="codigo" type="text" value="codigo"/>
  4. <input name="ok" id="ok" type="submit" value="Enviar" style="width:80px">
  5. </form>"