Foros del Web » Programación para mayores de 30 ;) » Programación General »

script para buscador?

Estas en el tema de script para buscador? en el foro de Programación General en Foros del Web. Hola les cuento, me estoy rompiendo la cabeza buscando como hacer un buscador interno para una web que estoy terminando y encontré esto, pero realemnte ...
  #1 (permalink)  
Antiguo 30/07/2005, 08:36
 
Fecha de Ingreso: mayo-2004
Mensajes: 903
Antigüedad: 19 años, 11 meses
Puntos: 4
script para buscador?

Hola les cuento, me estoy rompiendo la cabeza buscando como hacer un buscador interno para una web que estoy terminando y encontré esto, pero realemnte no se como instalarlo.
Tengo el sitio alojado en linux, y les agradecería que me ayudaran y si sirve para ustedes biencvenido sea, ya que me he cansado de leer post con las mismas dudas que yo. y lo peor sin encontrar soluciones.

Este sería el formulario.

Código:
<form action="/cgi-bin/buscador.cgi" method="post">
<input type="text" name="query" size="50">
<input type="submit">
</form>
Ahora bien 1º, el tutorial dice que: "Nuestra primera línea como siempre es la ruta de nuestro perl. Si nos sabes cual es la ruta de tu perl, te recomiendo que contactes con tu administrador para que te diga cual es."

Que realmente debemos pedirle a nuestro proveedor?

2º "Después, necesitamos cargar los módulos y pragmas que vamos a usar. En este caso vamos a habilitar los "warnings" en perl y usar el pragma strict. De esta manera nos forzamos a crear código limpio y seguro. Y finalmente cargamos el módulo CGI. Entonces por el momento tenemos algo así:"

#!perl -w
use strict;
use CGI qw(:standard);

¿Donde hacemos esto?

y este sería el script final:

Código:
#!perl -w

use strict;
use File::Find;
use CGI qw(:standard);
my $query = param("query");
print header();
print start_html();
print "\n<p>Para la búsqueda $query, estos resultados se encontraron:</p>\n<ol>\n";

undef $/;

find( sub
{
return if($_ =~ /^\./);
return unless($_ =~ /\.html/i);
stat $File::Find::name;
return if -d;
return unless -r;

open(FILE, "< $File::Find::name") or return;
my $string = <FILE>;
close (FILE);

return unless ($string =~ /\Q$query\E/i);
my $page_title = $_;
if ($string =~ /<title>(.*?)<\/title>/is)
{
$page_title = $1;
}
print "<li><a href=\"$File::Find::name\">$page_title</a></li>\n";
},
'/home/username/public_html');

print "</ol>\n";
print end_html();
a esto lo guardamos como buscador.cgi? en un archivo sin etiquetas html?
y lo subo a que carpeta? a la public_html?

y las BD como deberían ser? si es que necesito base de datos claro.

en fin como veran el uso de dw trae estas malas costumbres, uno se acustumbra más a dibujar páginas que a programarlas.
  #2 (permalink)  
Antiguo 30/07/2005, 09:37
 
Fecha de Ingreso: junio-2005
Mensajes: 63
Antigüedad: 18 años, 10 meses
Puntos: 0
Cita:
Iniciado por mvlsistemas
Que realmente debemos pedirle a nuestro proveedor?
pues eso, la ruta del perl, generalmente en linux es /usr/bin/perl
entonces la primer linea seria #!/usr/bin/perl

Cita:
Iniciado por mvlsistemas
a esto lo guardamos como buscador.cgi? en un archivo sin etiquetas html?
y lo subo a que carpeta? a la public_html?
a la carpeta de los cgis, generalmente es public_html/cgi-bin o public_html/cgi-local

Cita:
Iniciado por mvlsistemas
y las BD como deberían ser? si es que necesito base de datos claro.
pues no parece que ocupe bd
  #3 (permalink)  
Antiguo 30/07/2005, 20:10
 
Fecha de Ingreso: mayo-2004
Mensajes: 903
Antigüedad: 19 años, 11 meses
Puntos: 4
sony amigo mira, subí esto asi: el formu.htm y este codigo:
Código:
#!/usr/bin/perl

use strict;
use File::Find;
use CGI qw(:standard);
my $query = param("query");
print header();
print start_html();
print "\n<p>Para la búsqueda $query, estos resultados se encontraron:</p>\n<ol>\n";

undef $/;

find( sub
{
return if($_ =~ /^\./);
return unless($_ =~ /\.html/i);
stat $File::Find::name;
return if -d;
return unless -r;

open(FILE, "< $File::Find::name") or return;
my $string = <FILE>;
close (FILE);

return unless ($string =~ /\Q$query\E/i);
my $page_title = $_;
if ($string =~ /<title>(.*?)<\/title>/is)
{
$page_title = $1;
}
print "<li><a href=\"$File::Find::name\">$page_title</a></li>\n";
},
'/home/username/public_html');

