2012-01-06 11 views
7

Encontré un fragmento de código que redirige si es la primera vez, pero cuando traté de usarlo, solo permanecía en ese código. Realmente no entiendo mucho sobre las cookies y cómo funciona, ¡así que tal vez puedas ayudar! Aquí está el código PHP:Mostrar página diferente si visita por primera vez

<?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! 

    } 

?> 

Entonces, ¿cómo podría yo fijarlo así que si es su primera visita al sitio que le trae a una determinada página, y si no es así, el valor por defecto?

+1

No estableces ninguna 'cookie', configurando una' sesión' (que establece una cookie, pero no debe ser persistente). – PeeHaa

+0

'// ¡No te olvides de agregar la barra de puntos de dos puntos http www. '¿por qué? las rutas relativas './index.php' se pueden usar dentro de un encabezado de ubicación –

Respuesta

18

Puede utilizar este código:

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

Se comprobará si tiene una cookie llamada "firsttime" y si no, se va a crear y redirigir a la página firstTime ... Si es así, simplemente lo redirigirá al sitio web ...

+0

¡Gracias por la edición! –

+0

Pregunta, ¿pensé que la función de encabezado solo podría usarse antes de que sucediera algo más? En el caso anterior, ¿por qué la función de salida luego se reubicaría en ese enlace? Nunca debería ejecutar la función de salida si realmente se reubicó. Lo siento, no sé mucho sobre los encabezados. – Andy

+0

@Andy No estoy usando la función exit() en mi código, pero sí, debe poner cualquier encabezado() antes de cualquier otro código porque creará problemas con la etiqueta ... –

1

Si las sesiones/cookies son difíciles, puede guardar la IP del visitante. Cuando existe IP, ¿muestra la página 1 cuando IP es una nueva redirección a otra página?

1

Para obtener más información, vea 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

Por favor, no suprima las advertencias. Cada vez que haces eso, un gatito muere. – PeeHaa

+3

Eso no fue constructivo en absoluto, la única razón por la que se suprime es porque no tenemos idea de dónde va este código, y si se inserta en el lugar equivocado podría arrojar advertencias sobre los encabezados que ya se están enviando. Lo siento, tu gatito está muerto. – 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 } 

?> 

que acaba de hacer una sentencia if para comprobar si hay un conjunto sesión, si no es así, usted sabe que está allí por primera vez. Sin embargo, dado que no es una cookie, cada vez que salga del navegador, asumirá que es la primera vez, incluso si nunca es la primera vez.

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> 
<? 
} 

?> 

@ Frederick o PeeHaa sería el guión anterior también trabajar para que aparezca una ventana antes de que entren en el sitio en lugar de una página.

+2

Bienvenido a stackoverflow. Has publicado una "respuesta", pero parece que realmente tienes una pregunta (?). Si es así, debe [abrir un nuevo hilo] (http://stackoverflow.com/questions/ask) en su lugar. – Leigh

Cuestiones relacionadas