elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  obtener enlace HTTP con preg_match ??
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: obtener enlace HTTP con preg_match ??  (Leído 2,555 veces)
Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
obtener enlace HTTP con preg_match ??
« en: 18 Febrero 2011, 22:32 pm »

Buenas..

Hice un scrtip para acortar mis URLs en mi blog, el proceso lo hago muy simple:

1- me conecto al sitio is.gd con sockets.
3- Envio la peticion GET con mi URL.
4- Me responde con la URL acortada.

Mi problema, es que en lo que es la trama HTTP me llegan otros valores extras, esto me llega:

1- Url a acortar: http://lab.sie-group.net.
2- GET que invoco en el socket: http://is.gd/create.php?format=simple&url=http://lab.sie-group.net
3- Respuesta a nivel de socket: 13 http://is.gd/DuSqfL 0.

Si lo hacemos via Navegador, recivo solo: http://is.gd/DuSqfL, el valor 12 y 0 no se porque estan en la trama, en fin que puedo hacer para sacar la url ?

Este es mi code:

Código
  1. <?php
  2. function is_gd( $url )
  3. {
  4. $host= 'is.gd'; # hostname
  5. $get= 'create.php?format=simple'; # get basico  
  6. $url= urlencode($url); # acondicionamos url
  7. $get .= '&url='. $url; # concatenamos la url
  8. $puerto= 80; # puerto a consultar
  9.  
  10. # trama HTTP
  11. $http_request= "GET /$get HTTP/1.1\r\n";
  12. $http_request .= "Host: $host \r\n";
  13. $http_request .= "Connection: close\r\n";
  14. $http_request .= "\r\n";
  15.  
  16. # consultamos
  17. if( ($fd= @fsockopen($host, $puerto, $errno, $errstr, 10 ))==FALSE ) # abrimos socket
  18. return 0; # error, no se abrio el socket
  19.  
  20. fwrite($fd, $http_request); # enviamos datos
  21. $buf=''; # buffer de recepcion
  22.  
  23. while( !feof($fd) ) # leeremos sockets hasta que termine  
  24. $buf .= fgets($fd, 2048); # leemos
  25. fclose($fd); # cerramos flujo  
  26.  
  27. $estado='';
  28. preg_match("{[0-9]{3}}", $buf, $a); # obtenemos codigo recivido en transferencia
  29. $estado= $a[0]; # copiamos estado
  30. unset($a);
  31.  
  32. $failstatus= array( "400", "406", "502", "503" ); # codigos de error en consulta
  33. foreach( $failstatus as $key )
  34. {
  35. if( !strcmp($key, $estado ) ) # si son iguales
  36. echo 'Error en consulta: '. $estado;
  37. # return 0; # error en la consulta
  38. }
  39.  
  40. $r= explode( "\r\n\r\n", $buf );
  41.  
  42. echo '<br>Respuesta: '. $r[1];
  43. }
  44. ?>

Se imprime:

Respuesta: 13 http://is.gd/DuSqfL 0

Saludos !


En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: obtener enlace HTTP con preg_match ??
« Respuesta #1 en: 18 Febrero 2011, 23:47 pm »

Código
  1. <?php
  2. function is_gd( $url )
  3. {
  4. $host= 'is.gd'; # hostname
  5. $get= 'create.php?format=simple'; # get basico  
  6. $url= urlencode($url); # acondicionamos url
  7. $get .= '&url='. $url; # concatenamos la url
  8. $puerto= 80; # puerto a consultar
  9.  
  10. # trama HTTP
  11. $http_request= "GET /$get HTTP/1.1\r\n";
  12. $http_request .= "Host: $host \r\n";
  13. $http_request .= "Connection: close\r\n";
  14. $http_request .= "\r\n";
  15.  
  16. # consultamos
  17. if( ($fd= @fsockopen($host, $puerto, $errno, $errstr, 10 ))==FALSE ) # abrimos socket
  18. return 0; # error, no se abrio el socket
  19.  
  20. fwrite($fd, $http_request); # enviamos datos
  21. $buf=''; # buffer de recepcion
  22.  
  23. while( !feof($fd) ) # leeremos sockets hasta que termine  
  24. $buf .= fgets($fd, 2048); # leemos
  25. fclose($fd); # cerramos flujo  
  26.  
  27.        preg_match("/13\r\n([^\r\n]+)/", $buf, $result);
  28.        echo $result[0];
  29. }
  30.  
  31. is_gd('http://lab.sie-group.net/');
  32. ?>

Salida:
Código:
http://is.gd/q9rWNd


« Última modificación: 18 Febrero 2011, 23:55 pm por ~ Yoya ~ » En línea

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Obtener IP de internet e IP de puerta de enlace de un router sin acceso
Hacking
pulsar 9 15,533 Último mensaje 7 Junio 2010, 15:12 pm
por pulsar
Obtener Cabecera HTTP con VB6
Programación Visual Basic
ProgramadorVB 1 2,022 Último mensaje 9 Junio 2010, 03:40 am
por DarkStreaM
Ayuda con conversion a preg_match
Desarrollo Web
Alex_bro 3 3,006 Último mensaje 30 Octubre 2011, 23:46 pm
por Alex_bro
Ayuda con preg_match()
PHP
xustyx 2 3,000 Último mensaje 10 Noviembre 2011, 15:39 pm
por xustyx
Problema con preg_match ¡¡¡¡
PHP
nuevo_1991 0 1,515 Último mensaje 27 Marzo 2013, 03:23 am
por nuevo_1991
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines