Javascript - reredicionar página

SA-SS-A

Power Member
Boa tarde a todos, tenho um site com index.html com link para um .php. Dentro do .php no html coloquei:
Código:
<script>
// Verificar se o URL de origem é index.html
if (document.referrer == "https://site.pt/index.html") {
  // Redirecionar o usuário para a página index.html
  window.location.href = 'https://site.pt/index.html';
} else {
  // Continuar na página form_pt.php
  window.location.href = 'https://site.pt/form_pt.php';
}
</script>
E que realmente faz o serviço de reredicionar o utilizador do form_pt.php para o index.html se não estiver a vir do index.html, mas o problema é que estando no index.html e clicando no link que dá acesso ao form_pt.php ele tenta entrar e no mesmo segundo volta ao index.html.

Alguém tem ideia?

Obrigado!
 
E que realmente faz o serviço de reredicionar o utilizador do form_pt.php para o index.html se não estiver a vir do index.html

não te enganaste a explicar?

o scrip esta no form.php certo?

é que a condicao que meteste no script diz:
se vier do index redireciona para o index
senao redirecciona para o form

quando vens do index estas a ir para o index...que é o problema que estas a ter
 
Última edição:
Sim, script está no form.php. se estou no index e clico para o link do form ele fica no mesmo link index.html! se colocar link direto site.pt/form.php ele passa para index.html. E nao sai disto.
<script>
// Verificar se o URL de origem é index.html
if (document.referrer == "https://site.pt/index.html") {
// Redirecionar o usuário para a página index.html
window.location.href = 'https://site.pt/form_pt.php';
} else {
// Continuar na página form_pt.php
window.location.href = 'https://site.pt/index.html';
}
</script>

Dizes assim? Nao funciona tambem...
 
se o script esta no form.php nao precisas redirecionar quando vens do index porque ja estas no form


eu diria assim...

JavaScript:
// Verificar se o URL de origem é index.html
if (document.referrer == "https://site.pt/index.html") {
    //nao redirecciona...ja esta no form
} else {
    // redirecciona para index
    window.location.href = 'https://site.pt/index.html';
}

se nao estiver a funcionar faz output do document.referrer
console.log(document.referrer) ou alert (document.referrer)
para veres o valor document.referrer quando entras na pagina form.php nao podes redireccionar como é obvio
 
Última edição:
Obrigado! Mas continua igual....carrego no link do php no index.html e nao entra, fica no index.

Tentei:
<script>
if (document.referrer == "https://site.pt/index.html") {
//nao redirecciona...ja esta no form
} else {
// redirecciona para index
window.location.href = 'https://site.pt/index.html';
}
// Redirecionar o utilizador para o URL de origem
window.location.replace(document.referrer);
</script>

ja tenta entrar mas nao entra. Se entrar diretamente é a mesma coisa, loading loading mas nao entra...
 
nao faz sentido colocares
window.location.replace(document.referrer);
a seguir ao "if else" porque senão estas a redireccionar sempre indepentemente da condição dentro do if else

Se da maneira que indiquei continua a voltar ao index (quando carrregas no link do form no index) então é porque o
document.referrer nao contem o valor "https://site.pt/index.html" e contém outra coisa qualquer.
Se document.referrer contiver "https://site.pt/index.html" nao vai redireccionar logo tem de permanecer no form.

Tens de fazer o output do document.referrer para ver o que ele contem quando vens do index

Estas a correr o script no <head> ou no <body> da pagina do form?
 
Última edição:
E deves proteger as paginas do lado do servidor (em php) não no javascript
O javascript corre do lado do cliente sendo que está visivel e é editável no browser

No php tens a var global $_SERVER['HTTP_REFERER']

no form.php faz o echo do $_SERVER['HTTP_REFERER'] para veres o que esta a chegar

será algo do género...

PHP:
$referrer = $_SERVER['HTTP_REFERER'];
if ($referrer == 'url1' || $referrer == 'url2') {
     //nao redirecciona
} else {
    header( 'Location: url3' ) ;
}
 
Back
Topo