Foros del Web » Programando para Internet » ASP Clásico »

Buscador Asp De Victor Garay.(no Bd)

Estas en el tema de Buscador Asp De Victor Garay.(no Bd) en el foro de ASP Clásico en Foros del Web. Hola, bueno, aquí teneis el buscador en asp sin BD que ha creado Victor Garay. Funciona bien, pero hay pulirlo un poco, y es que ...
  #1 (permalink)  
Antiguo 12/09/2002, 11:37
Avatar de epa2  
Fecha de Ingreso: abril-2002
Ubicación: Málaga
Mensajes: 1.475
Antigüedad: 22 años, 2 meses
Puntos: 9
Buscador Asp De Victor Garay.(no Bd)

Hola,

bueno, aquí teneis el buscador en asp sin BD que ha creado Victor Garay. Funciona bien, pero hay
pulirlo un poco, y es que resulta que cuando comienza la búsqueda te saca los resultados
también del código fuente. Por ejemplo, si la palabra clave a buscar es "windows" te saca el
resultado de esa página si en el código fuente hay escrito algo por el estilo de javascrip:windows.close()
¿entiendes?

Por lo demás todo va bien, pruebalo y lo comentas en este post.

¡¡¡¡¡A VER SI HAY ALGUIEN QUE RESUELVA EL PROBLEMA DE EVITAR QUE BUSQUE EN EL CÓDIGO FUENTE¡¡¡¡


Aqui teneis los códigos, ale, a disfrutarlo....

<html>
<body>
<p align="left"><font color="#FF0000" face="Comic Sans MS" size="2">Aprendiz
de todo y maestro de nada[/CODE]
</p>
</body>
</html>
  #2 (permalink)  
Antiguo 12/09/2002, 11:38
Avatar de epa2  
Fecha de Ingreso: abril-2002
Ubicación: Málaga
Mensajes: 1.475
Antigüedad: 22 años, 2 meses
Puntos: 9
Re: Buscador Asp De Victor Garay.(no Bd)

DEFAULT.ASP

&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Buscar&lt;/title&gt;
&lt;/head&gt;
&lt;p align=&quot;center&quot;&gt;
&lt;form method=&quot;POST&quot; action=&quot;buscar.asp&quot;&gt;

&lt;p&gt;&lt;font face=&quot;Arial&quot; size=&quot;2&quot;&gt;Palabra a ó frase a buscar: &lt;input type=&quot;text&quot; name=&quot;clave&quot; size=&quot;20&quot; tabindex=&quot;0&quot;&gt;&lt;input type=&quot;submit&quot; value=&quot;Buscar&quot; name=&quot;B1&quot; tabindex=&quot;1&quot;&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face=&quot;Arial&quot; size=&quot;2&quot;&gt;Se hará una búsqueda de esta palabra sobre un
listado de archivos, entregándote un listado de enlaces que
contengan esta palabra.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;





DEPURAR.ASP

