jueves, 17 de mayo de 2007

ASP Titulos, keywords, descriptions etc... Infinitas

Supongamos por un momento que tenemos una pequeña o mediana web con suficiente texto como para estar bién posicionados y el muy amable señor que está destrás del posicionamiento en google no nos posiciona bién porque no tenemos suficientes "palabras clave" en nuesta web.

Ese señor amigo de los chinitos que hay dentro el ordenador, calculadoras (que era eso ~), etc...

Bueno, supongamos que para crear unos 60 titulos diferentes, con sus 60 descripciones y sus X keywords necesitaríamos unas... no sé... ¿60 páginas? ¡¡¡viva las matemáticas, y yo sin carrera!!!

Poz No!

vamos a empezar por una bd con 6 campos
id_palabras/ par_impar / title / keywors / description /

que serían del palo
autonumérico/ num/ num/ txt/ txt/ txt o memo (dependiendo del texto que queráis meter)

Bién, vamos a explicar. La función de esta obra será crear una variable de tiempo que según los segundos que sean y si los minutos son pares o impares, imprimiremos en los metas cierta info.
(Recomiendo hacerlo por fechas y no por segundos ya que google no nos visita en todo momento, pero por segundos lo podreis comprobar sin tener que esperar un dia entero)

Ok. Rellenamos los campos ejemplo:

1-
par_impar 0 o 1 / Las mejores bodas del año / boda, tu boda, bodaclick, todoboda, bouquetnuvis / Visita la mejor web de bodas del mundo entero. Preparate para el mejor dia de tu vida ... etc!

2-
par_impar 0 .....

Así hasta 120 o hasta 86.400 <- segs/dia, pero empezemos por poco y cada un@ a lo suyo.

Despues de una semanita pensando e introduciendo frases, keywords y titles, vamos a programar.

Function RandomNumber(inicio, fin)
Randomize()
RandomNumber = Int((fin - inicio + 1) * Rnd + inicio)
End Function
segundos=RandomNumber(0, 59)
segundos=Cint(segundos)+1
select Case abs(segundos) mod 2
case 0:
par_impar = 0
case 1:
par_impar = 1
end select

Esta simple función lo que hace es sacar un numero aleatorio entre 0 i 59 que seran los segundos i le sumamos 1 ya que no hay id_palabras "0". Luego comprobamos que sea par o impar para los minutos(esto hos lo podeis ahorrar si solo habeis escrito 60 registros).
seguimos:

<!--#include file="Connections/extres.asp" -->

Set rs = Server.CreateObject("ADODB.Recordset")
rs.ActiveConnection = MM_extres_STRING
rs.Source = "SELECT * FROM palabras where segundos = "&segundos&" and minutos= "&minutos
rs.CursorType = 0
rs.CursorLocation = 2
rs.LockType = 1
rs.Open()
title=rs("title")
description=rs("description")
keys=rs("keywords")
rs.close()
set rs=Nothing

Acabamos de crear una consulta a la base de datos y hemos sacado al azar un registro de entre 120.

Ahora ya podemos construir nuestra página:

<title><%=tittle%> del blog de Redkram</ title>
<meta name="description" content="<%=description%>">
<meta name="keywords" content="<%=keys%>">

Ademas no hos olvideis de los famosos <!-- , los titles , alts, summarys, names... todo dinámico.

Si usáis este código, pediría que hiciérais referencia a este blog, ya se que no se hace casi nunca, pero algún dia se debe empezar.
Gracias de antemano.

SALU2 RK (Códigos desenvolupados o modificados, en ningún caso copiados)

miércoles, 16 de mayo de 2007

Ajax y asp

Vamos a explicar un poco el concepto ajax.

set http_obj = createObject("Microsoft.XMLHTTP")
* Creamos un objeto
XMLHTTP http_obj.Open "POST",url,false
* Hacemos la conexión
http_obj.Send()
* Consultamos la conexión a la página web
codigo = Server.HTMLEncode(http_obj.responseText)
* Transformamos el texto en html

falta declarar la url del sitio.

url="http://www.google.es/"

Ahora bién, los &,<,>, ' , se van a tomar viento y lo único que se ve es una espécies de código fuente inútil para ser publicado en tu web.

Para eso existe la función que he explicado en el otro pos de abajo.

Function acomodar(cadena)
end function
Esta función lo que hará será reemplazar el texto que se bé en pantalla y transformarlo en un código fuente legíble por cualquier explorador.

