Foros del Web » Programando para Internet » PHP »

Sesiones

Estas en el tema de Sesiones en el foro de PHP en Foros del Web. Haber si entiendo esto de las sesiones: Suponemos que un usuario se registra en una base de datos y luego se autentifica, es en el ...
  #1 (permalink)  
Antiguo 16/06/2003, 07:39
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 874
Antigüedad: 14 años, 6 meses
Puntos: 2
Pregunta Sesiones

Haber si entiendo esto de las sesiones:

Suponemos que un usuario se registra en una base de datos y luego se autentifica, es en el momento de haberse autentificado, cuando se inicia la sesión? para iniciar sesión, es este codigo?:

session_start();


que consigo con esto?

cada página q acceda el usuario tiene q tener esta función?

como accede esta funcion a la db de usuarios, para saber q es un usuario registrado?

y el sistema de variables, como funciona, por ejemplo para un usuario no registrado, no vea o no acceda a una página?

Es q no lo veo muy claro en el FAQ's de PHP
  #2 (permalink)  
Antiguo 16/06/2003, 10:48
Avatar de ProgramacionWeb  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona
Mensajes: 176
Antigüedad: 14 años, 6 meses
Puntos: 2
Una sesion es como un DNI que identifica un usuario para diferenciarlo de los demás.

Cuando iniciamos la sesion session_start(); solo estamos identificando ese usuario para luego trabajar con el, pero no lo conectamos al sistema.

Para conectarlo, tienes que hacer un formulario de usuario y contraseña que consulte a la base de datos, si los datos son correctos, inicias la sesion con ese usuario...

<?
session_start();
?>

... y entonces para guardar el nombre del usuario puedes hacer:

<?
session_register('s_usuario');
$s_usuario = $usuario; //Usuario es el nombre q ha puesto en el formulario
?>

Y el las paginas el nombre de usuario sera:

<?
echo 'Regístrado cómo: '.$s_usuario;
?>
__________________
Foros en los que participo:
  #3 (permalink)  
Antiguo 16/06/2003, 11:48
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 874
Antigüedad: 14 años, 6 meses
Puntos: 2
Vale e autentificado al usuario haciendole introducir su nombre y contraseña y automaticamente le e metido

session_start();
session_register('s_usuario');
$s_usuario = $usuario;

y me da toda esta serie de fallos:

Warning: Cannot send session cookie - headers already sent by (output started at C:\apache 2\Apache2\htdocs\autentificacion.php:6) in C:\apache 2\Apache2\htdocs\autentificacion.php on line 76

Warning: Cannot send session cache limiter - headers already sent (output started at C:\apache 2\Apache2\htdocs\autentificacion.php:6) in C:\apache 2\Apache2\htdocs\autentificacion.php on line 76

Warning: open(/tmp\sess_d5846c8e79f8bdd57b6f71b30285ba21, O_RDWR) failed: m (2) in C:\apache 2\Apache2\htdocs\autentificacion.php on line 76

Warning: open(/tmp\sess_d5846c8e79f8bdd57b6f71b30285ba21, O_RDWR) failed: m (2) in Unknown on line 0

Warning: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/tmp) in Unknown on line 0

__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332

Última edición por bichomen; 16/06/2003 a las 11:50
  #4 (permalink)  
Antiguo 16/06/2003, 12:24
Avatar de ProgramacionWeb  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona
Mensajes: 176
Antigüedad: 14 años, 6 meses
Puntos: 2
Pon al principio del todo de tu pagina antes de mandar nada ni siquiera un espacio antes de <? lo siguiente:

<?
ob_start();
?>
__________________
Foros en los que participo:
  #5 (permalink)  
Antiguo 16/06/2003, 14:39
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 874
Antigüedad: 14 años, 6 meses
Puntos: 2
Sigue dando fallos:


X-Powered-By: PHP/4.0.2 Set-Cookie: PHPSESSID=d4a701b15b1b57bd187844e85e388bc3; path=/ Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-cache, post-check=0, pre-check=0 Pragma: no-cache Content-type: text/html

Warning: open(/tmp\sess_d4a701b15b1b57bd187844e85e388bc3, O_RDWR) failed: m (2) in C:\apache 2\Apache2\htdocs\autentificacion.php on line 80

Warning: open(/tmp\sess_d4a701b15b1b57bd187844e85e388bc3, O_RDWR) failed: m (2) in Unknown on line 0

Warning: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/tmp) in Unknown on line 0

Perdona me fallaba una dll q habia iniciado en el php.ini la e unitilizado pero me sigue dando fallos:

Warning: open(/tmp\sess_a27ea9ad218eef64e73a5d15d50ee9a8, O_RDWR) failed: m (2) in C:\apache 2\Apache2\htdocs\autentificacion.php on line 81

Warning: open(/tmp\sess_a27ea9ad218eef64e73a5d15d50ee9a8, O_RDWR) failed: m (2) in Unknown on line 0

