Comunidad PHPeros

Lenguajes => PHP => Mensaje iniciado por: -Pituko- en 28 de Marzo de 2011, 04:45:33 am

Título: [Tutorial] Crear acortador de url's
Publicado por: -Pituko- en 28 de Marzo de 2011, 04:45:33 am
Bueno, lo único que no hice desde 0 es el .htacces, lo demás es código mio, y no es el que utilizo en rpdbin.tk (ese no usa base de datos).
Aclaro: no es ninguna aplicación pre-fabricada, solo una base que les doy.
Código SQL:
Código: [Seleccionar]
CREATE TABLE IF NOT EXISTS `urls` (
  `url` varchar(255) NOT NULL,
  `id` varchar(5) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Este código no necesita mucha explicación, se crea una tabla llamada urls la cual contiene dos campos llamados url e id, como su nombre lo dice, en el campo url se almacenara la dirección del sitio web acortado, y en id el codigo generado, por ejemplo: hazw6.

.HTACCES
Código: [Seleccionar]
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^([a-zA-Z0-9]+)[/]?$ verurl.php?id=$1
</IfModule>
Acá se encuentra la magia para que en vez de teclear así: http://miurl/verurl.php?id=hazw6 tecleemos, http://miurl/hazw6.


verurl.php
Código: [Seleccionar]
<?php
include("conectar.php");
$url mysql_fetch_array(mysql_query("SELECT * FROM urls WHERE id = &#39;".$_GET[&#39;id&#39;]."&#39;"));
header ("Location: ".$url[&#39;url&#39;]."");
?>
Acá, se incluye al archivo conecar.php (Recuerden, cada quien a su manera) para después hacer la consulta a la Base de Datos y redireccionar con los datos obtenidos.

index.php
Código: [Seleccionar]
<?php
include("conectar.php");
if (isset(
$_POST[&#39;ok&#39;])) {
  
if(empty($_POST[&#39;url&#39;])) {
   
echo "No puedes dejar la URL vacía";
  } else {
   
$array = array(123456789, &#39;a&#39;, &#39;b&#39;, &#39;c&#39;, &#39;d&#39;, &#39;e&#39;, &#39;f&#39;, &#39;g&#39;, &#39;h&#39;, &#39;i&#39;, &#39;j&#39;, &#39;k&#39;, &#39;l&#39;, &#39;m&#39;, &#39;n&#39;, &#39;o&#39;, &#39;p&#39;, &#39;q&#39;, &#39;r&#39;, &#39;s&#39;, &#39;t&#39;, &#39;u&#39;, &#39;v&#39;, &#39;w&#39;, &#39;x&#39;, &#39;y&#39;, &#39;z&#39;);
   
$id "".$array[rand(034)]."".$array[rand(034)]."".$array[rand(034)]."".$array[rand(034)]."".$array[rand(034)]."";
   
mysql_query("INSERT INTO urls (url, id) VALUES (&#39;".$_POST[&#39;url&#39;]."&#39;,&#39;".$id."&#39;)");
   
echo "La url <b>".htmlspecialchars($_POST[&#39;url&#39;])."</b> ha sido reducida a: <b><a href=&#39;http://".$_SERVER["SERVER_NAME"]."/".$id."&#39;>http://".$_SERVER["SERVER_NAME"]."/".$id."</a></b>.";
    
}
  }
?>

<form method="post" action="">
<input name="url" id="url" value="http://" /><br>
<input type="submit" name="ok" id="ok" />
</form>
Este archivo, aunque creo que es evidente, registra la url y el id en la Base de Datos, y te genera un link para redireccionar a la url específicada.

El conectar cada quien lo hace a su manera.
Cada quien utilizelo como guste, espero que les haya servido, fue probado en mi localhost
Título: Re:[Tutorial] Crear acortador de url's
Publicado por: Physlet en 28 de Marzo de 2011, 04:56:53 am
Observaciones:
- Debes crear una función que genere los caracteres de una forma no tan redundante, ya que crear 5 variables distintas para generar 5 números aleatorios no es muy buena idea que digamos, mucho código innecesario.
- Se puede dar la situación de que se repitan códigos y no haces nada ni en PHP ni en SQL para que no se dé.
- Si en el archivo verurl.php solo necesitas la columna 'url' no es necesario que llames a ambas con asterisco (*).
Título: Re:[Tutorial] Crear acortador de url's
Publicado por: Drek ! en 28 de Marzo de 2011, 22:56:36 pm
Observaciones:
- Debes crear una función que genere los caracteres de una forma no tan redundante, ya que crear 5 variables distintas para generar 5 números aleatorios no es muy buena idea que digamos, mucho código innecesario.
- Se puede dar la situación de que se repitan códigos y no haces nada ni en PHP ni en SQL para que no se dé.
- Si en el archivo verurl.php solo necesitas la columna 'url' no es necesario que llames a ambas con asterisco (*).

Lo mismo !! pero yo detallmo más!.

Primeramente no pasa nada si mandas a llamar ambas con * .. pero podrias utilizar nada mas.
list($url) con mysql_query("SELECT url FORM xxx");

Tambien podrias hacer un while para que si el codigo existe regenere otra ves !! y si aun sigue existiendo otra ves.. y asi hasta que verifique que no se repita =D!.
Título: Re:[Tutorial] Crear acortador de url's
Publicado por: Physlet en 28 de Marzo de 2011, 23:27:12 pm
Primeramente no pasa nada si mandas a llamar ambas con * .. pero podrias utilizar nada mas.
list($url) con mysql_query("SELECT url FORM xxx");
Lo del list es cuestión de comodidad a mi parecer, pero igual no se hace con el query, sino con el fetch.
Título: Re:[Tutorial] Crear acortador de url's
Publicado por: Focux en 28 de Marzo de 2011, 23:55:22 pm
Bueno en mi opinion no me gusta la manera en que hiciste este sistema pero para ya que lo hiciste asi te recomiendo dos funciones, range y merge
Título: Re:[Tutorial] Crear acortador de url's
Publicado por: -Pituko- en 29 de Marzo de 2011, 04:54:57 am
Observaciones:
- Debes crear una función que genere los caracteres de una forma no tan redundante, ya que crear 5 variables distintas para generar 5 números aleatorios no es muy buena idea que digamos, mucho código innecesario.
- Se puede dar la situación de que se repitan códigos y no haces nada ni en PHP ni en SQL para que no se dé.
- Si en el archivo verurl.php solo necesitas la columna 'url' no es necesario que llames a ambas con asterisco (*).
Mira, especifico, no es una aplicación pre-fabricada, si no, solo una base para que los demás la utilizen.
No pienso hacerle el código completo a mucha gente, que como saben, se roba el trabajo de alguien, pero eso ya es cuestión de honestidad.
Título: Re:[Tutorial] Crear acortador de url's
Publicado por: Physlet en 29 de Marzo de 2011, 04:57:54 am
Mira, especifico, no es una aplicación pre-fabricada, si no, solo una base para que los demás la utilizen.
No pienso hacerle el código completo a mucha gente, que como saben, se roba el trabajo de alguien, pero eso ya es cuestión de honestidad.
No es una aplicación prefabricada, es una aplicación que has codeado TÚ, y como me gusta aportar, lo he hecho. Está muy bien que ayudes, pero trata de no hacerlo de forma mediocre, ¿por qué mediocre? Porque sabes todo lo que puedes mejorar en tu aporte, pero no lo quieres hacer solo porque no quieres darle la comida masticada a los demás.

Ahora quiero que vayas y le digas a los de PHP que no te den todo premasticado y te obliguen a crear tu propio lenguaje antes de usar este.
Título: Re:[Tutorial] Crear acortador de url's
Publicado por: -Pituko- en 29 de Marzo de 2011, 05:05:16 am
No es una aplicación prefabricada, es una aplicación que has codeado TÚ, y como me gusta aportar, lo he hecho. Está muy bien que ayudes, pero trata de no hacerlo de forma mediocre, ¿por qué mediocre? Porque sabes todo lo que puedes mejorar en tu aporte, pero no lo quieres hacer solo porque no quieres darle la comida masticada a los demás.

Ahora quiero que vayas y le digas a los de PHP que no te den todo premasticado y te obliguen a crear tu propio lenguaje antes de usar este.
Ok, ahora le agrego un poco de protección y demás pero hasta ahí, porque llegue tarde y tengo algunas cosas que hacer, también me acorde de mejorar el mensaje principal, porque en las reglas dice que un tutorial, tiene forma de hacerse, o al menos, una explicación.
Título: Re:[Tutorial] Crear acortador de url's
Publicado por: reef en 29 de Marzo de 2011, 05:35:22 am
Me gusta, pero igual toma algunos consejos que te dejaron por hay :), thanks y con esto se pueden hacer mas cosas sinceramente vale.
Título: Re:[Tutorial] Crear acortador de url's
Publicado por: -Pituko- en 29 de Marzo de 2011, 05:40:17 am
Me gusta, pero igual toma algunos consejos que te dejaron por hay :), thanks y con esto se pueden hacer mas cosas sinceramente vale.
Ya los tome en cuenta ;).