php / html - http_referer
-
03-07-2019 - |
Domanda
Sto creando un sito Web e su una determinata pagina, desidero rimandare l'utente alla pagina precedente. Sono abbastanza nuovo in PHP / HTML e ho usato del codice esistente per idee e aiuto.
Il codice esistente utilizza il seguente metodo:
if (! empty($HTTP_REFERER))
{
header("Location: $HTTP_REFERER");
} else
{
header("Location: $CFG->wwwroot");
}
Tuttavia, quando utilizzo questo codice, HTTP_referer viene sempre considerato vuoto e l'utente reindirizzato alla pagina principale. Qualche difetto evidente in questo codice?
Soluzione
Devi usare:
Devi usare:
<*>SERVER['HTTP_REFERER']
Altri suggerimenti
Non fare affidamento sul fatto che HTTP Referrer sia un campo valido o addirittura non vuoto. Le persone possono scegliere di non avere questo set lasciando alcun controllo per quella variabile che va sul lato vuoto della clausola IF-ELSE.
Puoi evitare questo inviando un parametro nell'URL o nei parametri POST che contenga un valore che puoi utilizzare per reindirizzare l'utente a.
isset ($ _ SERVER ['HTTP_REFERER'])? $ _SERVER ['HTTP_REFERER']: '';
Se vuoi rinviare la persona alla pagina precedente e farla funzionare indipendentemente dal fatto che il referrer sia impostato correttamente, puoi aggiungere un parametro GET all'URL (o POST) .. dovrai codificare l'URL. Qualcosa come
http://www.domain.com.au/script.php?return=http%3a%2f%2fwww.domain.com.au%2fthis-is-where-i-was % 2f
Puoi usare la funzione urlencode ()
di PHP.
Nota anche che l'intestazione del referer potrebbe essere vuota o mancante, quindi non dovresti fare affidamento su di essa ..
Dovresti usare
Dovresti usare
<*>
Comunque guarda la configurazione register_globals in php.ini, dovrebbe essere disattivata per motivi di sicurezza. Puoi leggere di più sul sito del manuale PHP .
SERVER['HTTP_REFERER']
Comunque guarda la configurazione register_globals in php.ini, dovrebbe essere disattivata per motivi di sicurezza. Puoi leggere di più sul sito del manuale PHP .