Warning: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/tmp) in Unknown on line 0
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332
  #6 (permalink)  
Antiguo 16/06/2003, 15:02
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Mira el valor de session.save_path en php.ini. Deberia tener el valor de un directorio valido de windows, por ejemplo c:\temp.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #7 (permalink)  
Antiguo 16/06/2003, 21:33
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
y el sistema de variables, como funciona, por ejemplo para un usuario no registrado, no vea o no acceda a una página?
Pues piensa que tienes una variable "común" para todas tus páginas .. esa variable comun la tienes en la sesión .. y a las variable de sesión se acceden por su array superglobal $_SESSION['nombre_de_tu_variable'] ... (yo no uso session_register() y asumo como globales las variables de sesión .. eso se comenta un pco en la FAQ del foro ..)

Así que con esa variable . siempre puedes hacer tu condicional típo:

Código PHP:
if (empy($_SESSION['variable_d_sesion'])){
echo 
"no estás autorizado a ver esto .. todavía no se ha creado la variable de sesión ";
exit; 
// termino el script . (un ejemplo) ..

La función empty() mira si la variable implicada está definida y con valor . si no lo está da TRUE ..

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 16/06/2003, 21:42
Avatar de camargo  
Fecha de Ingreso: abril-2002
Ubicación: Kerétaro, Méjiko
Mensajes: 1.045
Antigüedad: 15 años, 8 meses
Puntos: 2
Oie,, si es cierto CLUSTER no habia pensado en utilizar esa funcion para llamar a la sesion,, q buena idea jeje y eso q yo toda la vida utilizo empty,, y dejo atras los "", y los isset!

Q va..
creo q me has ayudado tambien

Un Saludo;
__________________
http://www.chorcha.com
  #9 (permalink)  
Antiguo 17/06/2003, 18:40
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 874
Antigüedad: 14 años, 6 meses
Puntos: 2
Josemi tenias razon, tenia el tmp apuntando a /tmp

pero esto es un guindos osea q e tendio q crear un c:/tmp

Osea Cluster, tu dices q cambie esto:

<?
session_register('s_usuario');
$s_usuario = $usuario; //Usuario es el nombre q ha puesto en el formulario
?>
por esto:

<?
$_SESSION['s_usuario']
$s_usuario = $usuario; //Usuario es el nombre q ha puesto en el formulario
?>

esto lo pondria en la página donde el usuario se autentifica y en el resto de páginas, a las q el acceso es restringido pondria:

if (empy($_SESSION['variable_d_sesion'])){
echo "no estás autorizado a ver esto .. todavía no se ha creado la variable de sesión ";
exit; // termino el script . (un ejemplo) ..
}

esa es la idea?

q valor guarda la variable de sesion?
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332

Última edición por bichomen; 17/06/2003 a las 18:45
  #10 (permalink)  
Antiguo 17/06/2003, 19:12
Avatar de sdf23  
Fecha de Ingreso: diciembre-2002
Mensajes: 297
Antigüedad: 15 años
Puntos: 0
si pero no es empy es empty
Cita:
Código PHP:
if (empy($_SESSION['variable_d_sesion'])){
echo 
"no estás autorizado a ver esto .. todavía no se ha creado la variable de sesión ";
exit; 
// termino el script . (un ejemplo) ..

__________________

la vida es bella cuando no es culera
  #11 (permalink)  
Antiguo 17/06/2003, 19:23
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 874
Antigüedad: 14 años, 6 meses
Puntos: 2
haber me autentifico:

<?
$_SESSION['s_usuario']
$s_usuario = $usuario; //Usuario es el nombre q ha puesto en el formulario
?>

y sin darme ningun fallo me dice q estoy autentificado
aqui tengo dos links a dos páginas en una e metido:

if (empty($_SESSION['variable_d_sesion'])){
echo "no estás autorizado a ver esto .. todavía no se ha creado la variable de sesión ";
exit; // termino el script . (un ejemplo) ..
}

pero aun viendo autentificado de antemano cuando accedo a esta página me debuelve:

no estás autorizado a ver esto .. todavía no se ha creado la variable de sesión

otra cosa, este codigo en la nueva página va al principrio de todo?
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332
  #12 (permalink)  
Antiguo 17/06/2003, 20:55
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
$_SESSION es un array como cualquier otra (sólo que contiene las variables de sesión y es "superglobal" ..)

Código PHP:
<?
session_start
(); // Si no inicias el uso de sesiones no funciona nada ..
$_SESSION['s_usuario']= $usuario//Usuario es el nombre q ha puesto en el formulario. Ok, aquí se le asigna .. Recuerda que es un array "asociativo" .. 
?>
y siguiendo tu ejemplo:

Código PHP:
<? 
session_start
(); // otra vez si, hay que usar la dichosa función ..
if (empty($_SESSION['s_usuario'])){
echo 
"no estás autorizado a ver esto .. todavía no se ha creado la variable de sesión ";
exit; 
// termino el script . (un ejemplo) ..
}
Y .. bueno hay que ver como estás propagando el SID. Si no sabes ni que es .. es de suponer que asumes que PHP lo hará por si sólo, así que deberas tener tus directivas de PHP.ini:

session.use_trans_sid = 1
session.use_cookie = 1
y
url_rewrite_nomeacuerdo ="a href .. y unos cuantos tag html más"

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #13 (permalink)  
Antiguo 17/06/2003, 21:17
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 874
Antigüedad: 14 años, 6 meses
Puntos: 2
me devuelve este error:

Warning: Cannot send session cache limiter - headers already sent (output started at C:\apache 2\Apache2\htdocs\tabla.php:6) in C:\apache 2\Apache2\htdocs\tabla.php on line 21

la linea 21 se refiere a:

session_start();


en php.ini tenia esta variable:

session.use_cookie = 1


pero no esta:

session.use_trans_sid = 1

yo la e añadido manualmente

lo del:

url_rewrite_nomeacuerdo ="a href .. y unos cuantos tag html más"

lo e buscado en el php.ini y no lo encuentro y lo de los tag de html no se a q te refieres
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332

Última edición por bichomen; 17/06/2003 a las 21:19
  #14 (permalink)  
Antiguo 17/06/2003, 21:27
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Lo del url_rewrite es:

url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=,fields et="

Y la otra:

session.use_trans_sid = 1

(deberías tenerlas por defecto en tu php.ini junto con un comentario de lo que son y hacen ..)

Recuerda también que a cada cambio de tu php.ini tienes que reiniciar tu servidor ..

El error de cabeceras que te dá .. es simplemente por qué cuando usas sesion_start() NO puede existir náda de HTML delante de ella ..

Si usas más HTML por encima de tu $_SESSION['s_usuario']=$usuario .. simplemente mueve tu session_start() al principio de tu script .. Fijate en el error te dice que en la línea 6 ya tienes algo de HTML por ahí rondando .. y el session_start() lo tienes en la línea 21 ...

Más info .. :
http://www.php.net/manual/es/ref.session.php

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #15 (permalink)  
Antiguo 17/06/2003, 21:38
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 874
Antigüedad: 14 años, 6 meses
Puntos: 2
lo del:

url_rewriter.tags = " a=href,area=href,frame=src,input=src,form=,fieldse
t="

no aparece por ninguna parte del php.ini y como no sabia donde ponerlo lo e puesto donde van las variables de sesion, e guardado y reiniciado el server tb e puesto el:

sesion_start()

al inicio de todo y ya no da fallo, lo unnico q me sigue saliendo:

no estás autorizado a ver esto .. todavía no se ha creado la variable de sesión

osea q o no pasa la variable o no e editado bien php.ini
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332
  #16 (permalink)  
Antiguo 17/06/2003, 21:46
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Bueno . .y a todo esto .. que versión de PHP usas? .. Los array superglobales sólo están disponibles desde PHP 4.1.0 en adelante ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #17 (permalink)  
Antiguo 18/06/2003, 05:07
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 874
Antigüedad: 14 años, 6 meses
Puntos: 2
php Versión 4.0.2

una versión ma vieja
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332
  #18 (permalink)  
Antiguo 18/06/2003, 12:10
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues entonces:

1) Actualizate PHP .. que ya vamos por la versión 4.3.2 y en PHP una versión nueva incorpora muchooos cambios y muchas soluciones de "bug". Ha llovido muchos desde esaa versión.

2) usa session_register() y asume como globlaes las variables de sesión (por qué si mal no recuerdo . .par esa versión ni $HTTP_SESSION_VARS vas a poder usar . .pero pruebalo.

RECOMENDABLE la opción 1 ...

Si usas windows y quires actualizarte .. puedes seguir esta guía de instalación:
http://www.maestrosdelweb.com/editor...php?phpmysqlap

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #19 (permalink)  
Antiguo 18/06/2003, 14:24
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 874
Antigüedad: 14 años, 6 meses
Puntos: 2
Haber actualize el php y ahora tengo la versión 4.3.2 y me muestra correctamente el info.php y todas las páginas y parece ser q tb funciona lo de mostrar ciertas paginas si estas autentificado, y si no, no te las muestra

Eso q comenta de la linia de register_globals, la e tenido q poner en ON pq en OFF, no funcionaba nada
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332
  #20 (permalink)  
Antiguo 18/06/2003, 18:18
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Bueno .. register_globals a OFF se trabaja con los arrays superglobales .. ($_GET, $_POST .. $_SESSION .. etc ..)

Te recomiendo que leas las FAQ's de este foro una vez más y te recuerdo que vuelvas a revisar la configuración de las variables de sesión .. PHP 4.3.2 por defecto suele salir con session.use_trasn_sid = 0 .. y si no propagas tu a mano el SID en tus links/formularios (cosa que no haces) debes de poner esa directiva a 1 (y la otra de cookies .. ademas de tener un navegador que acepte cookies ..)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 00:50.