Foros del Web » Programando para Internet » PHP »

Variables de sesión y yo

Estas en el tema de Variables de sesión y yo en el foro de PHP en Foros del Web. Hola a todos :) Estoy haciendo una aplicación y tengo un problema. Necesito pasar las variables de sesión de un php a otro, sin utilizar ...
  #1 (permalink)  
Antiguo 26/11/2003, 07:27
 
Fecha de Ingreso: noviembre-2003
Mensajes: 31
Antigüedad: 14 años
Puntos: 0
Variables de sesión y yo

Hola a todos :)

Estoy haciendo una aplicación y tengo un problema. Necesito pasar las variables de sesión de un php a otro, sin utilizar otro código que no sea php.Éste es mi código:


guarda variable
---------------------------------

<%
session_start();

session_register("usuario_id");

$usuario_id="1";

header("Location:acceso.php");

%>
-------------------------------------


acceso.php
--------------------------------------
<%
session_start();

echo $usuario_id;
%>
--------------------------------------



En principio, según he visto, no me daria problemas, deberia mostrarme el valot de $usuario_id, pero me dice esto:

PHP Notice: Undefined variable: usuario_id in C:\prueba\online\acceso.php

¿Por qué demonios me pasa esto?

Tengo el php.ini con el register_globlal activado, el session.use_cookies = 1, el session.auto_start = 0, y el session.use_trans_sid = 1.

También he probado con el HTTP_SESSION_VARS y con el $_SESSION y o lo he puesto mal o no me funciona tampoco.

Mi version de PHP es la 4.3.4

Os lo ruego , ayudadme, he leido mil manuales pero no encuentro la solución.Socorro


Saludos

Última edición por TheXFilter; 26/11/2003 a las 07:33
  #2 (permalink)  
Antiguo 26/11/2003, 07:53
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 14 años, 1 mes
Puntos: 11
no tiene nada que ver con eso, sino con el hecho de que en el script acceso.php no haz inicializado la variable $usuario_id.
__________________
Dedicado a proyectos web, actualmente desarrollando un sistema de diseño de flyers online muy fácil de usar.
  #3 (permalink)  
Antiguo 26/11/2003, 08:35
 
Fecha de Ingreso: noviembre-2003
Mensajes: 31
Antigüedad: 14 años
Puntos: 0
Bueno pues como la inicializo?

yo pensaba q al ser una variable de sesión a declararla cuando la creas es suficiente

Saludos
  #4 (permalink)  
Antiguo 26/11/2003, 09:03
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
El estado de register_globals es determinante para que puedas asumir como globales las variables de sesión como así lo pretendes hacer ..

Lee las primeras FAQ's del foro .. hay una que explica ese tema y otra que explica como usar a nivel básico sesiones por ambos métodos (usando $_SESSION y session_register() ..)

Y ojo con la versión de PHP que uses .. $_SESSION sólo está disponible 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.
  #5 (permalink)  
Antiguo 26/11/2003, 09:23
 
Fecha de Ingreso: noviembre-2003
Mensajes: 31
Antigüedad: 14 años
Puntos: 0
he leido ambos tutoriales pero no me sirvieron de nada

el register_globals lo tengo en On, como ya dije

si lees mi post verás que tengo una versión superior a la 4.1


saludos
  #6 (permalink)  
