2012-01-06 14 views
7

Ho trovato un frammento di codice che reindirizza se si tratta della prima visita, ma quando ho provato a utilizzarlo, è rimasto su quel codice. Non capisco molto dei cookie e di come funziona, quindi forse puoi aiutare! Ecco il codice PHP:Mostra pagina diversa se visita la prima volta

<?php 

    session_start(); 

    if (isset($_SESSION['FirstVisit'])) { 

    $_SESSION['FirstVisit'] = 1; 

    header("Location: http://example.com/index.php"); 

    // Don't forget to add http colon slash slash www dot before! 

    } 

?> 

Così come potrei risolvere il problema quindi se è la vostra prima visita al sito che ti porta ad una certa pagina, e in caso contrario, il default?

+1

Non impostando alcun 'cookie', l'impostazione di una' sessione' (che imposta un cookie, ma non dovrebbe essere persistente). – PeeHaa

+0

'// Non dimenticarti di aggiungere http la barra dei due punti della barra www prima! 'perché? percorsi relativi './index.php' possono essere utilizzati all'interno di un'intestazione di posizione –

risposta

18

È possibile utilizzare questo codice:

<?php 
if (!isset($_COOKIE['firsttime'])) 
{ 
    setcookie("firsttime", "no", /* EXPIRE */); 
    header('Location: first-time.php'); 
    exit(); 
} 
else 
{ 
    header('Location: site.php'); 
    exit(); 
} 
?> 

Sarà controllare se si dispone di un cookie denominato "firsttime" e se non, si creerà e reindirizzare alla tua pagina firsttime ... Se sì, ti reindirizzerà semplicemente al sito web ...

+0

Grazie per la modifica! –

+0

Domanda, pensavo che la funzione intestazione potesse essere utilizzata solo prima che accadesse qualcos'altro? Nel caso precedente, perché in seguito la funzione di uscita dovrebbe essere trasferita su quel collegamento? Non dovrebbe mai eseguire la funzione di uscita se si è effettivamente trasferita. Scusa, non so molto sulle intestazioni. – Andy

+0

@Andy Non sto usando la funzione exit() nel mio codice ma sì, devi inserire qualsiasi header() prima di qualsiasi altro codice, perché creerà problemi con il tag ... –

1

Se le sessioni/i cookie sono difficili, è possibile salvare l'IP del visitatore. Quando l'IP esiste mostra la pagina 1 quando IP è il nuovo reindirizzamento ad un'altra pagina?

1

Per ulteriori informazioni, vedere the docs.

<?php 

    if (!isset($_COOKIE['visited'])) { // no cookie, so probably the first time here 
     setcookie ('visited', 'yes', time() + 3600); // set visited cookie 

     header("Location: http://example.com/index.php"); 
     exit(); // always use exit after redirect to prevent further loading of the page 
    } 

?> 
0
<?php 

    @session_start(); 
    $url = 'http://blah.com/default/'; 

    if (!isset($_COOKIE['Visited'])) { 
     $_COOKIE['Visited'] = 1; 
     $url = 'http://blah.com/firstvisit/'; 
    } 

    header("Location: {$url}"); 

    ?> 
+6

Si prega di non sopprimere gli avvisi. Ogni volta che lo fai muore un gattino. – PeeHaa

+3

Non è stato affatto costruttivo, l'unica ragione per cui è stata soppressa è perché non abbiamo idea di dove stia andando questo codice, e se inserito nel posto sbagliato potrebbe lanciare avvertimenti su intestazioni già inviate. Scusa, il tuo gattino è morto. – lawrencealan

3
<?php 

    session_start(); 

    if (!isset($_SESSION['FirstVisit'])) { 

    //show site for the first time part 
    $_SESSION['FirstVisit'] = 1; 
    header("Location: http://example.com/index.php"); 

    // Don't forget to add http colon slash slash www dot before! 

    } else { Show normal site } 

?> 

basta fare un'istruzione if per verificare se v'è un insieme di sessione, in caso contrario, si conosce il suo lì prima volta. Anche se, dato che non è un cookie, ogni volta che esci dal browser, assumerà che è la prima volta, anche se non è mai la prima volta.

0
<link rel="stylesheet" href="http://code.jquery.com/ui/1.9.2/themes/base/jquery- 
ui.css" /> 
<script src="http://code.jquery.com/jquery-1.8.3.js"></script> 
<script src="/resources/demos/external/jquery.bgiframe-2.1.2.js"></script> 
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script> 
<link rel="stylesheet" href="/resources/demos/style.css" /> 
<script> 
$(function() { 
$("#dialog").dialog(); 
}); 
</script> 

<?php 
if (!isset($_COOKIE['firsttime'])) 
{ 
setcookie("firsttime", "no", /* EXPIRE */); 
header('Location: first-time.php'); 
exit(); 
} 
else 
{ 
?> 
<div id="dialog" title="Basic dialog"> 
<p>text</p> 
</div> 
<? 
} 

?> 

@ Federico o PeeHaa avrebbero lo script qui sopra lavorare anche per aprire una finestra prima che entrino nel sito, piuttosto che una pagina.

+2

Benvenuti in StackOverflow. Hai postato una "risposta", ma sembra che tu abbia effettivamente una domanda (?). Se è così, dovresti invece [aprire una nuova discussione] (http://stackoverflow.com/questions/ask). – Leigh

Problemi correlati