Foros del Web » Programando para Internet » PHP »

variables de sesión

Estas en el tema de variables de sesión en el foro de PHP en Foros del Web. Hola, camaradas! Cuando intento hacer una variable de sesión, con este código: <?php session_start(); session_register("var"); $_SESSION["var"] = "hola"; ?> <html> <head><title></title></head> <body> <a href="dos.php">aquí</a> </body> ...
  #1 (permalink)  
Antiguo 13/02/2004, 04:38
Avatar de Christatos  
Fecha de Ingreso: julio-2003
Ubicación: Badajoz, Extremadura, España
Mensajes: 194
Antigüedad: 14 años, 4 meses
Puntos: 0
variables de sesión

Hola, camaradas!

Cuando intento hacer una variable de sesión, con este código:

<?php
session_start();
session_register("var");
$_SESSION["var"] = "hola";
?>
<html>
<head><title></title></head>
<body>
<a href="dos.php">aquí</a>
</body>
</html>

(el html no haría falta...)

me da este castañazo:
CGI Error
The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:

A ver quién es capaz, por favor, de echarme un cable...

Gracias de antemano, y SALUDOS
  #2 (permalink)  
Antiguo 13/02/2004, 05:07
Avatar de yoseman  
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 14 años
Puntos: 5
Mira ésto a ver, no sé :S

http://php.us.themoes.org/manual/es/...ation.cgierror
  #3 (permalink)  
Antiguo 13/02/2004, 05:12
Avatar de yoseman  
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 14 años
Puntos: 5
He leido tb en algunos sitios que activando a 0 la directiva cgi.force_redirect en el PHP.INI se puede solucionar el problema.

Eso claro está si el archivo lo tienes en tu servidor :S
  #4 (permalink)  
Antiguo 13/02/2004, 07:07
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Un detalle ..

session_register("var");
$_SESSION["var"] = "hola";

Eso no se puede hacer (o no se debe hacer) ..

O usas un método para registrar tu variable de sesión u otro pero no los dos.

Quedate con $_SESSION y sigue así trabajando con tus variables de sesión (sólo válido para PHP 4.1.0 o superior). Lee las FAQ's de este foro por qué se comenta el tema de trabajar con sesiones a nivel básico. (y también está comentado lo de la directiva cgi.force_redirect ...)

Pero, si te fijas en la FAQ que dejó yosema de php.net .. mejor.

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 13/02/2004, 07:41
Avatar de Christatos  
Fecha de Ingreso: julio-2003
Ubicación: Badajoz, Extremadura, España
Mensajes: 194
Antigüedad: 14 años, 4 meses
Puntos: 0
He mirado el cgi.force_redirect, está a 0 en el php.ini
jejeje, he cambiado el servicio php 4.1 por el php 4.3 y me devuelve el siguiente error (ojo, con el mismo código de antes!!) [no se me asusten]:

Warning: session_register(): open(F:\Archivos de programa\PHP\sessiondata\sess_064ac709eb37bb2ab19f 2430891fa34d, O_RDWR) failed: Permission denied (13) in G:\Documentos\Mis Documentos\Marcos\APROFINTES\APROFINTES\uno.php on line 2

Warning: session_register(): Cannot send session cookie - headers already sent by (output started at G:\Documentos\Mis Documentos\Marcos\APROFINTES\APROFINTES\uno.php:2) in G:\Documentos\Mis Documentos\Marcos\APROFINTES\APROFINTES\uno.php on line 2

Warning: session_register(): Cannot send session cache limiter - headers already sent (output started at G:\Documentos\Mis Documentos\Marcos\APROFINTES\APROFINTES\uno.php:2) in G:\Documentos\Mis Documentos\Marcos\APROFINTES\APROFINTES\uno.php on line 2
aquí
Warning: Unknown(): open(F:\Archivos de programa\PHP\sessiondata\sess_064ac709eb37bb2ab19f 2430891fa34d, O_RDWR) failed: Permission denied (13) 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 (F:\Archivos de programa\PHP\sessiondata) in Unknown on line 0

Bonito, eh?
Pues la verdad es que no tengo ni idea de qué me está pasando...

También intenté, como dice Cluster, de utilizar uno de los dos únicamente, pero falla también y me reporta el error siguiente:

Notice: Undefined variable: _SESSION in G:\Documentos\Mis Documentos\Marcos\APROFINTES\APROFINTES\dos.php on line 3

- Ya no sé qué hacer... tan torpe soy??
A ver si me podéis seguir ayudando, que hasta ahora vamos bien. Gracias, colegas. Un Saludo.
  #6 (permalink)  
