Foros del Web » Programando para Internet » PHP »

problema con $_SESSION

Estas en el tema de problema con $_SESSION en el foro de PHP en Foros del Web. Saludos a todos: Tengo un pequeño problema que os cuento ahora mismo. Tengo un servidor IIS 5.1 con PHP 4.1.2. En el IIS tengo 2 ...
  #1 (permalink)  
Antiguo 09/05/2005, 10:58
 
Fecha de Ingreso: mayo-2005
Mensajes: 31
Antigüedad: 12 años, 7 meses
Puntos: 0
problema con $_SESSION

Saludos a todos: Tengo un pequeño problema que os cuento ahora mismo.
Tengo un servidor IIS 5.1 con PHP 4.1.2.
En el IIS tengo 2 documentos .php, en el primero de ellos (index.php) le doy valor a una variable ($_SESSION["nombre"]='pepe';) y llamo al segundo documento (index2.php) para que muestre el valor de la variable, sin embargo este valor se pierde y no se porque.
EN EL PHP.INI, EL REGISTER GLOBALS=ON.
Aqui os pongo los documentos:
--- DOCUMENTO "INDEX.PHP" ---
<?php
session_start();
echo "<html>";
echo "<head></head>";
echo "<body>";
$_SESSION['nombre']='pepe';
echo "<a href='index2.php'>index 2</a>";
echo "</body>";
echo "</html>";
?>
--- FIN DE DOCUMENTO "INDEX.PHP" ---
--- DOCUMENTO "INDEX2.PHP" ---
<?php
session_start();
echo "<html>";
echo "<head></head>";
echo "<body>";
echo $_SESSION['nombre'];
echo "<a href='index.php'>index</a>";
echo "</body>";
echo "</html>";
?>
--- FIN DE DOCUMENTO "INDEX2.PHP" ---

No se si es que tengo que configurar algo en el IIS pero no consigo que las variables (que en teoria tendrian que ser globales) pierden el valor al pasar de un documento a otro.
Si alguien me puede echar una manita, se lo agradecere mucho.
  #2 (permalink)  
Antiguo 09/05/2005, 11:33
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Según el uso de sesiones que haces .. estás asumiendo que vas a propagar el SID en cookies, esto implica algo de configuración PHP y detalles en tu cliente (navegador que acceda a esa aplicación).

Sobre configuación servidor: php.ini
session.use_cookies = ON (ó a 1)

recomendable también:
session.use_only_cookies = ON

y desactivar (dejar a ):
session.use_trans_sid = OFF

Así propagaras el SID en cookies 100%

Con respecto a tu "cliente" .. debes aceptar las cookies de tu sitio .. Revisa tu configuración de tu navegador y mira que nivel de "seguridad" usas .. pero es muyyy probable que estés bloqueando la cookie que PHP emite para propagar ahí el SID (Identificador único de sesión) y por otro lado es el que "relaciona" tus datos entre "cliente-servidor" .. y que si se pierde ese es el efecto que obtienes: "perdidad de variables".

También revisa la configuración de sesiones de tu PHP.ini .. sobre todo donde PHP guarda las sesiones que crea:
session.save_path = ...

debe ser un directorio que exista y que tenga permisos de escritura (si corresponde) con ruta absoluta: c:\nose\sesiones (si tu ruta tiene espacios .. usalo entre comillas)

Un saludo,
  #3 (permalink)  
Antiguo 09/05/2005, 11:45
 
Fecha de Ingreso: mayo-2005
Mensajes: 31
Antigüedad: 12 años, 7 meses
Puntos: 0
problema con $_SESSION

Bueno, ante todo gracias por la respuesta.
He probado todo lo que me dices y nada... sigue igual.
Cuando cargo el documento "index.php" y pincho en el enlace, deberia salirme el documento "index2.php" y el nombre "pepe" como valor de $_SESSION["nombre"]; y sin embargo me aparece este error:

Warning: Undefined index: nombre in c:\inetpub\wwwroot\omega18k\index2.php on line 6

Lo dicho, gracias de todos modos, y si se te ocurre alguna otra cosa... yo llevo 2 dias sentado con este problema y estoy saturado...
Un saludo
  #4 (permalink)  
Antiguo 09/05/2005, 14:48
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
El array superglobal: $_SESSION (al igual que otros) sólo está disponible desde PHP 4.1.0 en adelante. Según dices usas una versión de PHP superior .. No obstante mira si puedes actualizarte a PHP 4.3.x .. (ha "llovido" mucho desde esa versión). Y si es posible usa Apache como servidor HTTP en lugar de IIS (de igual forma tendría que funcionar bajo IIS)

