2011-11-03 13 views
5

Funziona quando ho ingresso

header("Location: http://www.google.com"); 

ma non funziona quando ho

header("Location: $_SERVER['HTTP_REFERER']"); 

voglio reindirizzare la pagina a qualunque pagina è venuto.

+7

Non tutti i browser inviano un riferimento e altri inviano dati falsi. Inoltre, non è possibile utilizzare le virgolette su una chiave di array all'interno di una stringa con doppi apici del genere. prova 'header (" Location: {$ _SERVER ['HTTP_REFERER']} ");' invece. –

+1

Hai controllato il contenuto di '$ _SERVER ['HTTP_REFERER']'? – PeeHaa

+0

qual è l'output di questa stringa: echo "Posizione: $ _SERVER ['HTTP_REFERER']"; ? –

risposta

5

Provalo: :)

if (!empty($_SERVER['HTTP_REFERER'])) 
    header("Location: ".$_SERVER['HTTP_REFERER']); 
else 
    echo "No referrer."; 

Tuttavia, per determinare quale utente pagina venuto, io preferisco usare variabile di sessione, che viene azzerato ad ogni pagina:

session_start(); 
echo "Previous page:", $_SESSION['loc']; 
$_SESSION['loc']=$_SERVER['PHP_SELF']; 

ps: Funziona solo per le pagine locali, non puoi tracciare altri siti web.

2

questa è una caratteristica del browser, e qualsiasi browser gentile invierà la corretta intestazione (anche se vari strumenti di 'sicurezza' hanno la priorità su questa con un referer falso).

È specifico del browser, quindi non tutte le combinazioni di browser/software di sicurezza invieranno al server. È meglio impostare una variabile di sessione ad ogni caricamento della pagina per determinare quale pagina l'utente è venuto da (o qualcosa di simile con un po 'più logica)

+0

quindi fai una sessione dell'URL corrente su ogni pagina? –

4

Si potrebbe provare:

header("Location: {$_SERVER['HTTP_REFERER']}"); 

ho avuto problemi con le espressioni variabili che contengono virgolette nelle stringhe senza parentesi.

È inoltre necessario guardare per $_SERVER['HTTP_REFERER'] semplicemente non essere impostato. Alcuni user-agent non lo impostano, alcuni strumenti privati ​​lo mascherano e devi gestire le persone che arrivano alla tua pagina senza un referrer.

3

Ecco una soluzione semplice. controllo e vedere cosa $ _SERVER [ 'HTTP_REFERER'] sta dando voi e se il suo set poi si può reindirizzare e se non mettere una caduta di nuovo qualcosa di url del tipo:

if(isset($_SERVER['HTTP_REFERER']) && $_SERVER['HTTP_REFERER'] != ""){ 
$url = $_SERVER['HTTP_REFERER']; 
}else{ 
$url = "YOUR INDEX PAGE OR SOMETHING"; 
} 

header("Location: ".$url); 
0

Semplicemente è possibile utilizzare

if(isset($_SERVER['HTTP_REFERER'])){ 
    header("Location:".$_SERVER['HTTP_REFERER'].""); 
} 
1
header("Location: $_SERVER[HTTP_REFERER]"); 

Senza le virgolette singole. Questo è il modo più rapido per accedere e concatenare i valori dell'array senza codice di concatenazione extra.

Problemi correlati