Foros del Web » Programando para Internet » Javascript »

Cookies

Estas en el tema de Cookies en el foro de Javascript en Foros del Web. Hola, tengo una página donde hay un enlace para coger cookies. La cuestión es que yo quiero que una vez que las tenga guardadas me ...
  #1 (permalink)  
Antiguo 07/06/2010, 14:32
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Cookies

Hola, tengo una página donde hay un enlace para coger cookies. La cuestión es que yo quiero que una vez que las tenga guardadas me las muestre en un div que tengo. Es decir, sale un prompt pidiéndote el nombre y cuando ya lo has metido tendría que quedar en el div. Aquí va el código:

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2. function getCookie(nombreCookie)
  3. {
  4. if (document.cookie.length>0)
  5.   {
  6.   c_start=document.cookie.indexOf(nombreCookie + "=");
  7.   if (c_start!=-1)
  8.     {
  9.     c_start=c_start + c_name.length+1;
  10.     c_end=document.cookie.indexOf(";",c_start);
  11.     if (c_end==-1) c_end=document.cookie.length;
  12.     return unescape(document.cookie.substring(c_start,c_end));
  13.     }
  14.   }
  15. return "";
  16. }
  17.  
  18. function setCookie(nombreCookie,valorCookie,expiredays)
  19. {
  20. var fecha=new Date();
  21. fecha.setDate(fecha.getDate()+expiredays);
  22. document.cookie=nombreCookie+ "=" +escape(valorCookie)+
  23. ((expiredays==null) ? "" : ";expires="+fecha.toUTCString());
  24. }
  25.  
  26. function checkCookie()
  27. {
  28. nUsuario=getCookie('usuario');
  29. if (nUsuario!=null && nUsuario!="")
  30.   {
  31.   function reloj(){
  32.    var f = new Date();
  33.    var a = f.getFullYear();
  34.    var m = new Array ("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre",    "Octubre","Noviembre","Diciembre");
  35.    var d = new Array ("Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado");
  36.    var h = f.getHours();
  37.    var mi = f.getMinutes();
  38.    var s = f.getSeconds();
  39.    if (h<10){h='0'+h}
  40.    if (h>12){h=h-12}
  41.    if (mi<10){mi='0'+mi}
  42.    if (s<10){s='0'+s}
  43.    document.getElementById("capaPersonal").innerHTML = '<span style="font-size:25px;">Hola,&nbsp;</span><span style="font-size:30px; text-transform: capitalize;">' + nUsuario + '</span><span class="fecha">Hoy es ' + d[f.getDay()] + ', ' + f.getDate() + ' de ' + m[f.getMonth()] + ' de ' + a + ' y son las ' + h + ':' + mi + ':' + s + '</span>';
  44.    
  45. }
  46. setInterval("reloj()", 1000);
  47.  
  48.   }
  49. else
  50.   {
  51.   nUsuario=prompt('Por favor, introduce tu nombre',"");
  52.   if (nUsuario!=null && nUsuario!="")
  53.     {
  54.     setCookie('usuario',nUsuario,1);
  55.     }
  56.   }
  57. }
  58. </script>

Código HTML:
Ver original
  1. <div id='capaPersonal'>Si quieres una experiencia más personal de la página, haz click <a href='#' onclick='checkCookie();' class='enlace'>aquí</a></div>

