Ottenere l'ID della pagina visitata in precedenza

7 dic 2011, 17:18:40
Visualizzazioni: 19.8K
Voti: 7

Vorrei ottenere l'ID (o il permalink) della pagina che il visitatore ha visitato immediatamente prima di accedere alla pagina corrente - in altre parole l'ID dell'ultima pagina nella cronologia del browser.

È possibile farlo? Qualche idea su come realizzarlo?

3
Commenti

Cerca all'interno dell'array print_r( $GLOBALS );. Non sono sicuro in questo momento, ma potrebbe essere all'interno di $_GET/_REQUEST/_SESSION/_SERVER;...

kaiser kaiser
7 dic 2011 18:42:42

@kaiser grazie, c'è effettivamente un HTTP_REFERER in _SERVER - che mi restituisce l'URL della pagina precedente. Perfetto!

ptriek ptriek
7 dic 2011 18:50:10

Questo potrebbe esserti utile: https://codex.wordpress.org/Function_Reference/wp_get_referer

shasi kanth shasi kanth
10 apr 2015 18:37:26
Tutte le risposte alla domanda 2
3

Suddividiamo questo in due parti:

Primo, creiamo una variabile che memorizza l'URL dell'ultima pagina visitata, in questo modo:

$prev_url = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';

Poi, potresti utilizzare substr e strpos per tagliare tutto ciò che si trova tra ?= e il / dopo il numero ID, così:

$prev_url = 'http://www.yoursite.com/?p=123';
$id_block = substr($prev_url, strpos($prev_url, "?p=")+1);
$id = substr($id_block, 0, strpos($id_block, "/"));

.. Oppure, potresti usare jQuery/Javascript per ottenere lo stesso risultato.

Non ho testato questo codice ma dovrebbe funzionare - fammi sapere come va! Buona fortuna ;)

7 dic 2011 18:51:30
Commenti

grazie - stavo già pensando in questa direzione, ma il manuale php dice a riguardo: "L'indirizzo della pagina (se presente) che ha indirizzato l'user agent alla pagina corrente. Questo viene impostato dall'user agent. Non tutti gli user agent lo impostano e alcuni permettono di modificare HTTP_REFERER come funzionalità. In breve, non può essere considerato del tutto affidabile." Quindi ho qualche dubbio sul fatto che sia la soluzione migliore...

ptriek ptriek
7 dic 2011 18:56:54

Vero - HTTP_REFERER dipende esclusivamente dal server. Onestamente, non conosco altre soluzioni per questo. Se non si tratta di una funzionalità cruciale, procederei utilizzando HTTP_REFERER poiché è abbastanza stabile da un agent all'altro.

cr0z3r cr0z3r
7 dic 2011 19:19:00

Non è una funzionalità cruciale, quindi procederò con questo approccio e fornirò uno scenario di fallback.. Grazie per l'aiuto!

ptriek ptriek
7 dic 2011 19:31:46
1

Ho implementato questo trucco in questo modo per permettermi anche di verificare se si tratta di una delle mie pagine:

//Ottieni l'ultimo link della pagina dalla cronologia

$prev_url = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : null;

//Controlla se non è nullo e se contiene l'URL del mio blog

if( !empty( $prev_url ) || strpos( $prev_url, (string)get_blog_details()->domain ) !== false ) :
    //Allora visualizzalo solo se è una pagina del mio blog ?>
    <a href="<?php echo $prev_url; ?>" class="previous-history-link">L'ultima pagina dalla cronologia</a>
<?php endif; ?>
2 mar 2015 13:47:32
Commenti

Solo una nota a margine qui, HTTP_REFERER non è affidabile in quanto può essere disattivato dall'utente finale, quindi non fare mai affidamento su questo

Pieter Goosen Pieter Goosen
2 mar 2015 13:59:51