Jue Feb 09, 2006 3:13 am
|
 |
rafa
Perlero Nuevo

|
Registrado: 14 May 2004
Mensajes: 68
|
|
| Redireccionar a página principal |
|
|
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 |
|
|
|

Jue Feb 09, 2006 9:14 am
|
 |
kidd
Creador de Perl en Español

|
Registrado: 15 Oct 2003
Mensajes: 1389
Ubicación: México
|
|
|
|
|
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 |
|
Lun Feb 13, 2006 7:38 am
|
 |
rafa
Perlero Nuevo

|
Registrado: 14 May 2004
Mensajes: 68
|
|
| PAGINA PRINCIPAL |
|
|
Gracias, lo mirare como me dices.
Un Saludo |
|

Lun Feb 13, 2006 8:26 am
|
 |
macgregor
Perlero Frecuente

|
Registrado: 09 Dic 2004
Mensajes: 117
Ubicación: españa
|
|
| pagina principal |
|
|
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
http://perlenespanol.baboonsoftware.com/foro/viewtopic.php?t=748
Un saludo. |
|

Mar Feb 21, 2006 2:40 am
|
 |
rafa
Perlero Nuevo

|
Registrado: 14 May 2004
Mensajes: 68
|
|
| PAGINA PRINCIPAL |
|
|
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 |
|

Mar Feb 21, 2006 8:53 am
|
 |
kidd
Creador de Perl en Español

|
Registrado: 15 Oct 2003
Mensajes: 1389
Ubicación: México
|
|
|
|
|
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 |
|
Mar Feb 21, 2006 1:06 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4129
Ubicación: Valladolid, España
|
|
|
|
|
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] |
|
|
Powered by phpBB © 2001, 2005 phpBB Group
|