Pero lo único que hace es almacenar el valor y ya está, y de eso tampoco estoy seguro porque no lo muestra. A ver si alguien me puede ayudar.
Saludos (:
  #2 (permalink)  
Antiguo 07/06/2010, 15:33
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Cookies

en tal caso tienes que verificar si existe alguna cookie definida cuando el documento termine de cargar. de existir alguno, lees la cookie y la imprimes en el DIV o donde gustes.

por cierto, ¿que paso con tu usuario anterior?
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 07/06/2010, 15:53
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Cookies

Pero esque se supone que eso ya lo está haciendo ¿no?

Código Javascript:
Ver original
  1. function checkCookie()
  2. {
  3. nUsuario=getCookie('usuario');//aquí cojo las cookies
  4. if (nUsuario!=null && nUsuario!="")// si ya hay cookies definidas
  5.   {
  6.   function reloj(){//función de un reloj y calendario
  7.    var f = new Date();
  8.    var a = f.getFullYear();
  9.    var m = new Array ("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre",    "Octubre","Noviembre","Diciembre");
  10.    var d = new Array ("Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado");
  11.    var h = f.getHours();
  12.    var mi = f.getMinutes();
  13.    var s = f.getSeconds();
  14.    if (h<10){h='0'+h}
  15.    if (h>12){h=h-12}
  16.    if (mi<10){mi='0'+mi}
  17.    if (s<10){s='0'+s}
  18.    document.getElementById("capaPersonal").innerHTML = '<span style="font-size:25px;">Hola,&nbsp;</span>';
  19.    document.getElementById("capaPersonal").innerHTML += '<span style="font-size:30px; text-transform: capitalize;">' + nUsuario + '</span>';
  20.    document.getElementById("capaPersonal").innerHTML += '<span class="fecha">Hoy es ' + d[f.getDay()] + ', ' + f.getDate() + ' de ' + m[f.getMonth()] + ' de ' + a + ' y son las ' + h + ':' + mi + ':' + s + '</span>';
  21. }//le pongo el valor que quiero (en teoría -.-')
  22. setInterval("reloj()", 1000);
  23.  
  24.   }
  25. else
  26.   {
  27.   nUsuario=prompt('Por favor, introduce tu nombre',"");//si no hay sale el prompt
  28.   if (nUsuario!=null && nUsuario!="")
  29.     {
  30.     setCookie('usuario',nUsuario,1);
  31.     }
  32.   }
  33. }

Pues no s´r pero de repente tuve problemas con el login y no me dejaba entrar así que tuve que crearme una nueva cuenta, pero bueno espero recuperar los mensajes que tenía en poco tiempo.
Saludos (:

Última edición por _cronos2; 07/06/2010 a las 16:12
  #4 (permalink)  
Antiguo 07/06/2010, 16:02
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Cookies

Cita:
Pero esque se supone que eso ya lo está haciendo ¿no?
si y no. es decir, con ese codigo verificas la cookie, pero eso es una funcion y las funciones no se invocan por si solo salvo en los eventos. fijate que en tu codigo solo estas invocando checkCookie cuando se presiona el enlace.

Cita:
Iniciado por offtopic
respecto a tu otro usuario... intenta recuperando la contraseña.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #5 (permalink)  
Antiguo 07/06/2010, 16:27
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Cookies

Eeeerm... creo que me perdí. En teoría tendría que seguir este curso:
1- Haglo click en el enlace
2- La función verifica las cookies
3- Si no hay sale el prompt
4- Se almacena el nombre

Cita:
respecto a tu otro usuario... intenta recuperando la contraseña.
Esque no es tan sencillo. La verdad que no sé qué &%$/! hice al registrarme que yo creo que me registré a través de facebook, pero no mi facebook, y esa cuenta de facebook estaba casi siempre abierta (por eso aparecía muchas veces como conectado cuando no estaba) y el otro día debió de cerrarse porque de repente tenía que volver a entrar. Y lo peor de todo es que como soy tan desastre me olvido de las contraseñas... y del correo con el que me registré. Y mandé un mensaje al administrador pero yo entiendo que no me dé la contraseña si no le sé decir el correo con el que estaba registrado. Ahora en vez de eso estoy registrado normal y corriente y espero que no me dé más problemas.
Saludos (:
  #6 (permalink)  
Antiguo 07/06/2010, 16:29
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Cookies

Vale creo que ya lo entendí. ¿Entonces tendría que quedar así?

Código Javascript:
Ver original
  1. function checkCookie()
  2. {
  3. nUsuario=getCookie('usuario');//aquí cojo las cookies
  4. if (nUsuario!=null && nUsuario!="")// si ya hay cookies definidas
  5.   {
  6.   function reloj(){//función de un reloj y calendario
  7.    var f = new Date();
  8.    var a = f.getFullYear();
  9.    var m = new Array ("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre",    "Octubre","Noviembre","Diciembre");
  10.    var d = new Array ("Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado");
  11.    var h = f.getHours();
  12.    var mi = f.getMinutes();
  13.    var s = f.getSeconds();
  14.    if (h<10){h='0'+h}
  15.    if (h>12){h=h-12}
  16.    if (mi<10){mi='0'+mi}
  17.    if (s<10){s='0'+s}
  18.    document.getElementById("capaPersonal").innerHTML = '<span style="font-size:25px;">Hola,&nbsp;</span>';
  19.    document.getElementById("capaPersonal").innerHTML += '<span style="font-size:30px; text-transform: capitalize;">' + nUsuario + '</span>';
  20.    document.getElementById("capaPersonal").innerHTML += '<span class="fecha">Hoy es ' + d[f.getDay()] + ', ' + f.getDate() + ' de ' + m[f.getMonth()] + ' de ' + a + ' y son las ' + h + ':' + mi + ':' + s + '</span>';
  21. }//le pongo el valor que quiero (en teoría -.-')
  22. setInterval("reloj()", 1000);
  23.  
  24.   }
  25. else
  26.   {
  27.   nUsuario=prompt('Por favor, introduce tu nombre',"");//si no hay sale el prompt
  28.   if (nUsuario!=null && nUsuario!="")
  29.     {
  30.     setCookie('usuario',nUsuario,1);
  31.     setInterval("reloj()", 1000);
  32.     }
  33.   }
  34. }
  #7 (permalink)  
Antiguo 07/06/2010, 16:40
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Cookies

Cita:
Eeeerm... creo que me perdí. En teoría tendría que seguir este curso:
1- Haglo click en el enlace
2- La función verifica las cookies
3- Si no hay sale el prompt
4- Se almacena el nombre
en teoria eso es lo que hace la funcion checkCookie. vamos por parte:
  • si es la primera vez que visito el documento, sucede lo que describistes, salvo que no veras en el DIV el valor introducido. sin hacer ningun cambio a tu codigo, tendrias que llamar nuevamente la funcion checkCookie. si en esta fase quieres que se muestre, te recomiendo que cambies un poco el proceso. en lugar de invocar reloj() solo cuando existe la cookie, lo vas a invocar siempre al final de la funcion. o sea,
    Código:
    if(si no existe cookie) crearla;
    else leer_cookie;
    invocar reloj;
    
  • si es la segunda visita y subsiguientes, el valor de la cookie no se va a imprimir cuando cargue el documento. para ello habria que presionar sobre el enlace. si quieres que se haga automatico, entonces tienes que invocar checkCookie desde onload.

Cita:
Iniciado por offtopic
suerte con tu nuevo usuario :)
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #8 (permalink)  
Antiguo 07/06/2010, 16:48
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Cookies

Cita:
Iniciado por _cronos2 Ver Mensaje
Vale creo que ya lo entendí. ¿Entonces tendría que quedar así?
mas o menos eso, solo que tendrias que mover fuera la funcion reloj fuera del if para que tambien pueda invocarse con else.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #9 (permalink)  
Antiguo 07/06/2010, 16:53
 
Fecha de Ingreso: mayo-2010
Mensajes: 9
Antigüedad: 13 años, 11 meses
Puntos: 0
Respuesta: Cookies

yo creo k el codigo esta bn asi, pero no me hagais mucho caso

Última edición por dios_kratos; 07/06/2010 a las 16:59
  #10 (permalink)  
Antiguo 07/06/2010, 17:19
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Cookies

una observacion respecto al segundo punto... no tiene sentido invocar checkCookie desde onload -en caso de que lo quieras hacer automatico- y tener el enlace que invoca la funcion. porque independientemente sea la primera, segunda, tercera, y demas visita, se invocaria la funcion checkCookie desde onload. creo que tendras que repensar tu codigo de acuerdo a la forma que realmente lo quieras hacer. no me habia fijado antes porque casi siempre acostumbro analizar el codigo mentalmente.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #11 (permalink)  
Antiguo 08/06/2010, 00:01
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Cookies

a esque ayer estuve pensando y no se me ocurrió nada... voy a ver si hoy por la mañana se m ocurre alguna cosa y te digo. Gracias por la ayuda igualmente.
Saludos (:
  #12 (permalink)  
Antiguo 08/06/2010, 09:25
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Cookies

Bueno ahora lo tengo así. ¿Esto funcionaría? Esque al coger las cookies tengo que esperar un día para hacer cada prueba -.-'

Código Javascript:
Ver original
  1. <script type='text/javascript'>
  2. function reloj(){
  3.  var f = new Date();
  4.  var a = f.getFullYear();  
  5.  var m = new Array ("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre",    "Octubre","Noviembre","Diciembre");
  6.  var d = new Array ("Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado");
  7.  var h = f.getHours();
  8.  var mi = f.getMinutes();
  9.  var s = f.getSeconds();
  10.  if (h<10){h='0'+h}
  11.  if (h>12){h=h-12}
  12.  if (mi<10){mi='0'+mi}
  13.  if (s<10){s='0'+s}
  14.  document.getElementById("capaPersonal").innerHTML = '<span style="font-size:25px;">Hola,&nbsp;</span><span style="font-size:30px; text-transform: capitalize;">' + nUsuario + '</span><span class="fecha">Hoy es ' + d[f.getDay()] + ', ' + f.getDate() + ' de ' + m[f.getMonth()] + ' de ' + a + ' y son las ' + h + ':' + mi + ':' + s + '</span>';
  15. }
  16.  
  17. function checkCookie(){
  18.  nUsuario=getCookie('usuario');
  19.  if(nUsuario==null || nUsuario==""){
  20.   nUsuario=prompt('Por favor, introduce tu nombre',"");
  21.  }else{
  22.   setCookie('usuario',nUsuario,1);
  23.  }
  24.  setInterval("reloj()", 1000);
  25. }
  26. </script>
  #13 (permalink)  
Antiguo 08/06/2010, 12:12
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Cookies

Cita:
Esque al coger las cookies tengo que esperar un día para hacer cada prueba -.-'
dime que hablas en serio... ¿sabes que puedes borrar los archivos temporeros del navegador? es cuestion de borrar las cookies y continuas haciendo las pruebas. o en su defecto, creas la misma cookie con una fecha expirada el cual es el equivalente a borrarla.

respecto a tu codigo, analizandolo mentalmente, entiendo que si deberia funcionar.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #14 (permalink)  
Antiguo 08/06/2010, 12:55
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Cookies

Pues no, no funciona. Ahora ni siquiera funciona el enlace :S
  #15 (permalink)  
Antiguo 08/06/2010, 12:59
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Cookies

Vale, me acabo de dar cuenta de que soy extremadamente inteligente
Resulta que copié el código de [URL="http://www.w3schools.com/JS/js_cookies.asp"]aquí[/URL] como me dijo Adler (pido perdón por no dar las gracias en aquel tema pero esque estuve muy liado y esto de las cookies lo probé esta semana) y le cambié el nombre a algunas variables para entenderlo mejor, y me acaba de decir la consola de errores que es porque me faltaba una sin cambiar el nombre... Dios, con la lata que he dado xD
Y lo más raro de todo es que hasta ahora no había salido eso en la consola de errores.
De todas maneras muchas gracias por toda la ayuda que me habéis prestado (:
  #16 (permalink)  
Antiguo 08/06/2010, 16:48
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Cookies

Vale, ahora ya me funciona, pero sólo me funciona en la misma página. Es decir, esto yo lo tengo en prin.html, y me coge las cookies bien, pero en teoría tendría que pasar a otra página (por ejemplo formulario.html) y que siguiera saliendo eso ahí. No me refiero a marcos sino que cuando cargue la página se vuelva a poner lo mismo que en prin.html pero en la nueva página.
Lo tengo así:
Código Javascript:
Ver original
  1. <script type="text/javascript">
  2. function getCookie(nombreCookie)
  3. {
  4. if (document.cookie.length>0)
  5.   {
  6.   c_start=document.cookie.indexOf(nombreCookie + "=");
  7.   if (c_start!=-1)
  8.     {
  9.     c_start=c_start + nombreCookie.length+1;
  10.     c_end=document.cookie.indexOf(";",c_start);
  11.     if (c_end==-1) c_end=document.cookie.length;
  12.     return unescape(document.cookie.substring(c_start,c_end));
  13.     }
  14.   }
  15. return "";
  16. }
  17.  
  18. function setCookie(nombreCookie,valorCookie,expiredays)
  19. {
  20. var fecha=new Date();
  21. fecha.setDate(fecha.getDate()+expiredays);
  22. document.cookie=nombreCookie+ "=" +escape(valorCookie)+
  23. ((expiredays==null) ? "" : ";expires="+fecha.toUTCString());
  24. }
  25.  
  26. function reloj(){
  27.  var f = new Date();
  28.  var a = f.getFullYear();  
  29.  var m = new Array ("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre");
  30.  var d = new Array ("Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado");
  31.  var h = f.getHours();
  32.  var mi = f.getMinutes();
  33.  var s = f.getSeconds();
  34.  if (h<10){h='0'+h}
  35.  if (h>12){h=h-12}
  36.  if (mi<10){mi='0'+mi}
  37.  if (s<10){s='0'+s}
  38.  document.getElementById("capaPersonal").innerHTML = '<span style="font-size:25px;">Hola,&nbsp;</span><span style="font-size:30px; text-transform: capitalize;">' + nUsuario + '</span><span class="fecha">Hoy es ' + d[f.getDay()] + ', ' + f.getDate() + ' de ' + m[f.getMonth()] + ' de ' + a + ' y son las ' + h + ':' + mi + ':' + s + '</span>';
  39. }
  40.  
  41. function checkCookie(){
  42.  nUsuario=getCookie('usuario');
  43.  if(nUsuario!=null || nUsuario!=""){
  44.   setCookie('usuario',nUsuario,1);
  45.   setInterval("reloj()", 1000);
  46.  }else{
  47.   document.getElementById("capaPersonal").style.display = 'none';
  48. }
Gracias y saludos (:
  #17 (permalink)  
Antiguo 08/06/2010, 17:15
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Cookies

tienes que definir el path de la cookie. en tu codigo no lo estas indicando, y cuando eso sucede la cookie solo se puede leer desde el directorio definido y subsiguientes directorios. supongo que a eso es lo que te refieres.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #18 (permalink)  
Antiguo 08/06/2010, 23:42
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Cookies

Estuve mirando aquí y lo que entendí es que tengo que cambiar esto:

Código Javascript:
Ver original
  1. function setCookie(nombreCookie,valorCookie,expiredays)
  2. {
  3. var fecha=new Date();
  4. fecha.setDate(fecha.getDate()+expiredays);
  5. document.cookie=nombreCookie+ "=" +escape(valorCookie)+
  6. ((expiredays==null) ? "" : ";expires="+fecha.toUTCString());
  7. }

por esto

Código Javascript:
Ver original
  1. function setCookie(nombreCookie,valorCookie,expiredays)
  2. {
  3. var fecha=new Date();
  4. fecha.setDate(fecha.getDate()+expiredays);
  5. document.cookie=nombreCookie+ "=" +escape(valorCookie)+
  6. ((expiredays==null) ? "" : ";expires="+fecha.toUTCString()+"; path=/");
  7. }

Graacias (:
  #19 (permalink)  
Antiguo 15/06/2010, 13:22
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Cookies

Nada, sigue sin funcionarme. Ya he conseguido que pasando de una página a otra aparezca 'Hola hoy es día tal y son las...', pero no me sale el valor de la cookie. Posteo el código a ver qué se puede hacer, la verdad que ya estoy un poco desesperado

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2. //prin.html, es la primera que sale y donde se tienen que coger las cookies
  3. function getCookie(nombreCookie){
  4.  if (document.cookie.length>0){
  5.   c_start=document.cookie.indexOf(nombreCookie + "=");
  6.   if (c_start!=-1){
  7.    c_start=c_start + nombreCookie.length+1;
  8.    c_end=document.cookie.indexOf(";",c_start);
  9.    if (c_end==-1){
  10.     c_end=document.cookie.length;
  11.    }   
  12.    return unescape(document.cookie.substring(c_start,c_end));
  13.   }
  14.  }
  15.  return "";
  16. }
  17. function setCookie(nombreCookie,valorCookie,expiredays){
  18.  var fecha=new Date();
  19.  fecha.setDate(fecha.getDate()+expiredays);
  20.  document.cookie=nombreCookie+ "=" +escape(valorCookie) + ((expiredays==null) ? "" : ";expires="+fecha.toUTCString())+"; path=/";
  21. }
  22. function reloj(){
  23.  var f = new Date();
  24.  var a = f.getFullYear();  
  25.  var m = new Array ("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre");
  26.  var d = new Array ("Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado");
  27.  var h = f.getHours();
  28.  var mi = f.getMinutes();
  29.  var s = f.getSeconds();
  30.  if (h<10){h='0'+h}
  31.  if (h>12){h=h-12}
  32.  if (mi<10){mi='0'+mi}
  33.  if (s<10){s='0'+s}
  34.  document.getElementById("capaPersonal").innerHTML = '<span style="font-size:25px;">Hola,&nbsp;</span><span style="font-size:30px; text-transform: capitalize;">' + nUsuario + '</span><span class="fecha">Hoy es ' + d[f.getDay()] + ', ' + f.getDate() + ' de ' + m[f.getMonth()] + ' de ' + a + ' y son las ' + h + ':' + mi + ':' + s + '</span>';
  35. }
  36. function checkCookie(){
  37.  nUsuario=getCookie('usuario');
  38.  if(nUsuario==null || nUsuario==""){
  39.   nUsuario=prompt('Por favor, introduce tu nombre',"");
  40.  }else{
  41.   setCookie('usuario',nUsuario,1);
  42.  }
  43.  setInterval("reloj()", 1000);
  44. }
  45. </script>

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2. //formulario.html, aquí tendría que aparecer arriba lo mismo que en prin.html
  3. function getCookie(nombreCookie){
  4.  if (document.cookie.length>0){
  5.   c_start=document.cookie.indexOf(nombreCookie + "=");
  6.   if (c_start!=-1){
  7.    c_start=c_start + nombreCookie.length+1;
  8.    c_end=document.cookie.indexOf(";",c_start);
  9.    if (c_end==-1){
  10.     c_end=document.cookie.length;
  11.    }   
  12.    return unescape(document.cookie.substring(c_start,c_end));
  13.   }
  14.  }
  15.  return "";
  16. }
  17. function setCookie(nombreCookie,valorCookie,expiredays)
  18. {
  19. var fecha=new Date();
  20. fecha.setDate(fecha.getDate()+expiredays);
  21. document.cookie=nombreCookie+ "=" +escape(valorCookie)+
  22. ((expiredays==null) ? "" : ";expires="+fecha.toUTCString())+"; path=/";
  23. }
  24.  
  25. function checkCookie(){
  26.  if(document.cookie.length>0){
  27.   nUsuario=getCookie('usuario');
  28.   if(nUsuario!=null || nUsuario!=""){
  29.    setCookie('usuario',nUsuario,1);
  30.    setInterval("reloj()", 1000);
  31.   }else{
  32.    document.getElementById("capaPersonal").style.display = 'none';
  33.   }
  34.  }  
  35. }
  36.  
  37. function reloj(){
  38.  var f = new Date();
  39.  var a = f.getFullYear();  
  40.  var m = new Array ("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre");
  41.  var d = new Array ("Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado");
  42.  var h = f.getHours();
  43.  var mi = f.getMinutes();
  44.  var s = f.getSeconds();
  45.  if (h<10){h='0'+h}
  46.  if (h>12){h=h-12}
  47.  if (mi<10){mi='0'+mi}
  48.  if (s<10){s='0'+s}
  49.  document.getElementById("capaPersonal").innerHTML = '<span style="font-size:25px;">Hola,&nbsp;</span><span style="font-size:30px; text-transform: capitalize;">' + nUsuario + '</span><span class="fecha">Hoy es ' + d[f.getDay()] + ', ' + f.getDate() + ' de ' + m[f.getMonth()] + ' de ' + a + ' y son las ' + h + ':' + mi + ':' + s + '</span>';
  50. }
  51. </script>

Código HTML:
Ver original
  1. <!---prin.html--->
  2. Si quieres una experiencia más personal de la página, haz click <a href='#' onclick='checkCookie();' class='enlace'>aquí</a>
  3. <!---formulario-html--->
  4. <body onload='checkCookie();'>

Tengo más páginas pero con saber cómo hay que hacerlo con estas dos me servirá para las demás.
Saludos y gracias (:
  #20 (permalink)  
Antiguo 19/06/2010, 17:54
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Cookies

Acabo de comprobar con un addons de Mozilla que la cookie no se crea... ¿puede tener que ver con que esta página la esté probando desde mi ordenador? Es lo único que se me ocurre porque el código lo copié de una página de la W3 y la consola de errores no me dice nada. Esto ya sobrepasa mis escasos conocimientos, por favor necesito ayuda de alguien.
Muchas gracias (:
  #21 (permalink)  
Antiguo 20/06/2010, 13:25
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Cookies

Por fin entendí cómo funcionaba el código y me di cuenta de que estaba mal planteado desde el principio. Lo modifiqué y ahora ya me crea la cookie y todo bien, el único problema es que tiene su valor y todo pero sin embargo siempre me muestra 2010, ¿por qué puede ser?
Código Javascript:
Ver original
  1. <script type='text/javascript'>
  2. function reloj(a){
  3.  var f = new Date();
  4.  var a = f.getFullYear();  
  5.  var m = new Array ("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre");
  6.  var d = new Array ("Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado");
  7.  var h = f.getHours();
  8.  var mi = f.getMinutes();
  9.  var s = f.getSeconds();
  10.  if (h<10){h='0'+h}
  11.  if (h>12){h=h-12}
  12.  if (mi<10){mi='0'+mi}
  13.  if (s<10){s='0'+s}
  14.  document.getElementById("capaPersonal").innerHTML = '<span style="font-size:25px;">Hola,&nbsp;</span><span style="font-size:30px; text-transform: capitalize;">' + a + '</span><span class="fecha">Hoy es ' + d[f.getDay()] + ', ' + f.getDate() + ' de ' + m[f.getMonth()] + ' de ' + a + ' y son las ' + h + ':' + mi + ':' + s + '</span>';
  15. }
  16. function checkCookie(){
  17.  nUsuario=getCookie('usuario');
  18.  if(nUsuario==null || nUsuario==""){
  19.   nUsuario=prompt('Por favor, introduce tu nombre',"");
  20.   setCookie('usuario',nUsuario,1);
  21.  }else{
  22.   return nUsuario;
  23.  }
  24.  setInterval("reloj(nUsuario)", 1000);
  25. }
  26. </script>
  27. //las otras dos funciones están igual que antes

Saludos (:
  #22 (permalink)  
Antiguo 20/06/2010, 14:16
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Cookies

te muestra el año en lugar del nombre porque estas sobreescribiendo el parametro.
Código:
function reloj(a){
...
 var a = f.getFullYear();
...
}
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #23 (permalink)  
Antiguo 20/06/2010, 14:36
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Cookies

Vale muchas gracias, ya lo cambié y funciona, la verdad es que lo hice en un momento de inspiración y no me di cuenta de que estaba esa variable definida.
Ahora lo único que queda para rematarlo del todo es que si ya creo la cookie en prin.html, en formulario y visor.html se ve, pero si vuelvo a prin.html vuelve a aparecer 'Si quieres una experiencia...', ¿cómo lo puedo solucionar?
Mcuhas gracias :D
  #24 (permalink)  
Antiguo 20/06/2010, 15:07
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Respuesta: Cookies

Hola

No he leído mucho, a decir casi nada, pero ahí va. Pasando por parámetro el nombre de la cookie, nos retorna TRUE si ya existe la cookie, y FALSE si no existe

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #25 (permalink)  
Antiguo 20/06/2010, 15:52
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Cookies

Ya, pero la función está en el enlace, y eso está bien para la primera vez, pero si vuelven a prin lo necesitaría en el onload, pero si lo pongo en el onload me saldrá también al principio y no tendría sentido poner el enlace...
Saludos (:

Etiquetas: cookies
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 19:34.