Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Castg! en 19 Febrero 2010, 23:15 pm



Título: Acortador de links!
Publicado por: Castg! en 19 Febrero 2010, 23:15 pm
bueno, me decidi a postear el codigo de un acortador de links que hice hace poco. tuve problemas con el dominio pero ya se terminaron los tramites. el resto de la web esta en pleno desarrollo xD! pero bueno. para usarlo pueden entrar al link: http://castg.com.ar/tiny (http://castg.com.ar/tiny) osea, para ser un acortador es un toq grande el dominio xD pero esta bueno para las sqli o para poner por ejemplo post de elhacker en el subnick del msn xD! jejejej bueno. pero ademas de poner mi link, les dejo el codigo fuente:
[les aviso que es re simple, puede tener vulnerabilidades, igual con janito24 ya andubimos probando algo, pero les agradeceria que me pongan otras mas que encuentren. si encuentran algo como para hacer flood ¬¬ como janito  >:( tengan encuenta que no es un servidor en mi pc, asi que se las arreglan con el host, igualmente es gratiutio!!!]

insert.php (ingresa la direccion a la base de datos, si ya existe, devuelve la clave de la misma) tambien guarda la ip y el dia con la hora... [para el flood xD!]
Código
  1. <?php
  2. $ref=$_SERVER["HTTP_REFERER"];
  3. $svn=$_SERVER['SERVER_NAME'];
  4. if(!preg_match("/^(http:\/\/((www\.)?$svn))/", $ref)){
  5. echo chr(172).chr(172);
  6. exit();
  7. }
  8. if(isset($_GET['uri_p']) && $_GET['uri_p']!=""){
  9. $uri_p = $_REQUEST['uri_p'];
  10. if(!preg_match("/^(ht|f)tp(s)?:\/\//", $uri_p)){
  11. $uri_p = "http://".$uri_p;
  12. }
  13. require('func.php');
  14. $mysql = mysql_connect("host","user","pass");
  15. mysql_select_db("basededatos", $mysql);
  16. $nodupli = mysql_query("SELECT * FROM datos WHERE url='".urlencode($uri_p)."'", $mysql);
  17. if(mysql_num_rows($nodupli)!=0){
  18. $resultado_nd=mysql_fetch_array($nodupli);
  19. $nuevadir="http://".$_SERVER["SERVER_NAME"].str_replace("insert.php","",$_SERVER["PHP_SELF"]).$resultado_nd['token'];
  20. echo $nuevadir;
  21. }else{
  22. $token_f=clave();
  23. $nodupli = mysql_query("SELECT * FROM datos WHERE token='$token_f'");
  24. while(mysql_num_rows($nodupli)!=0){
  25. $token_f=clave();
  26. $nodupli = mysql_query("SELECT * FROM datos WHERE token='$token_f'");
  27. }
  28. mysql_query("INSERT INTO datos (url,token,ip,date) VALUES ('".urlencode($uri_p)."','$token_f','".$_SERVER['REMOTE_ADDR']."','".date("j \d\e\l n \d\e Y \a \l\a\s h:i:s")."')", $mysql);
  29. $nuevadir="http://".$_SERVER["SERVER_NAME"].str_replace("insert.php","",$_SERVER["PHP_SELF"]).$token_f;
  30. echo $nuevadir;
  31. }
  32. }else{
  33. echo "Ingresa la direccion";
  34. }
  35. ?>
  36.  

index.php (el ajax que utilizo es uno que encontre por ahi :p ami en firefox me anda bien, no probe en otros navegadores... si tienen un mejor metodo aca toy :P)
Código
  1. <?php
  2. $pag = "
  3. <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
  4. <html>
  5. <head>
  6. <title>Castg! - Anonimizador de links</title>
  7. <link href=\"style.css\" rel=\"stylesheet\" type=\"text/css\" />
  8. <script type=\"text/javascript\">
  9. function insertar(url){
  10.     div_result = document.getElementById('result');
  11.     peti=getXMLHttp();  
  12.     peti.open(\"GET\", \"insert.php?uri_p=\"+url);  
  13.     peti.onreadystatechange=function() {  
  14.        if (peti.readyState==4) {
  15. //saco la ***** de publicidad
  16.            if(peti.responseText.split(\"\\n\")){
  17.                resultado=peti.responseText.split(\"\\n\");
  18.            div_result.value = resultado[0];
  19.            }else{
  20.            div_result.value = peti.responseText;
  21.            }
  22.        }  
  23.    }  
  24.    peti.send(null);  
  25. }
  26. function  getXMLHttp()
  27. {
  28.  var xmlHttp
  29.  
  30.  try
  31.  {
  32.    //Firefox, Opera 8.0+, Safari
  33.    xmlHttp = new XMLHttpRequest();
  34.  }
  35.  catch(e)
  36.  {
  37.    //Internet Explorer
  38.    try
  39.    {
  40.      xmlHttp = new ActiveXObject(\"Msxml2.XMLHTTP\");
  41.    }
  42.    catch(e)
  43.    {
  44.      try
  45.      {
  46.        xmlHttp = new ActiveXObject(\"Microsoft.XMLHTTP\");
  47.      }
  48.      catch(e)
  49.      {
  50.        alert(\"Your browser does not support AJAX!\")
  51.        return false;
  52.      }
  53.    }
  54.  }
  55.  return xmlHttp;
  56. }
  57. </script>
  58. </head>
  59. <body>
  60. <div id=\"on\">
  61. <input type=\"text\" name=\"uri_p\" id=\"uri_p\" value=\"Ingresa la direccion\" autocomplete=\"off\" onFocus=\"if(this.value=='Ingresa la direccion'){this.value='';}\" style=\"background-color: #FFFFFF; font-size:10pt; color:#2F2F7B;\">
  62. <input type=\"button\" onclick=\"insertar(document.getElementById('uri_p').value)\" value=\"Anonimizar!\">
  63. <div>
  64. <br/>
  65. <p><span class=\"Estilo1\">Tinycastg:
  66.  </span><input name=\"result\" type=\"text\" id=\"result\" onClick=\"if(this.value!=''){this.select();}\" style=\"background-color: #CCCCCC; font-size:10pt; color: #222299;\" readonly=\"readonly\" >
  67. </div>
  68. </div>
  69. </body>
  70. </html>
  71. ";
  72. if(!isset($_GET['t'])){
  73. echo $pag;
  74. }else{
  75. $mysql = mysql_connect("host","user","pass");
  76. mysql_select_db("basededatos", $mysql);
  77. $url = mysql_query("SELECT * FROM datos WHERE token='".$_GET['t']."'");
  78. if(mysql_num_rows($url)!=0){
  79. $url = mysql_fetch_array($url);
  80. header("Location: ".urldecode($url['url']));
  81. }else{
  82. echo $pag;
  83. }
  84. }
  85. ?>
  86.  

func.php (hay una sola funcion xD pero no tenia ganas de cambiar todo el code. estuve buscando alguna encriptacion corta de unos 7 u 8 caracteres peo no encontre. asi que se me ocurrio esta forma para poder elegir la cantidad de caracteres que quiera...)

Código
  1. <?php
  2. function clave(){
  3. $chars='7539846210qazwsxedcrfvtgbyhnu7539846210jmikolpPOIUYTREWQALKJHGFDSMNBVCXZ';
  4. $l_chars=strlen($chars);
  5. $l_max=8;
  6. $clave='';
  7. for($i=0;$i<$l_max;$i++){
  8. $l_rand=rand(1,$l_chars);
  9. $clave .= substr($chars,$l_rand,1);
  10. }
  11. return $clave;
  12. }
  13. ?>
  14.  

los estilos quedan a gusto propio.. les dejo tambien por ultimo el .htaccess. esta colocado en el mismo directorio que los archivos...

Código
  1. RewriteCond %{REQUEST_FILENAME} !-f
  2. RewriteCond %{REQUEST_FILENAME} !-d
  3. #estos dos comprueban que no sean ni archivos ni directorios... lo demas ya se sabe...
  4. RewriteEngine on
  5. RewriteBase /tiny
  6. RewriteRule ^(.*) index.php?t=$1
  7. #reescribe xD, toma los datos por expresion regular y los pasa a la otra cadena (como preg_replace)


bueno, este es mi codigo. pronto estara la gran firma que te dice todos tus datos :D:D te va a decir los datos tuyos del foro y otras cosas mas :D:D: jejejje >:D

un saludo grande a todos y espero que les sea util para algo ...


Título: Re: Acortador de links!
Publicado por: KrossPock en 20 Febrero 2010, 04:23 am
Esta bueno...  ya me va a servir algun dia  >:D :P


Título: Re: Acortador de links!
Publicado por: fede_cp en 20 Febrero 2010, 15:56 pm
Quedo bueno el script!, los scripts mejor dicho, lo unico que cambiaria seria el seleccionado con ajax, me parece muy largo codigo para una funcion como esas.


saludos!


Título: Re: Acortador de links!
Publicado por: Castg! en 20 Febrero 2010, 18:40 pm
osea, por ahora no aprendi ajax xD! eso es un codigo generico de por internet, y es largo por la compatibilidad de los navegadores.-...


Título: Re: Acortador de links!
Publicado por: fede_cp en 20 Febrero 2010, 19:27 pm
jaja, claro lo que decia es que no es necesariamente en ajax, en javascript seguro que se puede

compatibilidad de navegadores != microsoft internet explorer


saludos!


Título: Re: Acortador de links!
Publicado por: Castg! en 20 Febrero 2010, 19:59 pm
no te entiendo lo que queres decir :-\