Foros del Web » Programando para Internet » PHP »

Problemas con session_start()

Estas en el tema de Problemas con session_start() en el foro de PHP en Foros del Web. Hola, Tengo un problema con php, y les pido por favor si me das una mano. creo una variable de session de la siguiente manera: ...
  #1 (permalink)  
Antiguo 02/11/2004, 07:41
 
Fecha de Ingreso: noviembre-2004
Mensajes: 31
Antigüedad: 13 años, 1 mes
Puntos: 0
Problemas con session_start()

Hola, Tengo un problema con php, y les pido por favor si me das una mano.
creo una variable de session de la siguiente manera:

<?php
session_start();
$_SESSION["prueba"] = "hola";
?>


Me carga la variable de session "prueba" y la puedo mostrar en cualquier parte del formulario por ejemplo así: <?php echo $_SESSION["prueba"]; ?>
el problema es que no puedo asignar otro valor a la variable "prueba" en otra parte del formulario, es decir se queda con el valor que le asigne antes del encabezado html.

¿puede ser que la funcion session_start() no me funcione porque me falta algo en el PHP.INI, y haya que editarlo?

Desde ya muchas gracias.
  #2 (permalink)  
Antiguo 02/11/2004, 08:43
 
Fecha de Ingreso: julio-2004
Mensajes: 45
Antigüedad: 13 años, 4 meses
Puntos: 0
Pues a mi me pasa algo similar, a lo mejor si te dan una respuesta que te ayude me sirva a mi tambien, y es que quiero definir varias variables $_session y tengo que manejar cookies, voy a ver que se me ocurre,

Nos vemos,
  #3 (permalink)  
Antiguo 02/11/2004, 13:52
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Una variable de sesión al igual que las cookeis .. sólo "registran" su valor y queda disponible en la próxima petición al servidor .. (y todo esto si se propaga correctamente el SID)

Es decir .. si tu haces:

<?
session_start();

más abajo .. donde gustes .. le das un valor:
$_SESSION['variable'] = "valor";

y si quieres .. mas abajo se lo cambias:
$_SESSION['variable'] = "otro_valor";

Pero, el valor que prevalece para subsiguientes scripts es el último .. De hecho .. no tiene mucho sentido hacer eso (dar y cambiar el valor) en un mismo script atendiendo que NO debes trabajar con esa varaible en tu script sino sólo usarla para "propagar" o "mantener" el valor de esta para subsiguientes scripts/páginas que pases entre link a link (o redireccionamiento o uso de formulario HTML ... etc)

Un saludo,
  #4 (permalink)  
Antiguo 03/11/2004, 05:47
 
Fecha de Ingreso: noviembre-2004
Mensajes: 31
Antigüedad: 13 años, 1 mes
Puntos: 0
Otra pregunta

Ante todo gracias por responder. El problema es que no puedo asignar valor a
$_SESSION["prueba"] = "hola" en cualquier parte del formulario, a no se lo asigne antes del encabezado HTML, es decir, Tienen idea por que sucede esto?
  #5 (permalink)  
Antiguo 03/11/2004, 06:45
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Lo que debe estar antes de tu encabezado "HTML" .. mejor dicho de cualquier otra salida hacia el clientes es -sólo- la función de inicio de uso de sesiones: session_start()

Es decir ..

Código PHP:
<?
session_start
();
?>
<html>
etc .. HTML
<?
$_SESSION
['variable']="valor";
?>
</html>
Un saludo,

Última edición por Cluster; 03/11/2004 a las 06:52
  #6 (permalink)  
Antiguo 04/11/2004, 07:26
 
Fecha de Ingreso: noviembre-2004
Mensajes: 31
Antigüedad: 13 años, 1 mes
Puntos: 0
Probé como me dijiste antes del encabezado HTML iniciar la session con session_start(); .....y luego asignarle un valor a la variable en cualquier parte del formulario, y no me funciona. No entiendo por que no funciona, si supuestamente hago todo lo que dicen los manuales. ¿Puede ser que este mal configurado el php.ini, o algun otro archivo de configuracion del PHP, o bien sea una version vieja del mismo?. Las pruebas no las estoy realizando en mi pc personal, sino que las realizo directamente en un servidor Linux ¿tendrá algo que ver este último detalle que mencioné?.

Muchas gracias por su ayuda
  #7 (permalink)  
