Foros del Web » Programando para Internet » PHP »

Cookie de primera visita. Dónde está el fallo?

Estas en el tema de Cookie de primera visita. Dónde está el fallo? en el foro de PHP en Foros del Web. Buenas.. Mi propósito es simple, lo hacen casi todas las webs, me gustaría hacer una cookie que en la primera visita a mi web se ...
  #1 (permalink)  
Antiguo 29/07/2004, 11:10
 
Fecha de Ingreso: mayo-2004
Mensajes: 398
Antigüedad: 19 años, 11 meses
Puntos: 4
Pregunta Cookie de primera visita. Dónde está el fallo?

Buenas..

Mi propósito es simple, lo hacen casi todas las webs, me gustaría hacer una cookie que en la primera visita a mi web se viera la intro (index.html), pero en las consecutivas visitas a la web le llevaría a la web principal (index.php).

Alguien me pasa algún ejemplo.

Pongo el mio aunque no me funciona (index.html):

Código PHP:

<?php
$visitas
=$visitas+1;
setCookie("visitas_alja",$visitas,time()+3600*24*365);

if(
$visitas == 1)
{
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>El titulo de mi web</title>
</head>

<body>
<table width="100%"  border="0">
  <tr>
    <th align="center" valign="middle" scope="col">
      <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="700" height="450">
        <param name="movie" value="images/intro.swf" />
        <param name="quality" value="high" /><param name="LOOP" value="false" />
        <embed src="images/intro_v1.swf" width="700" height="450" loop="false" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash"></embed>
      </object>    </th>
  </tr>
</table>


<?php
}
else
{
?>
<script LANGUAGE="JavaScript">

var pagina="http://www.mipag.com/index.php"
function redireccionar() 
{
location.href=pagina


</script>

<?php
}
?>
  #2 (permalink)  
Antiguo 29/07/2004, 11:27
Avatar de José Molina  
Fecha de Ingreso: enero-2002
Ubicación: USA
Mensajes: 768
Antigüedad: 22 años, 3 meses
Puntos: 1
Saludos.

Ok, tu idea esta bien, lo que pasa es que antes de sumarle 1 al avariable visitas, deberías preguntar por el cookie. Si el cookie existe en la pc entonces le sumas 1 o ejecutas el if de una vez. Se supone que si el cookie existe es porque ya entro a tu página. Si el cookie lo creaste con variable de tiempo restringido entonces ejecutas el if.

Pero siempre tendrás que preguntar si existe el cookie. Eso es lo que te falta.

Suerte
__________________
José Molina
La marginalidad no esta en la incapacidad de calmar el hambre de un estómago sino en la incapacidad de calmar el hambre de la mente.
  #3 (permalink)  
Antiguo 29/07/2004, 11:47
 
Fecha de Ingreso: mayo-2004
Mensajes: 398
Antigüedad: 19 años, 11 meses
Puntos: 4
ok, he pillado la idea

Muchas gracias por conterstar.

ok, he pillado la idea. Aunque no sé como hacerlo, podrías ponerme el código para comprobar si existe la cookie?


Salu2
  #4 (permalink)  
Antiguo 29/07/2004, 12:03
Avatar de José Molina  
Fecha de Ingreso: enero-2002
Ubicación: USA
Mensajes: 768
Antigüedad: 22 años, 3 meses
Puntos: 1
Recuperar Cookie con PHP

Saludos.

Espero acordarme bien:

Código PHP:
<?
if (!isset($_COOKIE['visitas_alja'])){ 

setCookie("visitas_alja",$visitas,time()+3600*24*365); 

?> 
Escribes tu html cuando no existe
<?
}else{
?>
Escribes tu html cuando si existe
<?
}
?>
Suerte
__________________
José Molina
La marginalidad no esta en la incapacidad de calmar el hambre de un estómago sino en la incapacidad de calmar el hambre de la mente.
  #5 (permalink)  
Antiguo 29/07/2004, 12:08
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Sería algo tipo:

index.php
Código PHP:
<?
if (isset($_COOKIE['visitas_alja'])){
   
setCookie("visitas_alja",$_COOKIE['visitas']+1,time()+3600*24*365); 
   
header ("Location: index2.php");
   exit;
} else {
   
header ("Location: intro.php");
   exit;
}
?>
Si en index2.php o páginas subsiguentes de tu sitio deseas mostrar el nº de visitas .. tan sólo lee el valor de tu cookie.

Por otro lado .. ese cálculo que haces en 3600*24*365 .. deberías hacerlo a mano y poner ahí el resultado, NO recargues a PHP en un proceso que es constante (esa multiplicación siempre va a dar lo mismo). Recuerda que ese "dato" son segundos.

Un saludo,

Última edición por Cluster; 29/07/2004 a las 12:12
  #6 (permalink)  
Antiguo 29/07/2004, 12:48
 
Fecha de Ingreso: mayo-2004
Mensajes: 398
Antigüedad: 19 años, 11 meses
Puntos: 4
Gracias a los dos por responder, funcionan los dos

Gracias a los dos por responder, funcionan los dos, aunque voy a poner el de cluster porque en la redirección que usaba de javascript me visualiza un poco de la intro, un pantallazo, pero que no me gusta.

Un detalle referente al php de cluster es que si hay alguna forma de que la página principal no sea index2.php, digo esto porque tendría que cambiar toda la web y me podría morir...

He mirado si mi hosting me daba la elección de elegir cual es la pantalla principal, pero es fijo, el orden es:

1- La página index.html
2- ìndex.htm
3- index.php


No se podría poner el código en una página con extensión html o htm???

Espero haberme explicado, pero sino lo que quiero es que el script que has puesto no se llame index.php sino index.html o index.htm


Salu2 GRACIAS!!!!!!!
  #7 (permalink)  
Antiguo 29/07/2004, 13:05
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Si el ordene es así .. index.html -> index.php .. podrías crearte un index.html y redireccionar a index.php vía jascript.

Pero .. si en tu index.php haces:

Código PHP:
<? 
if (isset($_COOKIE['visitas_alja'])){ 
   
setCookie("visitas_alja",$_COOKIE['visitas']+1,time()+3600*24*365); 
?>  

pagina index.php actual .. código integro:

<?
} else { 
?>

   pagina de tu intro...  
  
<?

?>
No tendrías que tener problemas .. fijate que sería PHP el que decide que "página va a entregar al cliente" (refiriendome a que vas a ponre ahí todo tu código HTML correspondiente a cada página). Que .. por otro lado es la solución que te dió José Molina.

Un saludo,

Última edición por Cluster; 29/07/2004 a las 13:09
  #8 (permalink)  
Antiguo 29/07/2004, 17:24
 
Fecha de Ingreso: mayo-2004
Mensajes: 398
Antigüedad: 19 años, 11 meses
Puntos: 4
no creo que sea una buena solución

no creo que sea una buena solución ya que las personas que no acepten cookies en su navegador, nunca podrán ver la web principal (index.php) porque siempre veran la intro

Última edición por asitudela; 29/07/2004 a las 18:05
  #9 (permalink)  
Antiguo 29/07/2004, 20:30
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
asitudela ...

La "intro" supongo que al acabar o bien redirecciona sola hacia el "index2.php" o tiene un link para tal fin ..

El caso es que quien no acepte cookies siempre se "tragará" la intro y los que las acepten sólo una vez (la primera vez).

(me refiero al primer ejemplo que puse ..)

Con respecto al segundo caso .. Si, es cierto que si no aceptas cookies siempre veras la intro .. pero para eso puedes usar otro pequeño "condicional" y para ello usar una variable de control que le pasaríamos a esta:

Código PHP:
if ($_GET['intro'] == 'no' || isset($_COOKIE['blabal'])){
// el "index" actual
} else {
// la intro.
// al terminar .. link a: index.php?intro=no

Eso sí, .. la "intro" al terminar tendría que redireccionar tipo:

index.php?intro=no

La solución no es muy "ortodoxa" pero funcionaría.

Por cierto, ahora que caigo .. ese "contador de visitas" basado en cookies sería las visita de -ese usuario- al sitio (no "globales" de todos los usuarios) (no sé el fin de ese "contador" cual será . .pero ten presente esto).

Un saludo,

Última edición por Cluster; 29/07/2004 a las 20:38
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:16.