Foros del Web » Programando para Internet » PHP »

Cookies

Estas en el tema de Cookies en el foro de PHP en Foros del Web. Buenas Soy novato en php e intento manejar cookies para logear a un usuario He mirado decenas de webs con ejemplos, pero no consigo hacer ...
  #1 (permalink)  
Antiguo 30/04/2013, 10:49
 
Fecha de Ingreso: julio-2002
Mensajes: 61
Antigüedad: 22 años, 4 meses
Puntos: 1
Cookies

Buenas

Soy novato en php e intento manejar cookies para logear a un usuario

He mirado decenas de webs con ejemplos, pero no consigo hacer funcionar ninguna, y ya fruto de la desesperacion escribo aqui...

al validar usuario y contraseña, hago esto:

Código PHP:
Ver original
  1. if (!isset($_COOKIE["Autentificado"])) {
  2.         setcookie("Autentificado", "SI", time()+ 3600);    
  3.     }

luego quiero preguntar si existe la cookie con el valor "SI" para cambiar las opciones del menu con:

Código PHP:
Ver original
  1. <?php if ($_COOKIE["Autentificado"] != "SI") { ?>

y al desconectarse:

Código PHP:
Ver original
  1. if (isset($_COOKIE["Autentificado"])) {
  2.     setcookie("Autentificado", "", time()-1);
  3. }

a ver si me ayuda, donde está el error, puesto que al preguntar por la cookie siempre me devuelve falso, aunque escriba correctamente usuario y contraseña

por cierto, el nombre Autentificado debe ir con comillas simples o dobles? porque en los ejemplos que he encontrado, lo he visto de las dos maneras, incluso en el mismo ejemplo puestos de las 2 maneras, no se si tendrá algo que ver

un saludo
  #2 (permalink)  
Antiguo 30/04/2013, 10:52
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años, 7 meses
Puntos: 47
Respuesta: Cookies

Personalmente prefiero las sesiones.
  #3 (permalink)  
Antiguo 30/04/2013, 10:53
pr0
 
Fecha de Ingreso: marzo-2004
Mensajes: 687
Antigüedad: 20 años, 7 meses
Puntos: 28
Respuesta: Cookies

¿Para que te complicas la vida usando cookies simplemente para saber si un usuario está autentificado?

Para estos casos utiliza Sesiones.

Código PHP:
Ver original
  1. $_SESSION['autentificado'] = "si";

Mucho mas sencillo, menos invasivo para el navegador por lo tanto menos problemas.
  #4 (permalink)  
Antiguo 30/04/2013, 10:55
 
Fecha de Ingreso: abril-2013
Mensajes: 34
Antigüedad: 11 años, 7 meses
Puntos: 3
Respuesta: Cookies

Código PHP:
Ver original
  1. <?php if ($_COOKIE["Autentificado"] != "SI") { ?>

ahi estas consultando si la cookie es distinta de SI, no se si eso es lo que quieres o si quieres consultar

Código PHP:
Ver original
  1. <?php if ($_COOKIE["Autentificado"] == "SI") { ?>

de todas formas es mejor poner el nombre con comillas simples.
  #5 (permalink)  
Antiguo 30/04/2013, 11:00
 
Fecha de Ingreso: julio-2002
Mensajes: 61
Antigüedad: 22 años, 4 meses
Puntos: 1
Respuesta: Cookies

bueno, lo de si es SI o no es SI, da igual, la cuestion es que no me reconoce nunca que es SI

porque es mejor comillas simples que dobles?

hay algun error en mi codigo por el que no pueda acceder al valor de la cookie?
  #6 (permalink)  
Antiguo 30/04/2013, 11:02
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años, 7 meses
Puntos: 47
Respuesta: Cookies

Cita:
Iniciado por nikolai Ver Mensaje
bueno, lo de si es SI o no es SI, da igual, la cuestion es que no me reconoce nunca que es SI

porque es mejor comillas simples que dobles?

hay algun error en mi codigo por el que no pueda acceder al valor de la cookie?
Si aceptas te recomiendo mejor el uso de sesiones ok...
  #7 (permalink)  
Antiguo 30/04/2013, 11:23
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 7 meses
Puntos: 406
Respuesta: Cookies

Cita:
Iniciado por pr0 Ver Mensaje
¿Para que te complicas la vida usando cookies simplemente para saber si un usuario está autentificado?

Para estos casos utiliza Sesiones.

Código PHP:
Ver original
  1. $_SESSION['autentificado'] = "si";

Mucho mas sencillo, menos invasivo para el navegador por lo tanto menos problemas.
o.O al usar sesiones se crea una cookie con el SID de la sesión activa en el navegador....

Ahora, para la pregunta en concreto así no se verifica si existe o no una cookie, primero deberías comprobar que exista realmente con isset() y luego verificar su valor...

Código PHP:
Ver original
  1. <?php
  2. if (isset($_COOKIE['Autentificado'])) {
  3.      if ($_COOKIE['Autentificado'] == 'Si') {
  4.           echo 'Sesión iniciada!';
  5.      }else {
  6.           echo 'Inicie sesión';
  7.      }
  8. }else {
  9.      echo 'Inicie sesión';
  10. }

Aunque para restringir un archivo es mejor verificar que NO EXISTA la cookie o sesión en vez de que si exista, así no te preocupas, si no se ha iniciado sesión redireccionas al usuario al formulario para iniciar sesión ejemplo:
Código PHP:
Ver original
  1. <?php
  2. if (!isset($_COOKIE['Autentificado'])) {
  3.      header('Location: login.php');
  4.      exit();
  5. }
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #8 (permalink)  
Antiguo 30/04/2013, 11:25
 
Fecha de Ingreso: julio-2002
Mensajes: 61
Antigüedad: 22 años, 4 meses
Puntos: 1
Respuesta: Cookies

entonces el error está al crear la cookie?
  #9 (permalink)  
Antiguo 30/04/2013, 11:28
 
Fecha de Ingreso: julio-2002
Mensajes: 61
Antigüedad: 22 años, 4 meses
Puntos: 1
Respuesta: Cookies

otra cosa
con cookies puedes poner un tiempo para que expire, al de 1 hora, un dia..lo que sea

si el logeo lo hiciese con variables de sesion, se puede hacer algo parecido? es decir, que caduque la sesion por si sola, al margen de que el usuario haga un clic en "terminar sesion" ?
  #10 (permalink)  
Antiguo 30/04/2013, 11:28
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 7 meses
Puntos: 406
Respuesta: Cookies

Se me olvidaba, es importante que antes de crear la cookie NO ENVIES ningún tipo de salida hacia el navegador, si no, no funcionará, tiene que ser antes de cualquier código HTML, echo/print, etc, cualquier cosa que se imprima...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #11 (permalink)  
Antiguo 30/04/2013, 11:32
 
Fecha de Ingreso: julio-2002
Mensajes: 61
Antigüedad: 22 años, 4 meses
Puntos: 1
Respuesta: Cookies

Cita:
Iniciado por Nemutagk Ver Mensaje
Se me olvidaba, es importante que antes de crear la cookie NO ENVIES ningún tipo de salida hacia el navegador, si no, no funcionará, tiene que ser antes de cualquier código HTML, echo/print, etc, cualquier cosa que se imprima...
la cookie esta en un archivo que tiene solo codigo php

cuando el usuario da al boton "conectarse", es redirigido a esa pagina, y si todo va bien, esta pagina le redirige a otra que ya si tiene html
  #12 (permalink)  
Antiguo 30/04/2013, 11:34
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años, 7 meses
Puntos: 47
Respuesta: Cookies

Cita:
Iniciado por nikolai Ver Mensaje
otra cosa
con cookies puedes poner un tiempo para que expire, al de 1 hora, un dia..lo que sea

si el logeo lo hiciese con variables de sesion, se puede hacer algo parecido? es decir, que caduque la sesion por si sola, al margen de que el usuario haga un clic en "terminar sesion" ?
Si se puede hacer, si a la variable de sesion le agregas un valor adicional con la hora en la que fue seteada por ultima vez y luego evaluas el tiempo que ha transcurrido
  #13 (permalink)  
Antiguo 30/04/2013, 12:12
 
Fecha de Ingreso: julio-2002
Mensajes: 61
Antigüedad: 22 años, 4 meses
Puntos: 1
Respuesta: Cookies

Cita:
Iniciado por alex1084 Ver Mensaje
Si se puede hacer, si a la variable de sesion le agregas un valor adicional con la hora en la que fue seteada por ultima vez y luego evaluas el tiempo que ha transcurrido
pero si no hago esto la variable es "eterna"?
si fuese asi el servidor se llenaria de variables de sesion no?
el servidor por si solo no limpia su memoria de estas variables?
  #14 (permalink)  
Antiguo 30/04/2013, 17:14
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 7 meses
Puntos: 406
Respuesta: Cookies

Las variables de sesión no son "eternas", depende de la configuración del servidor pero por general la sesión se destruye cuando se cierra el navegador, puedes modificar el tiempo de vida de la cookie con la que se propaga el id de la sesión (si es que se propaga por cookie) o también puedes modificr la configuración del servidor...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)

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 13:11.