Obține ID-ul paginii vizitate anterior

7 dec. 2011, 17:18:40
Vizualizări: 19.8K
Voturi: 7

Aș dori să obțin ID-ul (sau permalink-ul) paginii pe care vizitatorul a vizitat-o chiar înainte de a vizita pagina curentă - cu alte cuvinte, ID-ul ultimei pagini din istoricul browserului.

Este posibil acest lucru? Aveți vreo idee cum să fac asta?

3
Comentarii

Caută în array-ul print_r( $GLOBALS );. Nu sunt sigur acum, dar poate fi în $_GET/_REQUEST/_SESSION/_SERVER;...

kaiser kaiser
7 dec. 2011 18:42:42

@kaiser mersi, există într-adevăr un HTTP_REFERER în _SERVER - îmi dă URL-ul paginii anterioare. Perfect!

ptriek ptriek
7 dec. 2011 18:50:10

Acest lucru ar putea fi util: https://codex.wordpress.org/Function_Reference/wp_get_referer

shasi kanth shasi kanth
10 apr. 2015 18:37:26
Toate răspunsurile la întrebare 2
3

Împarte asta în două părți:

În primul rând, creăm o variabilă care stochează URL-ul ultimei pagini vizitate, astfel:

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

Apoi, poți folosi fie substr și strpos pentru a elimina totul între ?= și / după numărul ID, astfel:

$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, "/"));

.. Sau, poți folosi jQuery/Javascript pentru a obține același rezultat.

Nu am testat acest lucru, dar ar trebui să funcționeze - spune-mi cum merge! Mult succes ;)

7 dec. 2011 18:51:30
Comentarii

mersi - mă gândeam deja în această direcție, dar manualul php spune despre asta: "Adresa paginii (dacă există) care a direcționat user agentul către pagina curentă. Aceasta este setată de user agent. Nu toate user agentele vor seta acest lucru, iar unele oferă posibilitatea de a modifica HTTP_REFERER ca o funcționalitate. Pe scurt, nu poate fi cu adevărat de încredere." Așa că sunt puțin îndoielnic dacă este cea mai bună cale de urmat...

ptriek ptriek
7 dec. 2011 18:56:54

Adevărat - HTTP_REFERER depinde doar de server. Sincer să fiu, nu cunosc alte soluții pentru asta. Dacă aceasta nu este o funcție crucială, aș merge înainte și aș folosi HTTP_REFERER deoarece este destul de stabil de la un agent la altul.

cr0z3r cr0z3r
7 dec. 2011 19:19:00

Nu este o funcție crucială, așa că voi merge cu aceasta și voi oferi un scenariu de rezervă.. Mulțumesc pentru ajutor!

ptriek ptriek
7 dec. 2011 19:31:46
1

Am făcut acest truc în felul următor pentru a putea verifica dacă este una dintre paginile mele:

// Obține ultimul link din istoric

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

// Verifică dacă nu este null și dacă conține URL-ul blogului meu

if( !empty( $prev_url ) || strpos( $prev_url, (string)get_blog_details()->domain ) !== false ) :
    // Afișează linkul doar dacă este o pagină a blogului meu ?>
    <a href="<?php echo $prev_url; ?>" class="previous-history-link">Ultima pagină din istoric</a>
<?php endif; ?>
2 mar. 2015 13:47:32
Comentarii

Doar o observație pe margine, HTTP_REFERER nu este de încredere deoarece poate fi dezactivat de utilizatorul final, așa că nu te baza niciodată pe acesta

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