Antiguo 26/11/2003, 09:52
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues si usas una versión superior a 4.1.0 de PHP .. usa el array superglobal $_SESSION y pon el código que uses (usa el botón "PHP" para ver el código coloreado .. en: header("Location:acceso.php"); faltaría un espacio entre el Location: y el el acceso.php ...

A todo esto .. si vas a propagar el SID de forma automática y por cookies como así lo haces al usar el "location" .. necesitas de 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.
  #7 (permalink)  
Antiguo 26/11/2003, 10:04
 
Fecha de Ingreso: noviembre-2003
Mensajes: 31
Antigüedad: 14 años
Puntos: 0
Es que es como si no me reconociera la sesión. Cuando ejecuto las páginas me crea dos variables de sesión, no una, y por eso pienso que cuando busca la variable $usuario_id no la encuentra por que no hace referencia a la primera variable de sesió, sino a la segunda

De todas formas, como seríala sintaxis usando $_SESSION?

Gracias Cluster y Claudiovega por l arapidez de las respuestas
  #8 (permalink)  
Antiguo 26/11/2003, 10:11
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cuando dices "variables de sesión" .. te refieres a que ves un SID (ejemplo algo tipo: PHPSID=a4626349d861fcd0fxfc7913e5f75xdb) diferente en ambas páginas? .. Deben ser iguales .. si en algún momento varia es por qué el SID no es propagado correctamente. Cada uso de session_start() .. si no existe una sesión activa (que venga propagada) se incia una nueva.

Como te hacia referencia, con los ejemplos que pusistes debes de tener un navegador que acepte cookies. Al usar el redirecionamiento header("location" ..) php no reescribe el SID en ese redireccinamiento (pese que uses session.use_trasn_sid=1) sólo lo hace ne tags simples HTML (no en header() o javascript y otro tipo de redireccionamientos). Al usar session.use_cookie=1 le dices a PHP que use una cookie para propagar el SID .. así que da igual el redireccionamiento que uses o forma de pasar de una página a otra para que el SID se propague (viaja en la cookie).

El uso de $_SESSION a nivel básico lo tienes en las FAQ's de este foro con un ejemplo simple (y fijate que hay un link hacia un manual más extenso sobre sesiones).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 26/11/2003, 10:12
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 6 meses
Puntos: 16
Hola,

Si te esta generando un fichero de sesion para cada pagina, entonces es que por alguna razon no te propaga el SID. Como comenta Cluster, tal como lo haces (el header()) obligatoriamente debe propagarse por cookie. Y si falla la cookie, falla la sesion.

Revisa las directivas de session para la cookie. Y si es posible, verifica que tu navegador esta aceptando bien las cookies.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #10 (permalink)  
Antiguo 26/11/2003, 10:21
 
Fecha de Ingreso: noviembre-2003
Mensajes: 31
Antigüedad: 14 años
Puntos: 0
joer , sois unas fieras en rapidez

he probado este script ahora, fijándome en las FAQS del foro:

guardar variables:
-----------------------------
<%
session_start();

$_SESSION['usuario_id']="funciona";

header("Location: acceso.php");

%>
--------------------------------


acceso.php
---------------------------------------
<%
session_start();

$usuario_id=$_SESSION['usuario_id'];

echo $usuario_id;
%>
---------------------------
y me sale esto:

PHP Notice: Undefined index: usuario_id in C:\prueba\online\acceso.php on line 6

:(
  #11 (permalink)  
Antiguo 26/11/2003, 10:38
 
Fecha de Ingreso: noviembre-2003
Mensajes: 31
Antigüedad: 14 años
Puntos: 0
El session.use_cookies = 1 asi está, y nada, que no le da la gana

y he mirado si el navegador acepta cookies, y si que las acepta, aparte que no tengo que escribir continuamente mi nombre de usuario y la contraseña en este foro, señal de que si que me van las cookies no?

empiez a marearme este problema :S

Ah Cluster! lo he probado con HTML y si que me envia la variable, como tu decías, pero con el location no, que es lo que me interesa :(

Saludos

Última edición por TheXFilter; 26/11/2003 a las 10:40
  #12 (permalink)  
Antiguo 26/11/2003, 11:01
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
mm .. al parecer hay algún problema con las cookies. no sé si de tu navegador (podrías probar con otros) o de configuración de php.ini (por defecto sulen funcionar sin problemas .. )

Este foro usa cookies para no hacer el login (recordarte el login en próximas sesiones) pero luego sigue trabajando con sesiones y propaga el SID en el URL (es eso que vés en la barra dedireccion ... /sw34rydsdfa98s8f787s8df/)

A "malas" vas a tener que propagar el SID manualemnte por lo menos en los redireccionamientos tipo header() que usas .. o javascript y etiquetas META de refresh si las llegas a usar en alguna ocasión .. para Links y formularios (entre otros tag) puedes dejar que PHP lo haga .. como de hecho dices que lo hace correctamente.

Un saludo,

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 26/11/2003, 11:14
 
Fecha de Ingreso: noviembre-2003
Mensajes: 31
Antigüedad: 14 años
Puntos: 0
pues no sé Cluster, sólo sé que no me tira

quieres q te envie mi fichero php.ini?

juraria q está todo bien puesto pero...
  #14 (permalink)  
Antiguo 26/11/2003, 11:22
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Prueba antes con otros navegadores (sobre todo si usas IE 6+).

Ahora que recuerdo .. hay un problema por ahí sobre las cabeceras "private" que usa PHP (php.ini) por defecto. Pero si dices que el SID se progaga bien si usas un link simple para pasar de tu pag1 a la 2 donde lees la sessión .. no debería afectar esto.

Prueba a cambiar el cache_limiter por:
session.cache_limiter = private, must-revalidate
ó
session.cache_limiter = nocache
ó
session.cache_limiter = public


(y recuerda en reiniciar tu servidor al hacer cambios en tu php.ini)

Lee los comentarios de los usuarios de:
http://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.
  #15 (permalink)  
Antiguo 26/11/2003, 13:46
 
Fecha de Ingreso: noviembre-2003
Mensajes: 31
Antigüedad: 14 años
Puntos: 0
Pues gracias de nuevo por contestar Cluster

El caso es que esa aplicación la estoy haciendo en una empresa y no vuelvo alli hasta mañana, así que no te puedo decir si me funcionará.

Mañana te cuento, y gracias de nuevo :)
  #16 (permalink)  
Antiguo 27/11/2003, 03:27
 
Fecha de Ingreso: noviembre-2003
Mensajes: 31
Antigüedad: 14 años
Puntos: 0
Nada, imposible

Intenté lo del nocache y tal pero nada, miré la página php.net pero no vi nada que pudiera ayudarme.

En fin, me hubiera gustado encontrar el problema :(

Saludos y gracias
  #17 (permalink)  
Antiguo 01/12/2003, 04:07
 
Fecha de Ingreso: noviembre-2003
Mensajes: 31
Antigüedad: 14 años
Puntos: 0
bueno, parece que al fina saqué algo en claro

Si pongo esto funciona:

header("Location: ex2.php?".SID);

que és más o menos lo que me dijisteis, propagar la SID por la URL, sólo qu eno sabia la sintaxis exacta.

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:22.