Foros del Web » Programando para Internet » PHP »

Sesiones = cookies?

Estas en el tema de Sesiones = cookies? en el foro de PHP en Foros del Web. Estoy intentado implementar el registro de usuarios en mi site pero tengo unas cuantas dudas. Para empezar cuando el nombre de usuario y el password ...
  #1 (permalink)  
Antiguo 04/05/2004, 15:30
 
Fecha de Ingreso: julio-2003
Ubicación: España
Mensajes: 723
Antigüedad: 20 años, 9 meses
Puntos: 0
Sesiones = cookies?

Estoy intentado implementar el registro de usuarios en mi site pero tengo unas cuantas dudas.

Para empezar cuando el nombre de usuario y el password coinciden con los de la base de datos le meto una cookie, pero hay un problema, y es que cuando el usuario pulsa el boton de login con su nombre y contraseña es ahí justo cuando creo la cookie y no da tiempo a leerla, es decir que no aparece el Bienvenido Pepe!, sino que es necesario volver a actualizar la página para que mire si existe la cookie y muestre el susodicho mensaje...

Es por eso que quería saber si en vez de meter una cookie no sería mejor abrir una sesión... pero ahí empiezan las dudas: quiero que la sesión dure mucho tiempo para que así cuando el usuario vuelva ya se encuentre identificado, ¿se puede establecer el tiempo que dura la sesión o esta se destruye cuando sale de la pagina?

¿La sesión ya crea automáticamente una cookie para cada usuario o aparte de crear la sesión también le tengo que meter una cookie?

Alguien que me diga dónde encontrar un buen tutorial?

Saludos.
__________________
Solo nosotros podemos decidir qué hacer con el tiempo que se nos ha dado. (Gandalf)
  #2 (permalink)  
Antiguo 04/05/2004, 15:33
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 20 años, 9 meses
Puntos: 2
http://www.php-hispano.net/archivos/Manuales/51

Suerte
__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol
  #3 (permalink)  
Antiguo 04/05/2004, 15:37
 
Fecha de Ingreso: julio-2003
Ubicación: España
Mensajes: 723
Antigüedad: 20 años, 9 meses
Puntos: 0
Gracias por responder tan rápidamente pero el enlace que dejaste no va.

Saludos.
__________________
Solo nosotros podemos decidir qué hacer con el tiempo que se nos ha dado. (Gandalf)
  #4 (permalink)  
Antiguo 04/05/2004, 15:45
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Tanto las cookies como las sesiones quedan disponibles en la próxima petición al servidor tras definirlas ...

Para resolver tu problema .. lo que se suele hacer es:

formulatio_login.php -> validar.php (donde creas tu cookie o sesion) -> redireccionar hacia otra página de bienvenida . .tu index (ya autentificado) o lo que quieras donde ya puedes leer esa cookie o sesiones para mostrar ese valor.

validar.php
Código PHP:
<?
validas y 
... defines tu cookie setcookie(....) (o sesionsi se autentifica correctamente:
header ("Location: bienvenida.php");
exit
?>
Y en bienvenida.php (o cualquier otra página) ya puedes hacer:

Código PHP:
if (isset($_COOKIE['variable_cookie'])){
echo 
"Bienvenido ".$_COOKIE['variable_cookie'];


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 04/05/2004, 16:00
 
Fecha de Ingreso: julio-2003
Ubicación: España
Mensajes: 723
Antigüedad: 20 años, 9 meses
Puntos: 0
Eso era exactamente lo que estaba haciendo pero me faltaba redireccionar: header ("Location: bienvenida.php");

Yo lo que hacía era incluir, con el consiguiente error:

include("index.php");

Saludos y gracias.
__________________
Solo nosotros podemos decidir qué hacer con el tiempo que se nos ha dado. (Gandalf)
  #6 (permalink)  
Antiguo 04/05/2004, 18:40
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años
Puntos: 35
loading..........



Eso de incluir el header('location: index.php');
no se lo puede hacer en culquier parte verdad? pero en el foro dijeron que en la primera linea de todas las paginas hay que poner
obstart; creo y algo en la final de todas las paginas.
para poner header donde sea.

Eso afecta en algo el comportamiento de la pagina?



connection closed.
__________________

Maborak Technologies
  #7 (permalink)  
Antiguo 05/05/2004, 06:17
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
MaBoRaK

lo de ob_start() son funciones de control del buffer de PHP (salida) .. eso es un "parche" para solventar el problema de "mala" estructura de scripts.php que necesiten usar header() (o setcookie() .. o session_start()) en lugares que "estructuralmente" no estaba preparado para tal fin.

Si piensas que PHP se ejecuta "primero" y en el servidor y que este sólo hace que "generar" o redirecionar (como es el caso del header("Location ...")) la página que verá el cliente (navegador en estos casos) .. No tendrías que tener ningún problema con la llamada a header() si estructuras tu código en consecuencia.

Pero .. como muchas veces cuesta "tomar" ese concepto de PHP y se hacen "paginas HTML con PHP incrustrado" .. si usas el "header()" donde quieras .. tendras los problemas típicos.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 05/05/2004, 10:35
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años
Puntos: 35
loading.......



Tengo entendido que la funcion header no se debe colocar despues de cualquier salida al cliente.
Osea se debe colocar antes de alguna salida al cliente.
Que reglas mas sigue al header? osea DONDE NO SE DEBE PONER? o cuales son los tipicos errores que se cometen con esta funcion, porque yo considero salida al CLIENTE todo lo que el usuario pueda ver, osea si pongo.

Código PHP:
if (isset($_COOKIE['variable_cookie'])){
echo 
"Bienvenido ".$_COOKIE['variable_cookie'];
echo 
"ahora te mandamos a una pagina mas bonita";
header('Location: indexbonito.php');

Genera error de que "al ready header information has ben send to no se que"

Saquenme de esas dudas porfavor, gracias por todo.
y sobre todo gracias por "revajarse" al nivel de los novatos que somos para poder orientarnos...... porque asi lo veo.



connection closed.
__________________

Maborak Technologies
  #9 (permalink)  
Antiguo 05/05/2004, 12:13
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
EL problema es que hasta el momento . no ves claro como funciona PHP .. por ende no te haces la idea de como se procesa el código que pusistes de ejemplo. (y esto es normal .. a todos nos ha pasado en un momento u otro de nuestros aprendizajes).

A ver si estos mensajes te sacan de dudas ...
http://www.forosdelweb.com/showthrea...hreadid=199822
http://www.forosdelweb.com/showthrea...hreadid=197395

Cuando los leas . .veras que la idea no es mostrar tu mensaje de error/exito en ese proceso y luego redireccionar .. sino mostrarlo en la página que vas a quedar al redireccionar .. Para eso puedes usar incluso variables de control que luego filtraras en tu pagina de destino (si es que no usastes difentes páginas para diferentes mensajes) y haras cosas tipo

Código PHP:
<?
if (....){
$mensaje=1;
} else {
$mensaje=2;
}

header ("Location: nose.php?mensaje=$mensaje");
exit;
?>
La misma técnica es válida para sesiones o cookies (setcookie() o session_start() ..)

Tienes que pensar en programar en PHP .. no en programar en "HTML con incrustraciones de PHP" como suele pasar. Piensa siempre que PHP se ejecuta -primero- en el servidor y lo que tu lógica decida .. así se entregará el código del lado del cliente (lease: HTML, etc ...) para que este haga su parte y lo interprete.

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; 05/05/2004 a las 12:15
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 03:03.