• Publicidad

Presentación y solicitud de Ayuda

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Presentación y solicitud de Ayuda

Notapor Googleton » 2006-11-07 03:44 @197

Hola a todo@s.
Estoy elaborando un directorio de enlaces sin Mysql, ni BBDD. He encontrado un script en la red para hacerlo, pero por mas que sigo los pasos no me sale.
He dado los permisos oportunos en el servidor, pero creo que el error es el no estar familiarizado con este lenguaje de scripts.

Si quiero que mi domino sea: "http:www.enlacesparatodos.com"... ¿¿¿¿como debería configurar el siguiente script...????

Mil gracias de antemano.


Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#! /usr/bin/perl

#
#                  WEB-IT Internet Services
#                       Add Link v 1.1
#-------------------------------------------------------------------#
# Installation Instructions:
#-----------------------------
#
# 1: change the settings below to what your settings are!!!    
# 2: Copy this file link.pl to your cgi-bin
# 3: Copy the links.html to a separate directory
#       eg /links/
# 4: chmod links.pl to 755
# 5: chmod links.html to 777
# 6: chmod /links/ to 777
# 7: change all of the settings below to your servers settings
# 8: make sure to set links.html to call link.pl
#-------------------------------------------------------------------#


#################################### Settings ###################################

# UNIX PATH TO directory.html

$file = "/links.html";

# URL TO directory.html

$gto = "http://193.180.246.209/links.html";

# ADD LINKS TO TOP OR BOTTOM (1 = top   2 = bottom)

$top = "1";

#################################################################################

# Get the input data
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});

# Parse the data
@pairs = split(/&/, $buffer);

foreach $pair (@pairs) {
        ($name, $value) = split(/=/, $pair);

        # get rid of the % encoding
        $value =~ tr/+/ /;
        $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
        $name =~ tr/+/ /;
        $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
        $value =~ s/<!--(.|\n)*-->//g;
       
        if(! $allow_html) {
                $value =~ s/<([^>]|\n)*>//g;
        }

        $FORM{$name} = $value;
}

open(FILES, "$file") || die "Can't open FILE: $file\n";
@files =<FILES>;
close(FILES);

open(FILES, ">$file") || die "Can't open FILE: $file\n";
foreach $line (@files) {
        if($line =~ /<!--Begin Directory-->/i) {
                if($top) {
                        print FILES "<!--Begin Directory-->\n";
                }
               
                print FILES "<br><li><a href=$FORM{'url'}>$FORM{'name'}</a>\n";        

                if(! $top) {
                        print FILES "<!--Begin Directory-->\n";
                }
        }
        else {
                print FILES "$line";
        }
}
close(FILES);

print "Location: $gto\n\n";
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
Googleton
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2006-11-07 03:39 @194

Publicidad

Notapor explorer » 2006-11-07 05:42 @279

Bienvenido a los foros de Perl en Español.

Falta algo...

Falta una página web en donde exista un formulario con dos cajas de texto. Una se debe llamar 'url' y la otra, 'name'. Y al pulsar el botón de envío de ese formulario, debe ejecutar este script, que se encargará de modificar el fichero indicado por la variable $file.

Tienes que asegurarte que:
a) Puedes ejecutar CGIs Perl en tu servidor
b) Que el script lo has subido al sitio correcto y tiene permisos de ejecución
c) Que el script tiene acceso al fichero indicado en $file. Si pone '/links.html', por el efecto de la primera barra, irá al raíz del sistema. Normalmente los usuarios no tienen permiso de escritura en ese lugar. Lo normal es que sea un camino completo y que además sea dentro del árbol de ficheros del web. Por ejemplo: $file = '/var/www/mi_web/directorio/subdirectorio/links.html';.
d) $gto es el URL que devolverá cuando haya terminado. Si queremos que salga la lista actual de enlaces, será parecido a lo indicado por $file: $gto ='http://www.enlacesparatodos.com/directorio/subdirectorio/links.html';
Última edición por explorer el 2006-11-13 06:57 @331, editado 1 vez en total
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor Googleton » 2006-11-13 06:31 @313

Gracias por tu respuesta, pero sigo sin dar con el meollo.
En el ejemplo :'/var/www/mi_web/directorio/subdirectorio/links.html';. ...seria '/var/www/enlacesparatodos/directorio/subdirectorio/links.html';. en mi caso???

gracias
Googleton
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2006-11-07 03:39 @194

Notapor explorer » 2006-11-13 06:42 @321

Depende de dónde esté colocado el fichero links.html. Consulta a tu administrador del sistema para que te lo diga.

Una forma de obviarlo es usando el propio directorio del usuario, usando $ENV{HOME} como base del directorio donde vamos a trabajar, que se supone que ahí sí podemos escribir, siempre y cuando el usuario propietario del script tenga permisos de escritura del propietario del directorio.

Lo dicho. Es el administrador del sistema el que te puede decir qué directorios puedes usar.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor Googleton » 2006-11-13 06:49 @326

"links.html" esta en httpdocs/links/links.html

disculpa por tanta pregunta pero es q de Pear no piloto nada y es la forma mas sencilla de crear una web de enlaces sin MySql tengo entendido. Lo mio es html, si conoceis algo os lo agradeceria por que este script de 4 lineas me esta matando, es como leer arameo de repente.

gracias 1000
Googleton
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2006-11-07 03:39 @194

Notapor explorer » 2006-11-13 06:56 @331

Pear es una librería de PHP. Aquí sólo entendemos de Perl :D

Ahora que sabes dónde está el fichero, lo escribes en la variable $file, pero... httpdocs/links/links.html es una ruta relativa... no indica la posición absoluta del fichero en el sistema, SALVO que el script Perl se ejecute al mismo nivel que la carpeta httpdocs.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados