Foros del Web » Programando para Internet » PHP »

Acortador URL

Estas en el tema de Acortador URL en el foro de PHP en Foros del Web. Buenas tardes, me he registrado en el foro exclusivamente porque tengo una duda existencial sobre los acortadores de URL, aunque de siempre he estado revisandolo ...
  #1 (permalink)  
Antiguo 11/06/2013, 10:54
 
Fecha de Ingreso: junio-2013
Mensajes: 12
Antigüedad: 10 años, 10 meses
Puntos: 0
Acortador URL

Buenas tardes, me he registrado en el foro exclusivamente porque tengo una duda existencial sobre los acortadores de URL, aunque de siempre he estado revisandolo y mirando las respuestas y preguntas para aprender mas de PHP, asi que ahora que soy un miembro activo podre contestar también cuando sepa algo.

Según tengo entendido yo los pasos para acortar una URL a groso modo serian estos:

1º- Recoger la url larga
2º- Acortarla de con un método si no he entendido mal de 32 caracteres (Letras y numeros) o de 64 (ya no se aqui exactamente que entraria en juego)
3º- Comprobar que no este en nuestra base de datos dicha url acortada
4º- Siendo si no esta, introducirla
5º- ¿?

En el 5º paso es donde me quedo atorado ya que no se como hacer para que cuando entren en http://www.midominio.com/eRgF32 redirija a la dirección larga.

Muchas gracias por vuestro tiempo.

Un saludo.
  #2 (permalink)  
Antiguo 11/06/2013, 10:58
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 19 años, 2 meses
Puntos: 4
Respuesta: Acortador URL

Guarda la URL larga también, luego consultas si el codigo de la URL corta existe, si es verdadero, rediriges a la URL larga asociada a dicho código, no es difícil.

Saludos.
  #3 (permalink)  
Antiguo 11/06/2013, 11:05
 
Fecha de Ingreso: junio-2013
Mensajes: 12
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Acortador URL

El problema es que cuando llega a http://www.midominio.com/eRgF32 ahi realmente no hay nada entonces mi duda es, como hacer saber a mi servidor que ha de ir hacia alli, no se si realmente me estoy explicando bien.

Por cierto gracias por la rapidez de contestación.
  #4 (permalink)  
Antiguo 11/06/2013, 11:20
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Acortador URL

Para acortar la URL usa algun metodo tipo hash, lo importante es que:

1) Logicamente te quede mas corta
2) Sea UNICA

Cita:
<?php

// supon tu sabes que el ultimo ID fue este:
$last_id = 54556;
$hash = base_convert($last_id+1, 10,16);

El resultado es algo como 'd51c' para el ejemplo, cuando la recibes HACES LO OPUESTO:

Cita:
// REVIERTO y obtengo el ID para recuperar URL
$segmento_url = 'd51c';
$id = base_convert($segmento_url, 16,10);

Ves que facil ? el resultado fue 54556
__________________
Salu2!
  #5 (permalink)  
Antiguo 11/06/2013, 11:28
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: Acortador URL

@italico76: los HASH No son reversibles, lo que hacen los servicios de shorturl es registrar la url origen con su HASH en una tabla en base de datos, de modo que se pueda obtener la url original en función de su HASH generado.
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #6 (permalink)  
Antiguo 11/06/2013, 11:29
 
Fecha de Ingreso: junio-2013
Mensajes: 12
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Acortador URL

Vale, a ver si ahora os he captado, me quieres decir Italico76 que no he de usar un método aleatorio para hacer la reducción de la url y después comprobarla si no, hacerlo con un método que pueda más tarde revertirlo para sacar la url original.
¿He comprendido bien?

De todas maneras, esto que me has dicho de revertirlo no se donde he de decirselo, perdonar si la respuesta es tan obvia pero parece que hoy estoy muy espeso.
Cita:
Iniciado por Italico76 Ver Mensaje


El resultado es algo como 'd51c' para el ejemplo, cuando la recibes HACES LO OPUESTO:




Ves que facil ? el resultado fue 54556
  #7 (permalink)  
Antiguo 11/06/2013, 11:33
Avatar de anacona16  
Fecha de Ingreso: marzo-2010
Ubicación: Bogota DC
Mensajes: 610
Antigüedad: 14 años, 1 mes
Puntos: 52
Respuesta: Acortador URL

Cita:
Iniciado por maycolalvarez Ver Mensaje
lo que hacen los servicios de shorturl es registrar la url origen con su HASH en una tabla en base de datos, de modo que se pueda obtener la url original en función de su HASH generado.
Esto es precisamente lo que Trollian quiere hacer y según sus mensajes ya lo tiene claro, lo que no sabe es: una vez llegado a www.dominio.com/5rHBy24 como hace para capturar ese HASH consultar la url larga y luego redireccionar.

Según el aqui www.dominio.com/5rHBy24 no existe nada.

Estas usando algun CMS, Framework para lo que estas haciendo?
__________________
Aprendiendo!!!
  #8 (permalink)  
Antiguo 11/06/2013, 11:38
 
Fecha de Ingreso: junio-2013
Mensajes: 12
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Acortador URL

Bieeeeeeeeeen anacona16 me sentia un total incomprendido y es que llega una hora de la tarde que no se explicarme con toda claridad.

Estoy trabajando solamente con PHP y MySQL a pelo, ni Framework ni CMS.
  #9 (permalink)  
Antiguo 11/06/2013, 11:53
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Acortador URL

Cita:
Iniciado por maycolalvarez Ver Mensaje
@italico76: los HASH No son reversibles, lo que hacen los servicios de shorturl es registrar la url origen con su HASH en una tabla en base de datos, de modo que se pueda obtener la url original en función de su HASH generado.
No soy informatico pero diria que es un 'hash deterministico' lo que propuse y aun asi no se llame 'hash' ...... la respuesta que di es satisfactoria:

