Foros del Web » Programando para Internet » PHP »

NO puedo controlar la SESION

Estas en el tema de NO puedo controlar la SESION en el foro de PHP en Foros del Web. Hola, No quiero parecer pesado pero no he conseguido llegar a solucionar el problema de las sesiones. Mi problema se puede resumir de la siguiente ...
  #1 (permalink)  
Antiguo 16/07/2003, 03:31
 
Fecha de Ingreso: mayo-2003
Mensajes: 125
Antigüedad: 14 años, 7 meses
Puntos: 0
NO puedo controlar la SESION

Hola,

No quiero parecer pesado pero no he conseguido llegar a solucionar el problema de las sesiones. Mi problema se puede resumir de la siguiente forma:

Tengo una pagina1 donde inicio la sesión y asigno valor a dos variables por distintos métodos:


Código PHP:
<?
// Inicializo la sesión
session_start(); 

// Registro por un método
session_register($variable1);
$variable1="funciono"
   
// Registro por otro método
$_SESSION["variable2"]= "SI";

// Voy a la página2 donde controlo el valor de las variables de sesión.
header ("Location: pagina2.php");
exit();
?>



Una vez que llego a la pagina2, muestro mediante echos los parametros de la sesion, ya que necesito saber el contenido de una variable


Código PHP:
<?
// Inicializo la sesión
session_start(); 

echo 
'La sesión actual es: '.session_id().'<br>'// Me devuelve el id de la sesion - CORRECTO 

echo 'Path: '.session_save_path().'<br>'// Me devuelve el path que he incluido en php.ini y es el CORRECTO

echo 'Nombre de sesión: '.session_name().'<br>'// Me devuelve el nombre especificado en php.ini

echo 'Variable1: '.session_is_registered(variable2).'<br>'// No me devuelve nada - CURIOSO

echo 'Variable2: '.$_SESSION["autentificado"].'<br>'// No me devuelve nada - CURIOSO
?>
La verdad es que almacena algunos valores y otros no, y admite los parametros del php.ini, que a continuación os muestro por si os da alguna pista.


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 = C:\temp_sesion
;session.save_path = 

; 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 = /
session.cookie_path = C:\temp_sesion

; The domain for which the cookie is valid.
;session.cookie_domain = 
session.cookie_domain = http:\localhost

; 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 = C:\temp_sesion

;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" 


Utilice para la instalación de php el appserver 1.9 y funciono en local con Windows XP. No parece ser problema de permisos ya que almacena los id's de las sesiones sin problemas, os lo prometo.

Os pido vuestra ayuda, por favor, no tengo por donde seguir y esto es crucial.

Muchas gracias y perdonad
__________________
Lailuluelo
El error está en lo obvio
  #2 (permalink)  
Antiguo 16/07/2003, 04:18
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 6 meses
Puntos: 16
Hola,

No soy experto en sesiones, pero intentare ayudar.

En la configuracion, estas directivas

session.cookie_path = C:\temp_sesion
session.cookie_domain = http:localhost
session.entropy_file = C:\temp_sesion

Creo que estan mal. session.cookie_path hace referencia a la ruta en la URL, no ha una del disco, asi que seria dejarla con /. session_cookie_domain, mejor dejarlo vacio. session.entropy_file deberia ser un fichero, no un directorio, pero mejor dejalo comentado para que no tome el valor.

Sobre tu codigo. En el manual se dice que no deberias mezclar session_register() con $_SESSION. Ademas, si te fijas en session_register() (www.php.net/session_register) el parametro es una cadena con el nombre de la variable:
Código PHP:
$variable1="funciono"
session_register('variable1'); 
Ademas, creo que la variable deberia estar creada antes de registrala.
Cita:
If you are using $_SESSION and disable register_globals, do not use session_register(), session_is_registered() and session_unregister(), if your scripts shall work in PHP 4.2 and earlier. You can use these functions in 4.3 and later.
Segun esto, no debes mezclar estas funciones con $_SESSION para PHP 4.2 y anteriores con register_globals a off.

Es decir, haz las pruebas solo con $_SESSION a ver si funciona.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 16/07/2003, 08:45
 