Podrías poner aquí la configuración de tu php.ini que usas?

Por lo demás . .insisto que veas las propiedades de tu navegador referente al tema de privacidad y nivel de seguridad que afectan a la aceptación de esa cookie que PHP (por defecto así lo hace si no has cambiado nada de tu php.ini) en cuanto a la propagación del SID.

Lo otro que puedes probar para asegurar el problema con "cookeis" es a propagar el SID en el URL .. usa:

Código PHP:
echo "<a href=\"index2.php?".SID."\">index 2</a>"
Ahí veras en el URL el SID (nombresesion=id_sesion) .. si eso te funciona .. definitivamente tienes problemas con las cookies.

Revisa tambien si usas algún proxy o firewall que este no esté bloqueando esas cookies.

Un saludo,
  #5 (permalink)  
Antiguo 11/05/2005, 03:10
 
Fecha de Ingreso: mayo-2005
Mensajes: 31
Antigüedad: 12 años, 7 meses
Puntos: 0
$_SESSION es global ???

Hola a todos:
tengo un servidor apache 1.3.33 en windows XP con PHP 4.1.2. y me ocurre que no me guarda las variables globales en el paso entre documentos.
El "register globals" esta en "ON".
Vereis, incluso con un codigo tan pequeño como lo que os pongo a continuacion ocurre. Tengo 2 documentos .php, en uno asigno un valor a una variable $_SESSION y en el segundo intento recuperar este valor. Pues nada... no funciona.
Aqui os posteo el codigo de los dos documentos para ver si alguien sabe ver que hago mal.
--- DOCUMENTO index.php ---
<?php
session_start();
$_SESSION["nombre"]='pepe';
echo "<a href='index2.php'>ir a index 2</a>";
?>
--- FIN DE index.php ---
--- DOCUMENTO index2.php ---
<?php
session_start();
echo $_SESSION["nombre"];
?>
--- FIN DE index2.php ---

La verdad es que no lo entiendo. Si alguien tiene montado el servidor como yo y me puede mandar el php.ini, quizas tengo algo mal pero no soy capaz de encontrarlo.
Gracias
  #6 (permalink)  
Antiguo 11/05/2005, 03:42
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
¿Por qué no funciona??... no imprime nada?, algún mensaje de error?...
He probado tus archivos tal cual y me funcionaron... temo que no sé tu problema.

Quizá en estas lecturas hayes el error:
http://www.forosdelweb.com/showthrea...989#post238989
http://www.forosdelweb.com/showthrea...998#post238998
http://www.php.net/manual/es/ini.cor...gister-globals

Saludos!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #7 (permalink)  
Antiguo 11/05/2005, 03:48
 
Fecha de Ingreso: mayo-2005
Mensajes: 31
Antigüedad: 12 años, 7 meses
Puntos: 0
pues me ocurre que en el segundo documento, la variable $_SESSION["nombre"] no tiene ningun valor... simplemente lo ha perdido, asi que el documento "index2.php" no muestra absolutamente nada, aunque no da ningun error.
Este mismo codigo lo pruebo en otro servidor que tengo con linux y funciona perfectamente, por eso decia que si alguien lo tiene montado en un windows y me puede pasar el php.ini, quizas pueda encontrar el error.
gracias
  #8 (permalink)  
Antiguo 11/05/2005, 08:09
 
Fecha de Ingreso: mayo-2005
Mensajes: 31
Antigüedad: 12 años, 7 meses
Puntos: 0
Saludos cluster.
He leido tu respuesta.
Ayer instale apache 1.3.33 segun me recomendabas.
Despues instale php 4.1.2 y lo configure todo.
El problema persiste, no se mantiene el valor de $_SESSION["variable"] y no consigo ver el porque.
Es posible que tengas razon y el problema este en la configuracion de "seguridad" del XP, pero lo he probado poniendolo a la mas baja y ni asi funciona.
jam1138 me ha enviado unos links que probare esta noche (ahora mismo no tengo el servidor delante) y en uno de ellos habla sobre el .htaccess (que no se si existe en windows), quizas por ahi pueda encontrar la solucion.
No obstante esta misma noche posteare mi "php.ini" y si le puedes echar un vistazo, quizas tu veas donde puede estar el error porque yo ya estoy un poco cegado.
Muchas gracias por tu ayuda y lo mismo para jam1138.
Ah, por si os da una pista, hace tiempo probe exactamente el mismo codigo pero sobre un WINDOWS 2000 PROFESSIONAL y ... funcionaba !!!
Lo dicho, gracias y esta noche posteo el php.ini
  #9 (permalink)  