Antiguo 13/02/2004, 07:43
Avatar de Christatos  
Fecha de Ingreso: julio-2003
Ubicación: Badajoz, Extremadura, España
Mensajes: 194
Antigüedad: 14 años, 4 meses
Puntos: 0
He leído lo de las Faq's de Yoseman, pero encuentro más que teoría, sé que mi error debe estar ahí, pero no lo comprendo...
Habla de permisos y el error hay un punto en el que me dice:

Permission denied (13) in Unknown on line 0

Un Saludo!
  #7 (permalink)  
Antiguo 13/02/2004, 07:54
Avatar de yoseman  
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 14 años
Puntos: 5
Yo lei en dos o tres sitios que cambiando en el php.ini de tu servidor (pero sólo en el caso de que uses IIS) la directiva cgi.force_redirect=0 se les solucionó el problemilla. Pero parece que no es eso. :S
  #8 (permalink)  
Antiguo 13/02/2004, 07:59
Avatar de Christatos  
Fecha de Ingreso: julio-2003
Ubicación: Badajoz, Extremadura, España
Mensajes: 194
Antigüedad: 14 años, 4 meses
Puntos: 0
Pues, desgraciadamene, eso parece, colega... es más... (y con esto te vas a quedar totalmente alucinado), sabes que a quien me pasó cómo tenía él hecho lo de las variables de sesión (como lo escribí al principio) SÍ le funciona??
Eso sí que ya no lo entiendo... la única diferencia entre él y yo es que yo tengo XP professional y él 2000 professional... puede deberse a la versión del IIS?? puede deberse a cuestiones de permisos??
La verdad es que no lo sé... Pero tiene que haber una forma!
Tú lo has hecho alguna vez, Yoseman??
Cómo declaras una variable de sesión y luego la recuperas en otra página diferente del mismo sitio??

Muchas gracias por estar al hilo de la conversación. Un Saludo!
  #9 (permalink)  
Antiguo 13/02/2004, 08:14
Avatar de yoseman  
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 14 años
Puntos: 5
De nada ;)

Lo que yo hago es registrar la variable utilizando las superglobals(jejeje hasta hace un par de semanas que alguien me lo dijo lo hacía con session_register):

Código PHP:
session_start(); 
$_SESSION['variable']="valor"
Y para invocarla desde cualquier script inicio sesión de la misma forma session_start(); y la llamo tal cuál $_SESSION['variable']

En fin espero que lo soluciones.

Salu2
  #10 (permalink)  
Antiguo 13/02/2004, 08:28
Avatar de Christatos  
Fecha de Ingreso: julio-2003
Ubicación: Badajoz, Extremadura, España
Mensajes: 194
Antigüedad: 14 años, 4 meses
Puntos: 0
Hola otra vez! Aquí estamos yo y mis penas:

Mira lo que me pasa poniendo sólo el código que pones tú:

Warning: session_start(): open(F:\Archivos de programa\PHP\sessiondata\sess_1781e05d64c34d01ed98 f891a2045a81, O_RDWR) failed: Permission denied (13) in G:\Documentos\Mis Documentos\Marcos\APROFINTES\APROFINTES\uno.php on line 2

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at G:\Documentos\Mis Documentos\Marcos\APROFINTES\APROFINTES\uno.php:2) in G:\Documentos\Mis Documentos\Marcos\APROFINTES\APROFINTES\uno.php on line 2

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at G:\Documentos\Mis Documentos\Marcos\APROFINTES\APROFINTES\uno.php:2) in G:\Documentos\Mis Documentos\Marcos\APROFINTES\APROFINTES\uno.php on line 2
aquí
Warning: Unknown(): open(F:\Archivos de programa\PHP\sessiondata\sess_1781e05d64c34d01ed98 f891a2045a81, O_RDWR) failed: Permission denied (13) 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 (F:\Archivos de programa\PHP\sessiondata) in Unknown on line 0

Eso quiere decir, supongo, que es cosa de mi sistema o de mi IIS o de mi PHP o yo qué sé qué... no??
Se le ocurre a alguien algo??
Muchas gracias!
  #11 (permalink)  
Antiguo 13/02/2004, 09:39
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
php.ini

Debes indicar un directorio en la directiva:
session.save_path .. ahí será donde PHP guarde las sesiones que va a crear (por defecto).

Por defecto pone "/tmp" .. ese directorio es sintax de un sistema de archivos de *NIX (lease Linux .. etc) .. Si usas windows ahí dá ese error por que ese directorio no está creado ..

Create un directorio donde gustes (bajo c:/php/sesiones o algo así) y guarda tu php.ini .. Reinidica tu servidor HTTP que uses y listo.