Fecha de Ingreso: mayo-2003
Mensajes: 125
Antigüedad: 14 años, 7 meses
Puntos: 0
Maldita sesión

Hola,

Ponia dos variantes de asignar datos a las variables para este pequeño ejemplo, en realidad utilizo el que recomiendas, $_SESSION.

He hecho los cambios que apuntas y no funciona , es más ahora tengo instalado el appserver 2.1 impoluto en otra máquina y no he tocado nada, y sigue sin funcionar. He verificado que ese php.ini este correcto, de acuerdo con tus comentarios y sigue sin funcionar.

He aqui la sección de sesión:

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 ="C:\NEWAPP~1\php\session"

; 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 = 0

; 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_divisor,
; e.g. 1/100 means there is a 1% chance that the GC process starts
; on each request.

session.gc_probability = 1
session.gc_divisor     = 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" 
No quiero resignarme, no es posible que estos instaladores estén mal, funcionan a la perfección con lo demas, ¿dónde estara el problema?

Sólo me queda probar en un hosting para saber si es problema de la instalación, estoy desesperado. Gracias por todo,
__________________
Lailuluelo
El error está en lo obvio
  #4 (permalink)  
Antiguo 16/07/2003, 09:22
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 6 meses
Puntos: 16
Como no uso de esos instaladores no puedo opinar.

Vamos a probar con un ejemplo mas sencillo:

pagina1.php
Código PHP:
<?php
session_start
();
$_SESSION['prueba']='probando';
?>
<a href="pagina2.php">Pagina 2</a>
pagina2.php
Código PHP:
<?php
session_start
();
echo 
$_SESSION['prueba'].'<br>';
$_SESSION['prueba']=$_SESSION['prueba'].'-1';
?>
<a href="pagina2.php">Pagina 2</a>
Vas al directorio donde le has dicho que cree los ficheros de session (session.save_path) y "memorizas" los ficheros que tiene. A continuacion cargas pagina1.php. Miras en el directorio si ha creado algun fichero. Si lo ha hecho, va bien. Pinchas en el link a pagina 2. Miras el mensaje que te muestra. Si no es el esperado, mira en el directorio si ha creado otro fichero. Si lo ha creado, es que por alguna razon no funciona la propagacion del id. En principio le tienes configurado que lo haga por cookies. Quizas deberias poner en session.cookie_domain = localhost y probar. Si te aparece el mensaje esperado, dale al link y mira si cambia el mensaje.

Mira si te funciona este ejemplo.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 17/07/2003, 02:39
 
Fecha de Ingreso: mayo-2003
Mensajes: 125
Antigüedad: 14 años, 7 meses
Puntos: 0
¡¡¡ FUNCIONA !!!

Hola amigos,

Muchisimas gracias por todo Josemi, una vez más.

Pues eso amigos, todo solucionado, era problema de la configuración de php.ini.

Os paso la sección correspondiente a la sesión por si os sirve de ayuda.

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 = 0

; 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 = /tmp

; 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 = C:\temp_sesion

;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" 
Muchas gracias
__________________
Lailuluelo
El error está en lo obvio
  #6 (permalink)  
Antiguo 19/07/2003, 22:38
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Supongo que ya sabras que como estás usando tu configuración de PHP tema "sesiones" .. estás usando y dependiendo de cookies (de un navegador que las acepte) para que tu aplicación funcione ...

Fijate en la directiva:
session.use_trans_sid = 0

A "1" tu aplicación funcionaría en navegadores que no acepten cookies (y siempre que en los redireccionamientos tipo javascript, header("location ...") o META de refresh .. propages a mano tu el SID de la sesión ..)

Toma nota y haz tus pruebas .. sinó veras cuando un navegador no acepte cookies como no te funciona tu sistema que usa sesiones.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 20/07/2003, 12:42
 
Fecha de Ingreso: mayo-2003
Mensajes: 125
Antigüedad: 14 años, 7 meses
Puntos: 0
Gracias

Gracias, haré pruebas.

Cuídate
__________________
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 13:05.