function acomodar (cadena)
cadena=replace(cadena,"&amp;amp;amp;amp; lt;","<") cadena=replace(cadena,"& gt;",">")
cadena=replace(cadena,""","'")
cadena=replace(cadena,"& amp;","&")
cadena=replace(cadena,"& amp;# 65535;1","ña")
cadena=replace(cadena,"?","'")
acomodar=cadena
End function

y ahora solo faltaría
codigo=acomodar(codigo)
He imprimir el código en pantalla.

Código completo (quitar los espacios de la cadena replace, sq sino no se vería el código en el blog):

function acomodar (cadena)
cadena=replace(cadena,"& lt;","<")
cadena=replace(cadena,"& gt;",">")
cadena=replace(cadena,"& quot;","'")
cadena=replace(cadena,"& amp;","&")
cadena=replace(cadena,"& #65535;1","ña")
cadena=replace(cadena,"& #65535;","'")
acomodar=cadena
End function

url="http://www.google.es"
set http_obj = createObject("Microsoft.XMLHTTP")
http_obj.Open "POST",url,false
http_obj.Send()
codigo = Server.HTMLEncode(http_obj.responseText)
codigo=acomodar(codigo)
response.write codigo

P.D: Si tenéis problemas con otros carácteres como acentos, dieresis, ñ, ç, y otros, solo necesitáis añadir esas líneas en la cadena replace. cadena=replace(cadena,"& aacute","á") etc...
Si usáis este código, pediría que hiciérais referencia a este blog ya que me lo he currado y no está copiado y pegado, ya se que no se hace casi nunca, pero algún dia se debe empezar.
Gracias de antemano.

SALU2 RK (Códigos desenvolupados o modificados, en ningún caso copiados)

Inyección SQL?

Para empezar el blog voy a explicar los grandes fallos que todos sabeis o deberíais de saber, que hay en sql.
Mejor dicho, no voy a explicar casi nada, simplemente voy a dar una sola "tecla" que hace maravillas.

Como "sabéis" lo más tipico en sql es '1 or 1=1' o era 1 or 1=1 o era'1' o .... el problema es que existe un código que pone:

cadena=replace(cadena,"'","")

y en ese caso nos han jodido el invento.

Tambien se puede poner directamente en la url.

www.miweb.com/arxivo.asp?variable=1 or 1=1

pero si como en mi caso compruebas que sea una cadena lógica y además la pasas por el replace... tampoco.

Ahora bién, hay cientos de webs que lógicamente o no tan lógicamente, ya que son sus BDS las que peligran, que cogen un tutorial y no modifican ni una líneas, las cuelgan en su web y ¡urra! ya están protegidos, se fian solo porque en la web del tuto pone corregir errores FUNCIONA.

¿Seguro?

function acomodar (cadena)
cadena=replace(cadena,"'","")
cadena=replace(cadena,"""","")
cadena=replace(cadena,""","")
cadena=replace(cadena,"=","")
cadena=replace(cadena,"&","")
cadena=replace(cadena," ","")
acomodar=cadena
End function

ademas puedes añadir...

cadena_1=replace(cadena_1,"á","& aacute;")
cadena_1=replace(cadena_1,"à","& agrave;")
cadena_1=replace(cadena_1,"Á","& Aacute;")
cadena_1=replace(cadena_1,"À","& Agrave;")
cadena_1=replace(cadena_1,"é","& eacute;")
cadena_1=replace(cadena_1,"è","& egrave;")
cadena_1=replace(cadena_1,"É","& Eacute;")
cadena_1=replace(cadena_1,"È","& Egrave;")
cadena_1=replace(cadena_1,"í","& iacute;")
cadena_1=replace(cadena_1,"ì","& igrave;")
cadena_1=replace(cadena_1,"ï","& iuml;")
cadena_1=replace(cadena_1,"Ï","& Iuml;")
cadena_1=replace(cadena_1,"Í","& Iacute;")
cadena_1=replace(cadena_1,"Ì","& Igrave;")
cadena_1=replace(cadena_1,"ó","& oacute;")
cadena_1=replace(cadena_1,"ò","& ograve;")
cadena_1=replace(cadena_1,"Ó","& Oacute;")
cadena_1=replace(cadena_1,"Ò","& Ograve;")
cadena_1=replace(cadena_1,"ú","& uacute;")
cadena_1=replace(cadena_1,"ù","& ugrave;")
cadena_1=replace(cadena_1,"Ú","& Uacute;")
cadena_1=replace(cadena_1,"Ù","& Ugrave;")
cadena_1=replace(cadena_1,"ñ","& ntilde;")
cadena_1=replace(cadena_1,"Ñ","& Ntilde;")
cadena_1=replace(cadena_1,"¡","& #161;")
cadena_1=replace(cadena_1,"!","& #33;")
cadena_1=replace(cadena_1,"¿","& #191;")
cadena_1=replace(cadena_1,"º","& #176;")
cadena_1=replace(cadena_1,"ª","& #170;")
cadena_1=replace(cadena_1,vbCrLf,"")
cadena_1=replace(cadena_1,Chr(34),"& #34;")
cadena_1=replace(cadena_1,"“","& #34;")
cadena_1=replace(cadena_1,"”","& #34;")
cadena_1=replace(cadena_1,"«","& #34;")
cadena_1=replace(cadena_1,"»","& #34;")
cadena_1=replace(cadena_1,"¿","& iquest;")
cadena_1=replace(cadena_1,"€"," e uro")
cadena_1=replace(cadena_1,"$"," d olar")


etc, etc...

Ahora no seais tan burros de coger el código y no continuar leyendo...

¡falta en todos los tutos una línea y para mi la mas importante!

¿Que pasa con el comodín de SQL, que pasa con esa tecla maravillosa que ni diós usa?
¿Que pasa? que como este país va tan bién que no hace falta hacer la declaración y por ese motivo no conocemos el fantástico simbolo del iva 16% el tanto por ciento ;)

%%%%%%%%%%%%%% <- lo pongo muchas veces para que os acordéis ;) Entrad en una web, que tenga un buscador apuntando a una BD ej: www.agencias-de-viajes.com <-- no seais capullos e ir probando en otras y no puteéis siempre a las mismas webs que se cuelgan en los tutos. Id donde pone Buscador de Agencias: y escribid % y a esperar. ... esperando ... esperando ... esperando resultados 6856 agencias de viajes.

cadena=replace(cadena,"%","") <-- solo faltaba una línea

Si usáis este código, pediría que hiciérais referencia a este blog, ya se que no se hace casi nunca, pero algún dia se debe empezar.
Gracias de antemano.
SALU2 RK (Códigos desenvolupados o modificados, en ningún caso copiados)

Bienvenidos a redkram

Os doy la bienvenida a este nuevo blog.

Como todos sabeis los programadores somos gente que no explica los trucos. Esto al menos aquí (espero) cambiará, empezando por mi.

Eso si, apartir de mañana que ahora me voy a sobar que hay que currar.

SALU2 RK