Obtener el ID de la página visitada anteriormente

7 dic 2011, 17:18:40
Vistas: 19.8K
Votos: 7

Me gustaría obtener el ID (o permalink) de la página que el visitante visitó justo antes de visitar la página actual - en otras palabras, el ID de la última página en el historial del navegador.

¿Es esto posible? ¿Alguna idea de cómo hacerlo?

3
Comentarios

Busca dentro del array print_r( $GLOBALS );. No estoy seguro ahora mismo, pero puede estar dentro de $_GET/_REQUEST/_SESSION/_SERVER;...

kaiser kaiser
7 dic 2011 18:42:42

@kaiser gracias, efectivamente hay un HTTP_REFERER en _SERVER - que me da la URL de la página anterior. ¡Perfecto!

ptriek ptriek
7 dic 2011 18:50:10

Esto podría ser útil: https://codex.wordpress.org/Function_Reference/wp_get_referer

shasi kanth shasi kanth
10 abr 2015 18:37:26
Todas las respuestas a la pregunta 2
3

Divide esto en dos partes:

Primero, creamos una variable que almacene la URL de la última página visitada, así:

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

Luego, podrías usar substr y strpos para recortar todo lo que esté entre ?= y la / después del número de ID. Así:

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

... O podrías usar jQuery/Javascript para lograr lo mismo.

No he probado esto, pero debería funcionar. ¡Déjame saber cómo te va! ¡Buena suerte! ;)

7 dic 2011 18:51:30
Comentarios

gracias - ya estaba pensando en esta dirección, pero el manual de php dice al respecto: "La dirección de la página (si existe) que refirió al agente de usuario a la página actual. Esto lo establece el agente de usuario. No todos los agentes de usuario lo configurarán, y algunos permiten modificar HTTP_REFERER como una característica. En resumen, no se puede confiar realmente en ello." Así que tengo algunas dudas sobre si es la mejor manera de proceder...

ptriek ptriek
7 dic 2011 18:56:54

Cierto - el HTTP_REFERER depende únicamente del servidor. Para ser honesto, no conozco otras soluciones para esto. Si no es una función crucial, seguiría adelante y usaría HTTP_REFERER ya que es bastante estable entre agentes.

cr0z3r cr0z3r
7 dic 2011 19:19:00

No es una función crucial, así que simplemente usaré esto y proporcionaré un escenario alternativo... ¡Gracias por tu ayuda!

ptriek ptriek
7 dic 2011 19:31:46
1

He hecho este truco de esta manera para permitirme también comprobar si es una de mis páginas:

//Obtener el enlace de la última página del historial

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

//Comprobar si no es nulo y si contiene la URL de mi blog

if( !empty( $prev_url ) || strpos( $prev_url, (string)get_blog_details()->domain ) !== false ) :
    //Entonces mostrarlo solo si es una página de mi blog ?>
    <a href="<?php echo $prev_url; ?>" class="previous-history-link">La última página del historial</a>
<?php endif; ?>
2 mar 2015 13:47:32
Comentarios

Solo un comentario al margen aquí, HTTP_REFERER no es confiable ya que puede ser desactivado por el usuario final, así que nunca dependas de eso

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