`SIRVE PARA BORRAR LOS ARCHIVOS DE TEXTO QUE SE CREAN CON LAS CONSULTAS DE BUSQUEDAS, JE JE

&lt;%
'Rutina para depurar archivos .txt con mas de una
'hora de haber sido creado


strFolder =&quot;./&quot; 'directorio actual
strFolder = Server.MapPath(strFolder)

Dim objFSO, objFolder, fileItem, fileCollection, arrFiles, i

Set objFSO = Server.CreateObject(&quot;Scripting.FileSystemObje ct&quot;)
Set objFolder = objFSO.GetFolder(strFolder)
Set fileCollection = objFolder.Files

For Each fileItem In fileCollection
if Lcase(Right(fileItem.name, 4)) = &quot;.txt&quot; and DateDiff(&quot;n&quot;,FileItem.DateCreated,now()) &gt;59 Then

objFso.Deletefile(Server.Mappath(FileItem.Name))
End if
Next

Set objFSO = Nothing
Set objFolder = Nothing
Set fileCollection = Nothing
%&gt;



&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Untitled Document&lt;/title&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=iso-8859-1&quot;&gt;
&lt;/head&gt;

&lt;body bgcolor=&quot;#FFFFFF&quot; text=&quot;#000000&quot;&gt;

&lt;/body&gt;
&lt;/html&gt;

<html>
<body>
<p align="left"><font color="#FF0000" face="Comic Sans MS" size="2">Aprendiz
de todo y maestro de nada[/CODE]
</p>
</body>
</html>
  #3 (permalink)  
Antiguo 12/09/2002, 11:39
Avatar de epa2  
Fecha de Ingreso: abril-2002
Ubicación: Málaga
Mensajes: 1.475
Antigüedad: 22 años, 2 meses
Puntos: 9
Re: Buscador Asp De Victor Garay.(no Bd)

BUSCAR.ASP


&lt;%
Response.Buffer = True
%&gt;
&lt;!--#include file=&quot;depurar.asp&quot; --&gt;

&lt;%
redim path(3)
path(1)= server.mappath(&quot;../carpeta1&quot;) 'en donde se hará la busqueda
Path(2) = server.mappath(&quot;../carpeta2&quot;) 'en donde se hara la busqueda
Path(3) = server.mappath(&quot;../carpeta3&quot;) 'en donde se hara la busqueda





Exts = &quot;htm,html,asp&quot; 'extensiones de los archivos sobre los que se hará la busqueda

clave = Request.Form(&quot;clave&quot;) 'clave a buscar

Redim Resultados(1000,1) 'se podrán registrar hasta 1000 posibles resultados
Session(&quot;Encontrados&quot;) = 0
Session(&quot;Totales&quot;) = 0

Inicio = Now()
resx = 0
for x= 1 to 3
%&gt;


&lt;%



Call Buscar(Path(x),Exts,clave) 'empieza la busqueda
next
cuantos = Session(&quot;encontrados&quot;)
call DualSorter(cuantos) 'se ordena o se 'rankean' los resultados
call Crear_Archivo_resultados

If cuantos&gt;0 then
tomaron = datediff(&quot;s&quot;,Inicio,Now())
Response.Redirect &quot;mostrar.asp?clave=&quot; &amp; clave &amp; &quot;&amp;Tomaron=&quot; &amp; Tomaron &amp; &quot;&amp;Totales=&quot; &amp; Session(&quot;Totales&quot;)&amp; &quot;&amp;Inicio=1&quot;
Else




Response.Write &quot;&lt;center&gt;&lt;Font face='verdana,arial,helvetica' size='2'&gt;&quot;
Response.Write &quot;&lt;b&gt;http://&quot; &amp; Request.ServerVariables(&quot;HTTP_HOST&quot;) &amp; &quot;&lt;/b&gt;&lt;br&gt;&lt;hr size='2'&gt;&quot;
Response.Write &quot;No se encontrarón archivos que contengan la palabra clave:&lt;b&gt; &quot; &amp; clave &amp; &quot;&lt;/b&gt;&lt;br&gt;&quot;
Response.Write &quot;&lt;a href='Default.asp'&gt; &gt;&gt; Pulsa aquí para realizar otro busqueda &lt;&lt;&lt;/a&gt;&lt;/center&gt;&lt;/font&gt;&quot;

End if
%&gt;

&lt;%
Function Buscar(PathSpec,Exts,clave)
If right(PathSpec,8)&lt;&gt;&quot;_vti_cnf&quot; then
Set Fso = CreateObject(&quot;Scripting.FileSystemObject&quot ;)
Set FolderInfo = Fso.GetFolder(PathSpec)
Set FileList = FolderInfo.Files
'resx = 0
For Each File in FileList 'obtener todo el listado de archivo de dir actual
Session(&quot;Totales&quot;) = Session(&quot;Totales&quot;) + 1
FileName = UCase(Cstr(File.Name))
If InStr(1, Exts, fso.GetExtensionName(file.Name), vbTextCompare) &gt; 0 Then
page = contenido(PathSpec &amp; &quot;/&quot; &amp; FileName) 'solo una vez se accesa el archivo
Session(&quot;Coincidencias&quot;)= 0
If buscar_todo(page,clave) then
Session(&quot;Encontrados&quot;) = Session(&quot;Encontrados&quot;) + 1
Resultados(resx,0) = &quot;&lt;font size='2'&gt;&lt;A HREF=&quot;&quot;&quot; &amp; FormatURL(PathSpec) &amp; &quot;/&quot; &amp; FileName &amp; &quot;&quot;&quot;&gt;&quot;
Resultados(resx,0) = Resultados(resx,0) &amp; Titulo(page) &amp; &quot;&lt;a/&gt;&lt;/font&gt;&lt;br&gt;&quot;
metas = obtener_metas(page) ' obtener todos los meta tags de la página
If len(metas)&gt;0 then
j2 = Split(metas,&quot;|&quot;,-1,1)
k = 1
Metas = Ubound(j2)
For m=0 to Ubound(j2)
Resultados(resx,0) = Resultados(resx,0) &amp; j2(m)
k = k + 1
Next
End if

if File.Size &lt; 1024 Then
tam = File.Size &amp; &quot; Bytes&quot;
ElseIf File.Size &lt; 1048576 Then
tam = Round(FileSizeTotal/1024, 2) &amp; &quot; KB&quot;
Else
tam = Round((FileSizeTotal/1024)/1024.1, 2) &amp; &quot; MB&quot;
End if

Resultados(resx,0) = Resultados(resx,0) &amp; tam &amp; &quot; Archivo creado el: &quot; &amp; File.DateCreated &amp; &quot; Ultima modificación: &quot; &amp; File.DateLastModified &amp; &quot;&lt;br&gt;&quot;
Resultados(resx,1) = Session(&quot;Coincidencias&quot;)
resx = resx + 1
End if
End if
Next
Set f = Fso.GetFolder(PathSpec)
Set fc = f.SubFolders
For Each Folder in fc 'recursividad dentro de los directorios
Call Buscar(PathSpec &amp; &quot;\&quot; &amp; Folder.Name,Exts,clave)
Next
End if
End Function
%&gt;

&lt;%
Sub Crear_Archivo_resultados
set fso = Server.CreateObject(&quot;scripting.FileSystemObje ct&quot;)
Arch_temp = Server.MapPath(Session.SessionId &amp; &quot;.txt&quot;)
set File = fso.CreateTextFile(Arch_temp, true,false)

For k=0 to Session(&quot;Encontrados&quot;)-1
File.WriteLine(Resultados(k,0))
File.WriteLine(Resultados(k,1))
Next
File.Close
Set file = nothing
Set fso = nothing
End sub
%&gt;

&lt;%
Function Contenido(page) 'obtengo el contenido del archivo y lo pongo en una variable
Set objFSO2 = Server.CreateObject(&quot;Scripting.FileSystemObje ct&quot;)
Set objFile = objFSO2.OpenTextFile(page)
strContents = objFile.ReadAll
objFile.Close
Set objFile = Nothing
Set objFSO2 = Nothing
Contenido = strContents

End Function
%&gt;

&lt;%
Function Buscar_todo(page,clave) ' si existe la clave, busco de caso contrario paso al sig archivo
Dim regEx, Match, Matches
Set regEx = New RegExp
regEx.Pattern = clave
regEx.IgnoreCase = True
regEx.Global = True
Set Matches = regEx.Execute(page)
If Matches.Count &gt; 0 then
Buscar_todo = True
Else
Buscar_todo = False
End if
For Each Match in Matches
Session(&quot;Coincidencias&quot;) = Session(&quot;Coincidencias&quot;) + 1 'servira para el ranking
Next
End Function
%&gt;

&lt;%
Function Titulo(page)
i=instr(1,page, &quot;&lt;title&gt;&quot;,1)
if i&gt;0 THEN
f=INSTR(1,page, &quot;&lt;/title&gt;&quot;,1)
Titulo= Resaltar(mid (page, i+7, f-i-7), clave)
ELSE
Titulo = &quot;Página sin titulo&quot;
end if
'Set objRegExp = New RegExp
'strMatch = &quot;&lt;title&gt;(.*?)&lt;\/title&gt;&quot;
'objRegExp.Pattern = strMatch
'objRegExp.IgnoreCase = True
'objRegExp.Global = True
'Set objMatches = objRegExp.Execute(page)
'If objMatches.Count &gt; 0 then
'Titulo = Resaltar(Mid(objMatches(0).Value, 8, Len(objMatches(0).Value) - 15),clave)
'Else
' Titulo = &quot;Página sín título&quot;
'End If
'Set objRegExp = Nothing
End Function
%&gt;

&lt;%
Function obtener_metas(page) ' para leer todos los meta tags
Linea = Split(page,vbLf, -1, 1)
for r = 0 to UBound(Linea)
If Instr(Linea(r),&quot;&lt;META&quot;) then
lineas = Split(Linea(r),chr(34),-1,1)
On error resume next
If Len(Lineas(1))&gt;0 and Len(Lineas(3))&gt;0 then
obtener_metas = obtener_metas &amp; &quot;&lt;b&gt;&quot; &amp; Lineas(1) &amp; &quot;&lt;/b&gt; &quot; &amp; resaltar(Lineas(3),clave) &amp; &quot;&lt;br&gt;&quot; &amp; &quot;|&quot;
End if
End if
Next
End Function
%&gt;

&lt;%
Function resaltar(texto_a_afectar,palabra_a_resaltar) 'funcion para resaltar algun texto incluido en otro
Dim regEx, Match, Matches
Set regEx = New RegExp
regEx.Pattern = palabra_a_resaltar
regEx.IgnoreCase = True
regEx.Global = True
Set Matches = regEx.Execute(texto_a_afectar)
For Each Match in Matches
texto_a_afectar = replace(texto_a_afectar,Match.Value,&quot;&lt;font color=GREEN&gt;&lt;i&gt;&lt;b&gt;&quot; &amp; match.value &amp; &quot;&lt;/b&gt;&lt;/i&gt;&lt;/font&gt;&quot;)
Next
resaltar = texto_a_afectar
End Function
%&gt;

&lt;%
Function FormatURL(strPath)
ipos=instr(1,strpath,&quot;Html&quot;,1)
str=mid(strpath,ipos+4,len(strpath))
formatURL = &quot;http://www.tusitio.com&quot; &amp; str
'formatURL =replace(direccion,&quot;html/&quot;,&quot;&quot;)
'FormatURL = Replace(str,&quot;\&quot;,&quot;/&quot;)
End Function
%&gt;

&lt;% 'function taken from www.4guysfromrolla.com para sortear el array
Sub DualSorter(tantos)
column = tantos
DimensionToSort = 1
OtherDimension = 0
For row = 0 To tantos-1
StartingKeyValue = Resultados ( row, DimensionToSort )
StartingOtherValue = Resultados ( row, OtherDimension )
NewStartingKey = Resultados ( row, DimensionToSort )
NewStartingOther = Resultados ( row, OtherDimension )
swap_pos = row
For j = row + 1 to tantos-1
If Resultados ( j, DimensionToSort ) &gt; NewStartingKey Then
swap_pos = j
NewStartingKey = Resultados ( j, DimensionToSort )
NewStartingOther = Resultados ( j, OtherDimension )
End If
Next
If swap_pos &lt;&gt; row Then
Resultados ( swap_pos, DimensionToSort ) = StartingKeyValue
Resultados ( swap_pos, OtherDimension ) = StartingOtherValue
Resultados ( row, DimensionToSort ) = NewStartingKey
Resultados ( row, OtherDimension ) = NewStartingOther
End If
Next
End Sub
%&gt;

<html>
<body>
<p align="left"><font color="#FF0000" face="Comic Sans MS" size="2">Aprendiz
de todo y maestro de nada[/CODE]
</p>
</body>
</html>
  #4 (permalink)  
Antiguo 12/09/2002, 11:40
Avatar de epa2  
Fecha de Ingreso: abril-2002
Ubicación: Málaga
Mensajes: 1.475
Antigüedad: 22 años, 2 meses
Puntos: 9
Re: Buscador Asp De Victor Garay.(no Bd)

y ya por último MOSTRAR.ASP



&lt;%
Session(&quot;Inicio&quot;) = Request.QueryString(&quot;Inicio&quot;) 'para paginar
Session(&quot;Clave&quot;) = Request.QueryString(&quot;Clave&quot;)
cuantos = 5 'cuantos 'links' se mostrarán por página

Response.Write &quot;&lt;Font face='verdana,arial,helvetica' size='1'&gt;&quot;
Response.Write &quot;Resultado de la busqueda de la clave: &quot;
Response.Write &quot;&lt;b&gt;&quot; &amp; Session(&quot;clave&quot;) &amp; &quot;&lt;/b&gt; en el sitio: &quot; &amp; &quot;&lt;b&gt;http://&quot; &amp; Request.ServerVariables(&quot;HTTP_HOST&quot;) &amp; &quot;&lt;/b&gt;&lt;br&gt;&lt;hr size='1'&gt;&quot;

Call Mostrar_resultados(empieza,cuantos,session(&quot;T otales&quot;))

Finalizo = Now()
'Response.Write &quot;&lt;br&gt;Mostrando &quot; &amp; cuantos &amp; &quot; de &quot; &amp; Session(&quot;Encontrados&quot;) &amp; &quot; resultados disponibles.&quot;
response.write &quot;&lt;br&gt; mostrando &quot;
if session (&quot;encontrados&quot;)&lt;cuantos THEN
response.write(session(&quot;encontrados&quot;))
else
if session(&quot;encontrados&quot;)-session(&quot;inicio&quot;)&lt;cuantos THEN
response.write(session(&quot;encontrados&quot;)-session(&quot;inicio&quot;)+1)
ELSE
response.write(cuantos)
end if
end if
response.write(&quot; de &quot; &amp; Session(&quot;Encontrados&quot;) &amp; &quot; resultados disponibles.&quot;)

Response.Write &quot;&lt;br&gt;&quot; &amp; now
Response.Write &quot;&lt;/font&gt;&quot;
Response.Write &quot;&lt;center&gt;&lt;Font face='verdana,arial,helvetica' size='1'&gt;&quot;
Response.Write &quot;&lt;a href='default.asp'&gt; &gt;&gt; Realiza otra busqueda &lt;&lt;&lt;/a&gt;&lt;/center&gt;&lt;/font&gt;&quot;
%&gt;

&lt;%
Sub mostrar_resultados(empieza,cuantos,totales)
Dim objFSO
Set objFSO = Server.CreateObject(&quot;Scripting.FileSystemObje ct&quot;)
Dim objTextStream
strFileName = Server.MapPath(Session.SessionId &amp; &quot;.txt&quot;)

If objFSO.FileExists(strFileName) then
Set objTextStream = objFSO.OpenTextFile(strFileName, 1)

If Cint(Session(&quot;Inicio&quot;))&lt;=0 then
Limites = 0
Else
Limites = Cint(Session(&quot;Inicio&quot;))-1
End if

For saltos=1 to limites 'saltar lineas dependiendo que 'pagina' se muestra
objTextStream.SkipLine
objTextStream.SkipLine
Next

For rows=Cint(Session(&quot;Inicio&quot;)) to Cint(Session(&quot;Inicio&quot;)) + cuantos -1
If (rows=&lt; Cint(Session(&quot;encontrados&quot;)) or rows&gt;0) and rows&lt;=Cint(Session(&quot;Encontrados&quot;)) then
Linea1 = objTextStream.ReadLine
Linea2 = objTextStream.ReadLine
Response.Write &quot;(&quot; &amp; rows &amp; &quot; de &quot; &amp; Session(&quot;Encontrados&quot;) &amp; &quot;.-) &quot;
Response.Write Linea1
Response.Write &quot;Se encontrarón &lt;b&gt;&lt;Font color='GREEN'&gt;&quot; &amp; Linea2 &amp; &quot;&lt;/font&gt;&quot;
Response.Write &quot;&lt;/b&gt; ocurrencias de la clave en esta página.&quot;
Response.Write &quot;&lt;br&gt;&lt;hr align='left' width='75%' size='1' color='#FFB650'&gt;&lt;br&gt;&quot;
Else
Exit For
End if
Next
objTextStream.Close

Set objTextStream = Nothing
Else
Response.Write &quot;No se obtuvieron resultados para tu busqueda, es necesario que hagas &lt;a href='default.asp'&gt;otra busqueda.&lt;/a&gt;&quot;
End If
Set objFSO = Nothing

Response.Write &quot;&lt;center&gt;&quot;
'controles &lt;&lt; &gt;&gt;

Response.write &quot;&lt;div align='center'&gt;&quot;
Response.write &quot;&lt;center&gt;&quot;
Response.write &quot; &lt;table border='0' cellpadding='0' cellspacing='0' width='50%'&gt;&quot;
Response.write &quot; &lt;tr&gt;&quot;
Response.write &quot; &lt;td width='50%'&gt;&quot;
If Limites&gt; 0 then
%&gt;
&lt;style&gt;
&lt;!--//A:link {text-decoration: none;}A:visited {text-decoration: none;}//--&gt;
&lt;/style&gt;

&lt;img border=&quot;0&quot; src=&quot;../images/M9.gif&quot;&gt;
&lt;%
Response.Write &quot;&lt;a href='Mostrar.asp?inicio=&quot;&amp; rows-(cuantos*2) &amp;&quot;&amp;clave=&quot; &amp; Session(&quot;Clave&quot;) &amp;&quot;'&gt; Página anterior &lt;/a&gt;&quot;
End if
Response.write &quot;&lt;/td&gt;&quot;
Response.write &quot; &lt;td width='50%'&gt;&quot;
If rows &lt; Cint(Session(&quot;Encontrados&quot;)) then
%&gt;
&lt;style&gt;
&lt;!--//A:link {text-decoration: none;}A:visited {text-decoration: none;}//--&gt;
&lt;/style&gt;

&lt;img border=&quot;0&quot; src=&quot;../images/M3.gif&quot;&gt;
&lt;br&gt;
&lt;%
Response.Write &quot;&lt;a href='Mostrar.asp?inicio=&quot;&amp; rows &amp;&quot;&amp;clave=&quot; &amp; Session(&quot;Clave&quot;) &amp;&quot;'&gt; Más resultados &lt;/a&gt;&quot;
End if
Response.write &quot;&lt;/td&gt;&quot;
Response.write &quot; &lt;/tr&gt;&quot;
Response.write &quot; &lt;/table&gt;&quot;
Response.write &quot; &lt;/center&gt;&quot;
Response.write &quot;&lt;/div&gt;&quot;
Response.Write &quot;&lt;/center&gt;&quot;
End sub

%&gt;

HALA AQUI ESTA TODO, A VER QUIEN CONTRIBUYE AHORA A ESTE PROYECTO Y CREA EL SCRIPT PARA EVITAR
LA BUSQUEDA DENTRO DEL CODIGO FUENTE.

Salu2
ByE

<html>
<body>
<p align="left"><font color="#FF0000" face="Comic Sans MS" size="2">Aprendiz
de todo y maestro de nada[/CODE]
</p>
</body>
</html>
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 19:01.