Foros del Web » Programando para Internet » PHP »

Problema con variable de sesión

Estas en el tema de Problema con variable de sesión en el foro de PHP en Foros del Web. Hola, Tengo un script de control en el que verifico que un usuario puede acceder a la aplicación, si es así, abro una sesión, asigno ...
  #1 (permalink)  
Antiguo 09/07/2003, 05:13
 
Fecha de Ingreso: mayo-2003
Mensajes: 125
Antigüedad: 20 años, 11 meses
Puntos: 0
Problema con variable de sesión

Hola,

Tengo un script de control en el que verifico que un usuario puede acceder a la aplicación, si es así, abro una sesión, asigno una variable y doy paso a otra pagina:

Código PHP:
if (mysql_num_rows($queryresult) == 1)
{
    
//usuario y contraseña válidos
    //defino una sesion y guardo datos
    
session_start();
    
$_SESSION["autentificado"]= "SI";
    
header ("Location: aplicacion.php");
}else {
    
//si no existe le mando otra vez a la portada
    
header("Location: index.php?errorusuario=si");

He verificado mediante trazas que entra por aqui y que realiza la asignacion correctamente. Pues bien, luego queria preguntar por esta variable de sesión en todas las paginas para ver que el usuario está autenticado mediante un include del código y no me funcionaba. He puesto el código a pelo y sigue sin funcionar. Después de todo este lio, he jugado de nuevo con las trazas y comentando cosas con la siguiente sorpresa, al entrar en la página a la que le mando y hacer dos echos (uno de la variable de sesion y otro de un string), sólo me saca el string, esto es, no me hace ni caso, no se ni siquiera el contenido de la variable, no me lo entiende pero no me peta.

Código PHP:
<?
/*//Inicio la sesión 
session_start(); */
echo $_SESSION["autentificado"];
echo 
"Aqui estoy";

//COMPRUEBA QUE EL USUARIO ESTA AUTENTIFICADO 
/*if ($_SESSION["autentificado"] == "SI") { 
    $entro = "SI";
}else
{
    //si no existe, envio a la página de autentificacion 
    header("Location: index.php"); 
    //ademas salgo de este script 
    exit(); 
}*/
?>
Vereis que he jugado con el if, cuando seria más simple !=, pero es que le he dado muchas vueltas, y al principio pense que iban por ahi los tiros.

No se si existe algún parámetro que no tenga bien definido, he estado revisando php.ini y me parece correcto.

¿Alguna idea?

Gracias,
__________________
Lailuluelo
El error está en lo obvio
  #2 (permalink)  
Antiguo 09/07/2003, 06:02
V_G
Invitado
 
Mensajes: n/a
Puntos:
Prueba este código en las páginas en las que quieras usar autentificación:
Código PHP:
if ($_SESSION["autentificado"]== "SI"){
 echo 
"Correcto";
}else{
echo 
"Incorrecto";

  #3 (permalink)  
Antiguo 09/07/2003, 06:57
Avatar de DINASEN  
Fecha de Ingreso: marzo-2003
Mensajes: 997
Antigüedad: 21 años, 1 mes
Puntos: 1
pero no continuas la sesion pro que sta comentado

Código PHP:
/*//Inicio la sesión 
session_start(); */ 
  #4 (permalink)  
Antiguo 09/07/2003, 19:51
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Además de lo que comenta DINASEN .. debes de fijarte en la configuración de tu php.ini sobre el tema de sesiones.

Tal como escribes el código (inicial) .. estás asumiendo que el SID lo propagas en modo automático y por una cookie (pues sinó no se reescribiría el SID sobre tu "redireccionamiento" que usas con el location("location: blabla.php") ..). Al "hablar" de cookies .. se sobre entiende que esto implica a su vez de que requieres de un navegador que acepte cookies para que el SID se propage correctamente y puedas leer tu variable de sesión tipo:

Código PHP:
<?
session_start
();
if (
$_SESSION["autentificado"]== "SI"){
//Está autentificado
} else {
//NO está autentificado
}
?>
También te recomiendo que uses exit(); despues de cada header("location: ....") que hagas para que la ejecución de tu script termine ahí mismo.

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 10/07/2003, 01:09
 
Fecha de Ingreso: mayo-2003
Mensajes: 125
Antigüedad: 20 años, 11 meses
Puntos: 0
Continuo con el problema

Hola,

En primer lugar, muchas gracias a todos por vuestra ayuda

He hecho los cambios en los scripts y verificado los parámetros de configuración de sesión en el php.ini y el tema de las cookies y francamente, no se lo que pasa.

1.- Script de control

Código PHP:
if (mysql_num_rows($queryresult) == 1)
{
    
//usuario y contraseña válidos
    //defino una sesion y guardo datos
    
session_start();
    
$_SESSION["autentificado"]= "SI";
    
header ("Location: aplicacion.php");
    exit();
}else {
    
//si no existe le mando otra vez a la portada
    
header("Location: index.php?errorusuario=si");
    exit();

2.- Preguntando por variable de sesión

Código PHP:
<?
//Inicio la sesión 
session_start();
echo 
$_SESSION["autentificado"];
echo 
"Aqui estoy";

//COMPRUEBA QUE EL USUARIO ESTA AUTENTIFICADO 
if ($_SESSION["autentificado"] == "SI") { 
    
$entro "SI";
}else
{
    
//si no existe, envio a la página de autentificacion 
    
header("Location: index.php"); 
    
//ademas salgo de este script 
    
exit(); 
}

?>
3.- La parte correspondiente a sesión de mi php.ini. Como estoy en windows he jugado con el path.

Código PHP:
[Session]
Handler used to store/retrieve data.
session.save_handler files

Argument passed to save_handler.  In the case of filesthis is the path
where data files are storedNoteWindows users have to change this 
variable in order to use PHP's session functions.
session.save_path = \tmp

; Whether to use cookies.
session.use_cookies = 1

; This option enables administrators to make their users invulnerable to 
; attacks which involve passing session ids in URLs; defaults to 0.
; session.use_only_cookies = 1

; Name of the session (used as cookie name).
session.name = PHPSESSID

; Initialize session on request startup.
session.auto_start = 1

; Lifetime in seconds of cookie or, if 0, until browser is restarted.
session.cookie_lifetime = 0

; The path for which the cookie is valid.
session.cookie_path = /

; The domain for which the cookie is valid.
session.cookie_domain =

; Handler used to serialize data.  php is the standard serializer of PHP.
session.serialize_handler = php

; Define the probability that the '
garbage collection' process is started
; on every session initialization.
; The probability is calculated by using gc_probability/gc_dividend,
; e.g. 1/100 means 1%.

session.gc_probability = 1
session.gc_dividend    = 1000

; After this number of seconds, stored data will be seen as '
garbage' and
; cleaned up by the garbage collection process.
session.gc_maxlifetime = 1440

; PHP 4.2 and less have an undocumented feature/bug that allows you to
; to initialize a session variable in the global scope, albeit register_globals
; is disabled.  PHP 4.3 and later will warn you, if this feature is used.
; You can disable the feature and the warning seperately. At this time,
; the warning is only displayed, if bug_compat_42 is enabled.

session.bug_compat_42 = 0
session.bug_compat_warn = 1

; Check HTTP Referer to invalidate externally stored URLs containing ids.
; HTTP_REFERER has to contain this substring for the session to be
; considered as valid.
session.referer_check =

; How many bytes to read from the file.
session.entropy_length = 0

; Specified here to create the session id.
session.entropy_file =

;session.entropy_length = 16

;session.entropy_file = /dev/urandom

; Set to {nocache,private,public,} to determine HTTP caching aspects.
; or leave this empty to avoid sending anti-caching headers.
session.cache_limiter = nocache

; Document expires after n minutes.
session.cache_expire = 180

; trans sid support is disabled by default.
; Use of trans sid may risk your users security.
; Use this option with caution.
; - User may send URL contains active session ID
;   to other person via. email/irc/etc.
; - URL that contains active session ID may be stored
;   in publically accessible computer. 
; - User may access your site with the same session ID
;   always using URL stored in browser'
s history or bookmarks.
session.use_trans_sid 0

The URL rewriter will look for URLs in a defined set of HTML tags.
form/fieldset are special; if you include them herethe rewriter will
add a hidden <inputfield with the info which is otherwise appended
to URLs.  If you want XHTML conformityremove the form entry.
Note that all valid entries require "="even if no value follows.
url_rewriter.tags "a=href,area=href,frame=src,input=src,form=fakeentry" 
4.- Cookies ( en Internet Explorer 6.0.2600.0000 sobre XP )

Código PHP:
Sobreescribir la administración automática de cookies (SI)
Cookies de origen (Aceptar)
Cookies de terceros (Aceptar)
Aceptar siempre las cookies de sesión (SI

Espero encontrar el problema, ya no se que probar,

Gracias
__________________
Lailuluelo
El error está en lo obvio
  #6 (permalink)  
Antiguo 10/07/2003, 03:37
 
Fecha de Ingreso: mayo-2003
Mensajes: 125
Antigüedad: 20 años, 11 meses
Puntos: 0
Siguiendo consejos de la página de Josemi y habilitando display_errors = ON, me muestra:

Warning: Unknown(): open(\\sess_9a69bfef5272574e37c430e5a55de3c4, O_RDWR) failed: Invalid argument (22) in Unknown on line 0

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

He modificado los valores del php.ini y no muestra ya los warnings, aun asi, no funciona.

¡¡¡ Ayuda, por favor !!!



Gracias
__________________
Lailuluelo
El error está en lo obvio

Última edición por lailuluelo; 10/07/2003 a las 04:00
  #7 (permalink)  
Antiguo 11/07/2003, 03:50
Avatar de DINASEN  
Fecha de Ingreso: marzo-2003
Mensajes: 997
Antigüedad: 21 años, 1 mes
Puntos: 1
loq ue dice es que no puedo abrir la sesion..
y que verifiques la ruta de deond e guardan las sesiones

segun tu php.ini etan en
session.save_path = \tmp

una carpeta que se llama tmp pero existe?¿

si no ponle la ruta absoluta es decir

C:\loquesea\tmp

y reinicia tu servidor apache

Un Saludo
  #8 (permalink)  
Antiguo 15/07/2003, 03:25
 
Fecha de Ingreso: mayo-2003
Mensajes: 125
Antigüedad: 20 años, 11 meses
Puntos: 0
Aun asi no funciona

Hola,

Ya he hecho el cambio y no funciona.

Gracias
__________________
Lailuluelo
El error está en lo obvio
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 06:17.