2016-02-08 10 views
7

Quale potrebbe essere un valido modo per realizzare i seguenti:Se l'utente è venuto dalla pagina precedente sul posto allora questo, altrimenti fare questo

Un sito web ha due pagine; Pagina padre e pagina interna. Se l'utente è arrivato direttamente alla pagina Inside digitando l'indirizzo o seguendo un link da una pagina diversa dalla pagina padre, quindi mostrare "foo". Se l'utente è arrivato alla pagina interna dalla pagina padre, quindi mostra "barra".

Avrei bisogno di farlo in JS se possibile. In caso contrario, PHP è una scelta secondaria.

+5

esattamente a questo scopo '$ _SERVER ['HTTP_REFERER']' è popolato. :) – Jigar

+0

Se si dispone di più pagine, utilizzare la Sessione PHP per memorizzare l'url corrente come precedente e controllare il valore della sessione in tutte le pagine. Usa echo basename ($ _ SERVER ['PHP_SELF']); per ottenere il nome della pagina. – Nikz

+0

Possibile duplicato di [Ottieni l'url di riferimento in javascript] (http://stackoverflow.com/questions/4131455/get-the-referral-url-in-javascript) –

risposta

1

Si prega di provare questo

Questo codice nella seconda pagina

jQuery(window).load(function() { 
    if (sessionStorage.getItem('dontLoad') == null) { 
    //show bar 
    } 
    else{ 
    //show foo 
    } 
}); 

Questo codice nella pagina padre

jQuery(window).load(function() { 
    sessionStorage.setItem('dontLoad','true') 
}); 
+0

sembra esserci un errore di sintassi con il tuo codice. Dammi una schermata vuota. – beliy333

+0

perché sto caricando la pagina interna tramite ajax e non una pagina separata, questa sembra essere la risposta più appropriata e funziona per il mio caso. – beliy333

1

with php:

C'è un modo semplice è quello di creare una pagina mediatore che reindirizza alla pagina interna dopo aver effettuato una sessione/cookie .. quindi se si otterrà la sessione/cookie, si mostra pippo & sessione non impostata.

se qualcuno direttamente provengono da url, nessuna sessione/biscotto trovato & esso esposizione bar ..

4

è possibile ottenere la pagina che l'utente è venuto da con document.referrer.

Così si potrebbe implementare la soluzione in questo modo:

if (document.referrer === 'yoursite.com/parentpage') { 
    // do bar 
} else { 
    // do foo 
} 
1

È possibile utilizzare il document.referrer ma questo non è sempre impostato. Si potrebbe aggiungere un parametro per l'URL della pagina principale e quindi controllare per la sua esistenza nella pagina figlio

link sulla pagina principale:

<a href='myChildPage.html?fromParent=1'>My Child Page</a> 

codice JS sulla tua pagina figlio:

var fromParent=false; 
var Qs = location.search.substring(1); 
var pairs = Qs.split("&"); 
for(var i = 0; i < pairs.length; i++){ 
    var pos = pairs[i].indexOf('='); 
    if(pos!==-1){ 
     var paramName = pairs[i].substring(0,pos); 
     if(paramName==='fromParent'){ 
      fromParent=true; 
      break; 
     } 
    } 
} 

if(fromParent){ 
    alert("From Parent"); 
}else{ 
    alert("NOT From Parent"); 
} 

Questo metodo non è sicuro al 100% in quanto gli utenti possono digitare lo stesso URL del collegamento della pagina principale. Per una maggiore precisione, controlla prima document.referrer e se non impostato usa il metodo che ho delineato sopra

Problemi correlati