Foros del Web » Programando para Internet » PHP »

¿Creo que necesito cookie? No estoy seguro

Estas en el tema de ¿Creo que necesito cookie? No estoy seguro en el foro de PHP en Foros del Web. Necesito identificar de manera única a mis visitas y esa identificación debe permanecer en la navegacion por mi sitio. ¿Es posible hacerlo sin base de ...
  #1 (permalink)  
Antiguo 18/05/2004, 03:50
 
Fecha de Ingreso: febrero-2003
Mensajes: 67
Antigüedad: 14 años, 9 meses
Puntos: 0
¿Creo que necesito cookie? No estoy seguro

Necesito identificar de manera única a mis visitas y esa identificación debe permanecer en la navegacion por mi sitio.

¿Es posible hacerlo sin base de datos? ¿Algún código de ejemplo?

Ya lo siento. Siempre estoy pidiendo, espero que algún día pueda dar....
  #2 (permalink)  
Antiguo 18/05/2004, 04:25
Avatar de Mignola  
Fecha de Ingreso: noviembre-2002
Ubicación: Templo Shaolin
Mensajes: 167
Antigüedad: 15 años, 1 mes
Puntos: 1
Lo puedes hacer con cookies:
setcookie("TestCookie",$value,time()+3600); /* expire in 1 hour */
o con sesiones:
$_SESSION['lalaliaro'] = "lo q sea...";


http://es2.php.net/manual/es/function.setcookie.php
http://es2.php.net/manual/es/ref.session.php
  #3 (permalink)  
Antiguo 18/05/2004, 05:18
 
Fecha de Ingreso: febrero-2003
Mensajes: 67
Antigüedad: 14 años, 9 meses
Puntos: 0
Me temo que no me he explicado bien.

Entendido lo de crear cookie
Código:
<?
setcookie("testcookie",$value,time()+1382400);
?>
Y lo de llamar a la cookie
Código:
<?
echo $HTTP_COOKIE_VARS["testcookie"];
?>
Pero necesito que el $value sea distinto para cada navegante.
Me explico, que cuando visite mi página yo sea siempre el visitante nº 1, tu el nº 2 y asi sucesivamente.

¿Como puedo hacerlo?
  #4 (permalink)  
Antiguo 18/05/2004, 07:46
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Las cookeis o sesiones son "UNICAS" para cada cliente que las crea e inicia dicha cookie/sesión ...

Si quieres almacenar en un lungar compartido a cada usuario e identificarlo como único tendras que implementar algún sistema de registro de usuarios para que ellos se identifiquen o bien "asumir" que todo el mundo va a usar IP's diferentes (esto no es cierto en todos los casos: Ip's dinámicas de conexiones a internet .. proxys todos toman la misma IP .. etc). y así no tendrías que pedir autentificació por qué y lo harías bajo la IP del cliente conectado ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 18/05/2004, 09:14
 
Fecha de Ingreso: febrero-2003
Mensajes: 67
Antigüedad: 14 años, 9 meses
Puntos: 0
Por lo que comentas, no sería posible lo que pretendo sino utilizo alguna base de datos que recoja al usuario.

Eso no era lo que quería.

Me planteo si existe la posibilidad de hacer algo similar a un contador que numere al usuario de modo que siempre tenga ese número.

Algo parecido a lo siguiente, aunque no lo he probado:
Código:
<?
$numero=$visitante; 
$numero+=1;
if(isset($HTTP_COOKIE_VARS["visitante"])) {

echo $HTTP_COOKIE_VARS["visitante"];
} else {

setcookie("visitante",$numero,time()+86400);

}

?>
  #6 (permalink)  
Antiguo 18/05/2004, 09:45
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pero .. ese "contador" con respecto a qué cosa se tiene que incrementar?

Si es respecto al último usuario que entró .. tendrás que tener en algún sitio (base de datos, archivo de texto plano .. etc) ese valor almacenado para que al ingresar un nuevo usuario (bajo que parámetro vas a determinar que es nuevo? .. IP .. la existencia de esa misma cookie? ...) para incrementarlo y crearle la cookie al cliente


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 18/05/2004, 10:24
 
Fecha de Ingreso: febrero-2003
Mensajes: 67
Antigüedad: 14 años, 9 meses
Puntos: 0
Cluster, estás en lo cierto.

Lo correcto sería la existencia de la cookie.

Y para evitar una base de datos, si es factible hacerlo mediante texto plano.

Pero todo ello se me escapa. ¿Algún lugar donde conseguir información o código para poder ver como hacerlo?
  #8 (permalink)  
Antiguo 18/05/2004, 12:54
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Puedes ver como trabajar con archivos de texto plano desde PHP en las funciones del grupo:

fopen() y afines (hay muchos ejemplos)
www.php.net/fopen