print "</ol>\n";
print end_html();
esto en la carpeta cgibin y me da este error:

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, [email protected] and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
Apache/1.3.33 Server at www.todoyofre.com.ar Port 80


que me falta o que estoy haciendo mal? tengo que completar ese codigo con el dominio o algo mas?

Última edición por mvlsistemas; 30/07/2005 a las 20:20
  #4 (permalink)  
Antiguo 31/07/2005, 17:12
 
Fecha de Ingreso: mayo-2003
Mensajes: 328
Antigüedad: 20 años, 11 meses
Puntos: 0
Hola:

Muy bien, para hacer funcionar el script lo que tienes que hacer es:

1. Pregunta a tu administrador cual es la ruta a perl, lo que te diga ponlo en la primera línea, recuerda que debe de comenzar con #!

2. Salva el código en un archivo de texto y nombralo buscador.cgi, entonces haz el upload a tu servidor en la carpeta cgi-bin. NOTA: Debes de subir el archivo como ASCII no como binario.

3. Cambia los permisos del archivo y ponlos en 0755.

4. Crea un HTML y pon el formulario como viene en el tutorial, cambiando la ruta del cgi para que apunte el CGI que acabas de poner en tu servidor.


Listo, con eso debe de funcionar.


Si quieres aprender un poco más acerca de los CGIs te recomiendo el siguiente tutorial:
http://perlenespanol.baboonsoftware....ut/000080.html


SALUDOS
__________________
Uriel Lizama, Perl Developer

Aprende Perl en Perl en Español.
  #5 (permalink)  
Antiguo 31/07/2005, 18:37
 
Fecha de Ingreso: mayo-2004
Mensajes: 903
Antigüedad: 19 años, 11 meses
Puntos: 4
gracias kidd, muy interesante tú pagina y lo que contás de cuando entraste a programar y adapatsate las páginas que el webmaster subía manualmente.

en el formu es así la ruta?
<body>
<form action="http://www.midominio.com.ar/cgi-bin/buscador.cgi" method="post">
<input type="text" name="query" size="50">
<input type="submit">
</form>
</body>


y al formu.html tambien le doy 755?

la 1a línea sería así?
Código:
#!perl -w/usr/bin/perl

acá tengo que agregar algo?
Código:
 {
return if($_ =~ /^\./);
return unless($_ =~ /\.html/i);
stat $File::Find::name;
gracias
  #6 (permalink)  
Antiguo 01/08/2005, 10:28
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
Hola, al HTML no le tenés que dar ningún permiso...

La primera línea sería algo así

#!/usr/bin/perl -w

Agregar ???
{
return if($_ =~ /^\./);
return unless($_ =~ /\.html/i);
stat $File::Find::name;

No creo, casi nunca hay que tocar el código fuente del script...

Saludos
__________________
Esteban Quintana
  #7 (permalink)  
Antiguo 01/08/2005, 11:16
 
Fecha de Ingreso: mayo-2004
Mensajes: 903
Antigüedad: 19 años, 11 meses
Puntos: 4
gracias, por su ayuda, me sigue dando este error: Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, [email protected] and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

Código:
#!/usr/bin/perl -w
es tal cual? o usr lo debería rremplazar por el dominio o usuario de la cta? por que asi como está me da error. perdón por mi ignnorancia, pero una vez me dijeron preguntando y estudiando se aprende.

si ya estoy estudiando tambieen!!! jaja

Última edición por mvlsistemas; 17/08/2005 a las 14:03
  #8 (permalink)  
Antiguo 01/08/2005, 13:16
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
no, el usr se recfiere a la carpeta de unix, es así, pero dependiendo de la configuración de tu server puede cambiar, generalmente es

#!/usr/bin/perl -w

o

#!/usr/local/bin/perl -w

Es una cuestión de carpetas...

Intentá ejecutar un hola mundo y así vemos si el problema no es general...Y fijate el error log ver que te dice...

Saludos
__________________
Esteban Quintana
  #9 (permalink)  
Antiguo 01/08/2005, 19:22
 
Fecha de Ingreso: mayo-2004
Mensajes: 903
Antigüedad: 19 años, 11 meses
Puntos: 4
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, [email protected] and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
Apache/1.3.33 Server at Port 80


me sigue tirando esto!!!

Última edición por mvlsistemas; 17/08/2005 a las 14:03
  #10 (permalink)  
Antiguo 01/08/2005, 21:43
 
Fecha de Ingreso: mayo-2003
Mensajes: 328
Antigüedad: 20 años, 11 meses
Puntos: 0
Hola:

Lo más seguro es que no tengas los módulos de perl necesarios. Pregunta a tu administrador si tienes los siguiente módulos:

Código:
File::Find
CGI

SALUDOS
__________________
Uriel Lizama, Perl Developer

Aprende Perl en Perl en Español.
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 02:52.