Tambien revisa la directiva:
session.use_trans_sid = .. .. por defecto está a 0 y tal cual usas tus ejemplos la requieres a 1 (sino perderás el SID (identificador único de sesión por el camino).

Tambien sería recomendable (hasta que te empapes toda la teoría sobre como propagar el dichoso SID de las sesiones):

session.use_cookies = ON (o 1) ..

Un saludo,

PD: algo de teoría y configuración hay que leer .. sobre todo para las sesiones de PHP que dependen muchoooooooooooo de la configuración de PHP (de su php.ini) .. más info y lectura obligada: www.php.net/session

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #12 (permalink)  
Antiguo 13/02/2004, 11:43
Avatar de Christatos  
Fecha de Ingreso: julio-2003
Ubicación: Badajoz, Extremadura, España
Mensajes: 194
Antigüedad: 14 años, 4 meses
Puntos: 0
Bueno... Aquí estoy incordiando otra vez, me vais a coger manía y todo...

Te cuento, amigo (con tu permiso) Cluster:

La directiva del path, está configurada a un directorio que no es "/tmp", vamos, apunta a un directorio, que yo no he creado, que se llama datasessions o sessionsdata... lo que sea, el caso es que está OK.

La de los cookies está On.

Y el SID estaba a 0 y te hice caso poníendolo a 1.

Pero a pesar de todo, no consigo nada, el mensaje de error no ha cambiado. Me he dado cuenta que con sólo poner session_start(); se produce el error que me trae de cabeza...

Siento mucho daros el coñazo, pero es que no encuentro un manual que me pueda indicar cómo configurar el php.ini paso a paso diciéndome cómo y para qué valen cada una de las directivas... (si es que mi problema está en el php.ini...)

Por cierto, también me he dado cuenta de que hay dos php.ini:
uno en windows y otro en el directorio donde tengo instalado el php 4.3... ¿Deben de ser iguales, debe de haber sólo uno? ¿Cuál me vale y cuál no? ¿Los dos son necesarios?
Los cambios los he probado en el php.ini de Windows...

A ver si damos con el tema.... Un Saludo de nuevo!!
Gracias por atenderme!
  #13 (permalink)  
Antiguo 13/02/2004, 12:56
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Siento mucho daros el coñazo, pero es que no encuentro un manual que me pueda indicar cómo configurar el php.ini paso a paso diciéndome cómo y para qué valen cada una de las directivas... (si es que mi problema está en el php.ini...)
Ese manual no es ni más ni menos que el oficial de PHP www.php.net

Si te fijas en el apartado de sessiones veras todas las directivas de configuración que intervienen y toda la teoría que debes conocer si vas a trabajar con sesiones.:

www.php.net/session

El php.ini que debes cambiar es el de tu windows/ ..es más .. el que "manda" es el que diga en un:

Código PHP:
<?
phpinfo
();
?>
A todo esto .. si dices que ese directorio existe y la directiva session.save_path apunta a ese directorio .. Revisa los permisos de escritura de ese directorio (no especificas si usas Windows NT, 2000 o XP pro .. o cualquier otro)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #14 (permalink)  
Antiguo 16/02/2004, 03:43
Avatar de Christatos  
Fecha de Ingreso: julio-2003
Ubicación: Badajoz, Extremadura, España
Mensajes: 194
Antigüedad: 14 años, 4 meses
Puntos: 0
Muchas gracias!

Me voy a poner a ello a ver si encuentro algo. Ya os avisaré con lo que encuentre.

Gracias (otra vez) y un Saludo!
  #15 (permalink)  
Antiguo 16/02/2004, 05:59
Avatar de Christatos  
Fecha de Ingreso: julio-2003
Ubicación: Badajoz, Extremadura, España
Mensajes: 194
Antigüedad: 14 años, 4 meses
Puntos: 0
AAAAAAleluya, AAAAAAleluya, Aleluya, Aleluya, Aleeeeeluyaaaa!!!

jejeje
Por fin: Solución (increíble, pero cierto):

Cuando os ocurra una cosa así como a mí, tened en cuenta que el php está diseñado para funcionar, como viene en la instalación por defecto, en c:\php, si lo cambias, luego tienes que cambiar unos parámetros en el php.ini para que coja una ruta de más de 2 niveles (si es que lo has cambiado a más de dos niveles, como me pasó a mí)...
Encontré en el manual que el amigo (con su permiso) Cluster me indicó una referencia a rutas, volví al php.ini y justo encima venía una explicación en inglés que interpreté como: si su SO tiene problemas con una ruta de más de dos niveles cambie... y venían unas directivas, pero lo que hice fue, para ver qué resultado tenía, cambiar la ruta a una de sólo dos niveles (es para los sessiondata) y... E voilà! a funcionarrrr!
jejeje

Muchas gracias por vuestra inestimable ayuda y hasta la próxima!!

Saludos!!
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 07:35.