Antiguo 04/11/2004, 08:23
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 se si será un asunto de version, pero cual version de php tienes?
por que el asunto de los array super globales comenzo en php 4.1.0 segun lei por ahi, y $_SESSION[] es un array superglobal.
  #8 (permalink)  
Antiguo 05/11/2004, 05:10
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Será mejor que indiques el código que usas completo y el detalle de la versión de PHP que usas (por si sucede lo que comenta claudiovega).

Un saludo,
  #9 (permalink)  
Antiguo 10/11/2004, 10:33
 
Fecha de Ingreso: noviembre-2004
Mensajes: 31
Antigüedad: 13 años, 1 mes
Puntos: 0
Gracias Cluster por la información, me decias que me fije en la version de PHP que estoy utilizando, pero como hago para saber que version es, me fije en el archivo PHP.INI y en el httpd.conf y no me dice la version real que tengo. Hay alguna otra forma?. Las pruebas las realizo en un servidor Linux Mandraque 8.0. Muchas gracias por su atención.
  #10 (permalink)  
Antiguo 10/11/2004, 10:39
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Usando la función phpinfo() de PHP puedes obtener toda la información de PHP (y algo hasta de tu servidor HTTP usado) .. temas como versión de PHP, estado de directivas de configuración, extensiones instaladas y sus información/configuración .. etc.

Código PHP:
<?
phpinfo
();
?>
Actualiza la versión de PHP en lo posible ..

Un saludo,
  #11 (permalink)  
Antiguo 10/11/2004, 11:38
 
Fecha de Ingreso: noviembre-2004
Mensajes: 2
Antigüedad: 13 años, 1 mes
Puntos: 0
Mi solución es desactivar TODA salida de session_start. Tanto cookies como de otros modo. (Lean el manual online para ver cómo se puede desactivar cookies de sesión) Conserven el ID de sesión...

y antes de mandar la salida a la página, pongan su propio cookie. Esto requiere implementar su propio "custom_session_start", pero vale la pena.

También recomiendo utilizar plantillas. Una muy buena forma de plantillas salió en Sitepoint.com en el artículo "beyond the template engine" (no recuerdo la fecha).

Así, se asegurarán que pueden modificar las variables como se les de la gana. Cuando ya tengan todas las variables, pueden mandar la salida HTML.

Si no saben separar la presentación (HTML, js) del código principal, les será muy difícil programar en web.
  #12 (permalink)  
Antiguo 11/11/2004, 07:43
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por rickg29
Mi solución es desactivar TODA salida de session_start. Tanto cookies como de otros modo. (Lean el manual online para ver cómo se puede desactivar cookies de sesión) Conserven el ID de sesión...

y antes de mandar la salida a la página, pongan su propio cookie. Esto requiere implementar su propio "custom_session_start", pero vale la pena.
mm Pero si eso ya lo hace PHP si usas session.use_cookies (y/o session.use_only_cookies)? .. El otro detalle que puede influir sobre "salida" enviada al navegador es que el uso "por defecto" de PHP sobre sesiones este envia otras cabeceras al cliente .. las cuales puedes controlar con session_cache_limiter() que gestionan "privacidad" de la página para que quede o no en caché.

Cita:
También recomiendo utilizar plantillas. Una muy buena forma de plantillas salió en Sitepoint.com en el artículo "beyond the template engine" (no recuerdo la fecha).
Ok, completamente deacuerdo .. Algunas implementaciones ya hechas Smarty, PatTemplates, NokTemplates....

Cita:
Así, se asegurarán que pueden modificar las variables como se les de la gana. Cuando ya tengan todas las variables, pueden mandar la salida HTML.
Ok, pero esto de igual forma si usas PHP incrustrado sobre HTML tan sólo hay que preocuarse de:

Código PHP:
<?
session_start
();
// o envio de otras cabeceras o funciones que generen estas cabeceras HTTP: header(), settcookie() ...
?>
<resto de HTML ...
Cita:
Si no saben separar la presentación (HTML, js) del código principal, les será muy difícil programar en web.
No es tan dificil .. lo que si puede complicar al "principiante" es entender que pese que "todo" está en una misma página (código HTML/etc y PHP) .. cada cosa se ejecuta en su momento .. PHP en el servidor y luego el código que resulte para el cliente (sea HTML para un navegador, WML para un dispositivo móvil .. etc).

Pero, si .. estoy deacuerdo que usar modelos de "vistas" .. "controladores" .. separar la capa de "negocios" de la de "presentación" es buena técnica. Pero es "opcional". Tampoco hay que "asustar".

Un saludo,
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 15:01.