Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

Redireccionar a página principal

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Intermedio
Mensaje Jue Feb 09, 2006 3:13 am
rafa
Perlero Nuevo
Perlero Nuevo
Registrado: 14 May 2004
Mensajes: 68
Redireccionar a página principal Responder citando

Hola, un saludo para todos, tengo un pequeño problemilla, es el siguiente :

Tengo una página principal en perl donde hay varios enlaces, en esta es donde controlo a los usuarios que entran, pero hay algunos que entran directamente a las paginas de los enlaces sin pasara por la principal, me gustaria como podria obligar a los usuarios a entrar a las distintas paginas desde la pagina principal.

Un saludo y gracias
Mensaje Jue Feb 09, 2006 9:14 am
kidd
Creador de Perl en Español
Creador de Perl en Español
Registrado: 15 Oct 2003
Mensajes: 1389
Ubicación: México
Responder citando

Hola:

Se me ocurren dos maneras.

1. Checa el referrer para verificar que vienen de la página principal, esto lo puedes lograr usando las variables de entorno.

2. Implementando el uso de sesiones, de esa manera rediriges a los usuarios a la página principal para que inicien una sesión en caso de que no tengan una ya inicializada. Esto se puede lograr de manera sencilla usando el módulo CGI::Session.


SALUDOS
Mensaje Lun Feb 13, 2006 7:38 am
rafa
Perlero Nuevo
Perlero Nuevo
Registrado: 14 May 2004
Mensajes: 68
PAGINA PRINCIPAL Responder citando

Gracias, lo mirare como me dices.
Un Saludo
Mensaje Lun Feb 13, 2006 8:26 am
macgregor
Perlero Frecuente
Perlero Frecuente
Registrado: 09 Dic 2004
Mensajes: 117
Ubicación: españa
pagina principal Responder citando

Una opcion es añadir javascript a todas tus paginas comprovando que el "url.value" de la pagina anterior es igual a la url de nuestra pagina principal (www.mipagina.com/index.html).
si no se cumple pon un popup avisando y no dejes que hagan nada.

Otra opcion es el uso de sesiones. Si tienes usuarios definidos en una base de datos (o algun archivo de texto) y quieres que una vez se identifiquen puedan navegar libremente por tu web esta es la mejor opcion.
Puedes mirarte el modulo que te ha dicho kidd.

Yo me he visto obligado a hacer algo parecido en una web y lo resolvi utilizando sesiones. Los usuarios se validaban en una base de datos y mediante cookies con javascript guardaba el identificador de sesion en el pc del usuario.
Mirate este mensaje, aqui pongo como lo hice, con el codigo mas o menos claro Very Happy

http://perlenespanol.baboonsoftware.com/foro/viewtopic.php?t=748

Un saludo.
Mensaje Mar Feb 21, 2006 2:40 am
rafa
Perlero Nuevo
Perlero Nuevo
Registrado: 14 May 2004
Mensajes: 68
PAGINA PRINCIPAL Responder citando

Hola, tengo este script pero no me funciona, me da error en la pagina :


my @referers = ('www.tudominio.com.ar', '*.tudominio.com.ar', 'tudiminio.com.ar');
&check_url;

sub check_url {

my $check_referer = 0;

if ($ENV{'HTTP_REFERER'}) {
foreach my $referer (@referers) {
if ($ENV{'HTTP_REFERER'} =~ m|https?://([^/]*)$referer|i) {
$check_referer = 1;
last;
}
}
}
else {
$check_referer = 1;
}

if ($check_referer != 1) { &error('verificar','host') }
}

no detecto donde puede estar el error.
Gracias anticipadas por tu amabilidad.
Un Saludo
Mensaje Mar Feb 21, 2006 8:53 am
kidd
Creador de Perl en Español
Creador de Perl en Español
Registrado: 15 Oct 2003
Mensajes: 1389
Ubicación: México
Responder citando

Umm, podría ser algo así:


Código:

my @referers = ('dominio.com.ar');

check_url();


sub check_url {

my $check_referer = 0;

my $page_referer = $ENV{'HTTP_REFERER'};

    if (defined($page_referer)) {
        for my $referer (@referers) {
            if ($page_referer =~ m|^http(?:s)?\://(?:[^/]*)$referer|i) {
                $check_referer = 1;
                last;
            }
        }
    }
    else {
        $check_referer = 1;
    }


    if ($check_referer != 1) {
        error('verificar','host')
    }


}



SALUDOS
Mensaje Mar Feb 21, 2006 1:06 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4082
Ubicación: Valladolid, España
Responder citando

Una solución drástica sería hacer un filtrado a nivel del servidor web (en caso de ser un servidor Apache) utilizando el utilísimo módulo mod_rewrite:
Código:
RewriteEngine On
RewriteCond %{HTTP_REFERER}     !dominio\.com\.ar
RewriteCond %{REQUEST_FILENAME} !index\.html
RewriteRule ^/                  http://dominio.com.ar/index.html [L,R]
Publicar nuevo tema   Responder al tema    Foros de discusión -> Intermedio Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group