2011-01-11 13 views
49

Supponiamo che l'URL del mio sito sia dato come collegamento ipertestuale su qualche pagina su Internet; quella pagina potrebbe essere qualsiasi cosa su internet - blog, orkut, yahoo, persino stackoverflow, ecc., e qualcuno fa clic su di esso e visita il mio sito. Quindi possiamo sapere, usando php, l'url precedente da cui il visitatore è arrivato alla mia pagina?Come ottenere l'url precedente usando PHP

risposta

91

Utilizzare l'intestazione $_SERVER['HTTP_REFERER'], ma tenere presente che chiunque può spoofarlo in qualsiasi momento indipendentemente dal fatto che abbia fatto clic su un collegamento.

+0

È una soluzione cross-browser? – NullPointer

+0

@NullPointer: Come ho detto nella mia risposta, chiunque può spoofarlo, quindi suppongo che la risposta alla tua domanda sia no. – BoltClock

+0

No. Volevo chiedere in modo diverso. – NullPointer

19

$_SERVER['HTTP_REFERER'] è la risposta

13

$_SERVER['HTTP_REFERER'] vi darà URL incompleti.

Se si desidera http://bawse.3owl.com/jayz__magna_carta_holy_grail.php, $_SERVER['HTTP_REFERER'], è possibile fornire solo http://bawse.3owl.com/.

0

Ma è possibile creare un proprio collegamento per ogni URL.

Esempio: http://example.com?auth=holasite

In questo esempio il sito è: example.com

Se qualcuno aperto che collegano è darvi il valore holasite per la variabile auth.

Quindi solo $ _GET ['auth'] e si dispone della variabile. Ma dovresti creare un database per memorizzarlo e autorizzarlo.

come: $ holasite = http://holasite.com (Si potrebbe utilizzare mysql troppo ..)

E proprio abbinarlo, e si ha l'url.

Questo metodo è un po 'più complicato, ma funziona. Questo metodo è utile per un'autenticazione del sistema refferal. Ma dov'è il nome del sito, dovresti scrivere un id e lavorare con quell'id.

Problemi correlati