El procedimiento o "técnica" más o menos lo tienes claro y el trabajo con la cookie. Sólo te hace falta controlar tu $contador de lo que leas de ese archivo y actualizarlo cuando corresponda (cuando tu cookie no exista).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 19/05/2004, 05:48
 
Fecha de Ingreso: febrero-2003
Mensajes: 67
Antigüedad: 14 años, 9 meses
Puntos: 0
Gracias Cluster.

Pero no creas que lo tengo tan claro.

He creado el contador en mi index.php (encontrado en estos fabulosos foros) pero me he quedado bloqueado, ahora no se me ocurre como convertir ese dato del contador en un cookie

Este es el código de mi contador:

Código:
<?
/* Aqui abres el archivo que contiene los contadores */
$abrir = fopen ("visitas.txt","r");
while (!feof($abrir)) { $cont = fgets($abrir, 256); } 
fclose($abrir);

/* Convertir la variable de contenido del archivo en un array */
$contador = explode("", $cont);

/* Asignar cada posicion del array a una variable */
$TotalVisitas = $contador[0]; /* Visitas totales */
$VisitasDiarias = $contador[1]; /* Visitas diarias */
$fecha = $contador[2]; /* Ultima dia guardado */

/* Asignar el dia actual */
$fechaactual = date ("dmYHis");

/* Comprobar si el dia en el que estamos es diferente a la ultima visita */

if ($fechaactual==$fecha) {
$TotalVisitas++;
$VisitasDiarias++;

}
else {
$fecha = $fechaactual;
$TotalVisitas++;
$VisitasDiarias=1;

}


/* Organizar los valores para guardarlos */
$Guardar = $TotalVisitas."".$VisitasDiarias."".$fecha."";

/* Guardar los cambios */
$abrir = fopen ("visitas.txt","w");
fputs($abrir, $Guardar);
fclose($abrir);

?>
Me sobran cosas pero no me importa.

Y este es el número que visualizo en mi archivo visitas.txt: 1119052004124453

No se como seguir. No se como recuperarlo. Revisando los códigos que te puse ayer, no hago nada más que liarme.

Presiento que está cerca, pero no.....¿Puedes echarme una mano?

Última edición por wood; 19/05/2004 a las 06:10
  #10 (permalink)  
Antiguo 19/05/2004, 09:17
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Si observas tu código .. en:
$TotalVisitas

Con esa variable puedes crear tu cookie si corresponde. Sería más o menos por aquí:

Código PHP:
/* Comprobar si el dia en el que estamos es diferente a la ultima visita */

if(isset($HTTP_COOKIE_VARS["visitante"])) {

echo 
$HTTP_COOKIE_VARS["visitante"];
} else {

setcookie("visitante",$TotalVisitas,time()+86400);

}


if (
$fechaactual==$fecha) { 
No sé si "acerté"... pero el caso es que evalues el código que estás usando .. usa "echo $nombre_variable" para ver en cada punto del código que valor tienen tus variables .. sigue el flujo del código .. en fin .. estudialo.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 19/05/2004 a las 09:18
  #11 (permalink)  
Antiguo 19/05/2004, 09:23
 
Fecha de Ingreso: febrero-2003
Mensajes: 67
Antigüedad: 14 años, 9 meses
Puntos: 0
Despues de darle muchas vueltas, había pensado en algo así, aunque debo probarlo. Dime que te parece o si es mejor lo que tu me indicas:

Código:
<?
if(isset($HTTP_COOKIE_VARS["visitante"])) {

echo '<DIV><EM>'.$HTTP_COOKIE_VARS["visitante"].'</EM></DIV>';
} else {
/* Aqui abres el archivo que contiene los contadores */
$abrir = fopen ("visitas.txt","r");
while (!feof($abrir)) { $cont = fgets($abrir, 256); } 
fclose($abrir);

/* Convertir la variable de contenido del archivo en un array */
$contador = explode("", $cont);

/* Asignar cada posicion del array a una variable */
$TotalVisitas = $contador[0]; /* Visitas totales */
$VisitasDiarias = $contador[1]; /* Visitas diarias */
$fecha = $contador[2]; /* Ultima dia guardado */

/* Asignar el dia actual */
$fechaactual = date ("dmYHis");

/* Comprobar si el dia en el que estamos es diferente a la ultima visita */

if ($fechaactual==$fecha) {
$TotalVisitas++;
$VisitasDiarias++;

}
else {
$fecha = $fechaactual;
$TotalVisitas++;
$VisitasDiarias=1;

}


/* Organizar los valores para guardarlos */
$Guardar = $TotalVisitas."".$VisitasDiarias."".$fecha."";

/* Guardar los cambios */
$abrir = fopen ("visitas.txt","w");
fputs($abrir, $Guardar);
setcookie("visitante",$Guardar,time()+86400);
fclose($abrir);
}
?>

Última edición por wood; 19/05/2004 a las 09:25
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 16:49.