Antiguo 11/05/2005, 09:10
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
jam1138 me ha enviado unos links que probare esta noche (ahora mismo no tengo el servidor delante) y en uno de ellos habla sobre el .htaccess (que no se si existe en windows), quizas por ahi pueda encontrar la solucion.

Si tu tienes acceso a tu php.ini como lo tienes .. usar configuración por un .htaccess es lo mismo que hacerlo desde tu php.ini (fijate en el nombre de las directivas que te mencione ese .htaccess y las contrastas con tu php.ini).

Alguna directiva para que revises:
session.save_path = "una ruta absoluta que exista"

Debe ser una ruta que exista tipo: "c:\php\sesiones" ... (y si corresponde .. con los permisos de escritura suficientes).

Un saludo,
  #10 (permalink)  
Antiguo 11/05/2005, 13:40
 
Fecha de Ingreso: mayo-2005
Mensajes: 31
Antigüedad: 12 años, 7 meses
Puntos: 0
Hola cluster, bueno, aqui tienes toda la seccion [Session] de mi php.ini
si ves algo raro, te lo agradecere.
Las sesiones las esta guardando en un directorio de C:\tmp, ahi crea archivos "sess_xxxxxxxxx..." de 0 bytes de contenido.
Gracias por la ayuda
---------------------------

[Session]
; Handler used to store/retrieve data.
session.save_handler = files

; Argument passed to save_handler. In the case of files, this is the path
; where data files are stored. Note: Windows 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


; 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

; Percentual probability that the 'garbage collection' process is started
; on every session initialization.
session.gc_probability = 1

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

; Check HTTP Referer to invalidate externally stored URLs containing ids.
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.
session.cache_limiter = nocache

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

; use transient sid support if enabled by compiling with --enable-trans-sid.
session.use_trans_sid = 1

url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeent ry"
  #11 (permalink)  
Antiguo 12/05/2005, 01:24
 
Fecha de Ingreso: mayo-2005
Mensajes: 31
Antigüedad: 12 años, 7 meses
Puntos: 0
Hola cluster.
Ayer postee mi php.ini, si no te importa echarle un vistacillo, igual me puedes echar una mano.
Revise la "privacidad" de windows xp, poniendo la configuracion de cookies para aceptarlas todas.
Gracias por tu ayuda.
  #12 (permalink)  
Antiguo 12/05/2005, 10:59
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
mm Te recomendaría crearte una carpeta (directorio) por donde gustes y definir:

session.save_path = "c:\php\sesiones"

Teóricamente PHP si no encuentra el directorio que indicas en esa directiva ..lo cual NO es correcto: /tmp en un sistema windows (sólo para *NIX .. lease: Linux .. etc) .. toma la del "sistema" windows/ o similar ...

Según tu php.ini (está "por defecto") .. propagaras el SID en cookies (usas: session.use_cookies = 1) cuando se pueda hacer .. y sino re-escribirá PHP ciertos tag's de HTML como link y demás para añadir el SID en ellos (usas: session.use_trans_sid = 1)

Podrías hacer una prueba:
Deja:
session.use_cookies = 0
(reincia tu servidor y ejecuta un phpinfo() para ver que tu configuración se esté usando)

Prueba el ejemplo que pusistes en principio .. Deberías ver un "link" con el SID en el propagado .. algo tipo: nose.php?PHPSESSID=907908as7df89798asdf o similar.

Por lo menos así deberíamos de descartar problemas con cookies (mejor dicho asegurar que sea un problema cookies).

Pero, antes de nada .. ajusta la directiva de PHP que te menciono al principio. (reiniciando y comprobando que el cambio se efectuó correctamente).

Un saludo,
  #13 (permalink)  
Antiguo 19/05/2005, 09:30
 
Fecha de Ingreso: mayo-2005
Mensajes: 31
Antigüedad: 12 años, 7 meses
Puntos: 0
Saludos, sobre este tema ya he encontrado la solucion, o mas bien el problema: Apache 1.3.33 + php 4.1.2 + windows XP se pegan y no hay manera. Cambie a php 4.3 siguiendo el consejo de este foro y finalmente se soluciono. Espero que mi experiencia y la perdida de 5 dias sirva a alguien.
Un saludo y gracias a todos
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 11:06.