1) Para empezar no genero nada al azar que despues me encuentre no sea UNIQUE

2) Es mas corta que la secuencia original


Por otro lado, Don @maycolalvarez, Ud miro el codigo que coloque ? pues hablo de ALMACENAR la url y tambien de OBTENERLA EN FUNCION DEL HASH GENERADO
__________________
Salu2!

Última edición por Italico76; 11/06/2013 a las 11:59
  #10 (permalink)  
Antiguo 11/06/2013, 13:54
 
Fecha de Ingreso: junio-2013
Mensajes: 12
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Acortador URL

Pero la pregunta que yo tenia era como obtienes el HASH generado una vez tienes ya la url corta. Donde he de poner ese código y que pasos he de seguir.

Vuelvo a dar las gracias a todos los que me estáis ayudando.
  #11 (permalink)  
Antiguo 11/06/2013, 14:41
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Acortador URL

Cita:
Iniciado por Trollian Ver Mensaje
Pero la pregunta que yo tenia era como obtienes el HASH generado una vez tienes ya la url corta. Donde he de poner ese código y que pasos he de seguir.

Vuelvo a dar las gracias a todos los que me estáis ayudando.
Ud leyo mi mensaje de Hoy, 14:20 ?


Ese codigo lo he probado..... no hay mucho mas que hacer:

1) Preguntas la url completa
2) Preguntas a tu base de datos cual es el ID mas grande (de la ultima insercion)
3) En base a es ultimo ID, generas el 'HASH' como te coloque arriba
4) Almacenas en la DB

5) Cuando alguien ingresa con la URL corta, obtienes el segmento donde esta el hash
6) Ejecutas el segundo codigo que coloque que regenera el ID para recuperar la URL FULL de la DB a partir de ese HASH
7) Con el ID, obtienes la URL de la DB
8) Redireccionas a esa URL completa

Es un HASH DETERMINISITICO y obviamente reversible


Si lo quisieras mas seguro harias un md5(url_enconde()) por ejemplo pero no le veo el sentido, nadie va a colocar una URL de un archivo industrial
__________________
Salu2!
  #12 (permalink)  
Antiguo 11/06/2013, 21:35
Avatar de anacona16  
Fecha de Ingreso: marzo-2010
Ubicación: Bogota DC
Mensajes: 610
Antigüedad: 14 años, 1 mes
Puntos: 52
Respuesta: Acortador URL

Ya que usas PHP a pelo -- Como dices tu -- y ya que lo primero que se ejecuta en tu sistema es un index.php y sin saber mucho como estas haciendo las cosas, podrias hacerlo asi:

Código PHP:
Ver original
  1. // Archivo index.php
  2. <?php
  3.  
  4. // Capturar HASH desde la url www.dominio.com/U6w7u
  5. // Busca alguna funcion para hacerlo
  6. // Para el ejemplo utlizaremos cualquiera
  7. $hash = 'U6w7u';
  8.  
  9. // Suponiendo que tienes algunas url's ya reservadas en tu sistema como por ejemplos
  10. // www.dominio.com/contacto
  11. // www.dominio.com/privacidad
  12. // ...
  13. // Para estas URL's no necesitarias buscar la URL larga
  14. // Se crea un array con url's de tu web
  15. $url_s = array('contacto', 'privacidad');
  16.  
  17. // Compruebo que el HASH no esta en las url's de tu sistema
  18. // Si devuelve FALSE se hara la busqueda de la url larga en tu BD
  19. if (!in_array($hash, $url_s)) {
  20.  
  21.   // Suponiendo que la tabla donde guardas las urls se llame tabla_urls
  22.   // Para este ejemplo uso PDO
  23.   $consulta = $db->prepare('SELECT url_larga FROM tabla_urls WHERE hash_url_corta = :hash');
  24.   $consulta->execute(array(':hast' => $hash));
  25.  
  26.   $resultados_consulta = $consulta->fetchColumn();
  27.  
  28.   // Has comprobacion de que la consulta te devuelve resultados
  29.   if ($consulta->rowCount() > 0) {
  30.    
  31.     // Si hay resultados redirecciono
  32.     header('Location: ' . $resultados_consulta['url_larga']);
  33.   } else {
  34.  
  35.     // Ya decides tu que hacer aqui
  36.   }
  37.  
  38. }

Varias NOTAS: Hace mucho no uso PDO a mano limpia, haz algun tipo de validacion al HASH que recibes desde la URL.

Espero te sirva.
__________________
Aprendiendo!!!
  #13 (permalink)  
Antiguo 12/06/2013, 14:14
 
Fecha de Ingreso: junio-2013
Mensajes: 12
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Acortador URL

Bueno, probare vuestras soluciones y ya os comento. Muchas gracias chic@s.
  #14 (permalink)  
Antiguo 20/06/2013, 03:06
 
Fecha de Ingreso: junio-2013
Mensajes: 12
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Acortador URL

Buenas, a ver he estado dandole vueltas al asunto y sigo con un problema

Con el ejemplo que me ha puesto anacona16:

Si entramos en www.dominio.com/U6w7u, me ha de redirigir a index.php y ahi obtener la parte de U6w7u.

Bien, he buscado por internet como obtener el, denominado por vosotros, hash y nada, me he vuelto loco loco.

¿Alguna idea muchachos?

Conmigo os ganareis el cielo de los phpdores!!! :P

Última edición por Trollian; 20/06/2013 a las 04:28

Etiquetas: url
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:19.