Foros del Web » Programando para Internet » PHP »

PHP Version 4.3.11, no registra sesiones... why?

Estas en el tema de PHP Version 4.3.11, no registra sesiones... why? en el foro de PHP en Foros del Web. Hola, miren.. esta es la forma en que intento registrar una sesion: Código PHP:     session_start ();       session_register ( "usrOk" );       $logged  =  "activa" ...
  #1 (permalink)  
Antiguo 04/02/2006, 10:29
Avatar de MWNS  
Fecha de Ingreso: julio-2003
Mensajes: 528
Antigüedad: 20 años, 9 meses
Puntos: 2
PHP Version 4.3.11, no registra sesiones... why?

Hola, miren.. esta es la forma en que intento registrar una sesion:

Código PHP:
    session_start(); 
    
session_register("usrOk"); 
    
$logged "activa"
y luego la forma de revisarla:

Código PHP:
session_start();
if (
$_SESSION["usrOk"]!="activa")//si no es
{
Header("Location: ERROR.php");//envio a pagina de error
exit();

pero no funciona, no se si es por la version del php, alguien me podría orientar?... en otras ocasiones esta forma de registrar una sesion siempre me ha funcionado...

gracias
__________________
MWNS
Mario Navas
http://marionavas.com
  #2 (permalink)  
Antiguo 04/02/2006, 10:38
Avatar de levhita  
Fecha de Ingreso: febrero-2006
Ubicación: Guadalajara, México
Mensajes: 88
Antigüedad: 18 años, 2 meses
Puntos: 0
Tu problema es más de lógica que de otra cosa:

Código:
    session_start(); //Inicia sesión, bien
    session_register("usrOk"); //Añade la variable usrOk a la sesión, bien, la variable usrOk esta total y completamente vacia, mál.
    $logged = "activa";  //Asignas "activa" a la variable ->!LOCAL!<-- logged
    //Termina la ejecución del script y logged deja de existir y se pierde su valor.
Mi recomendación es dejar de lado el session_register y tomar el enfoque simple.

$_SESSION[], es un arreglo que comienza a existir por el simple hecho de escribir session_start();.

tomando esto como base lo unico que tenias que hacer era:

Código:
session_start();
$_SESSION['usrOk']="activa";
La otra parte se queda igual.
__________________
"La libertad viene en paquetes pequeños, usualmente TCP/IP"
http://blog.levhita.net/
  #3 (permalink)  
Antiguo 04/02/2006, 11:12
Avatar de MWNS  
Fecha de Ingreso: julio-2003
Mensajes: 528
Antigüedad: 20 años, 9 meses
Puntos: 2
hola levhita, gracias


te cuento, no se porque no funciona... anteriormente en otros servers esa forma de regitrar sesiones me ha funcionado muy bien... (incluso en este momento con el phptriad que lo tengo instalado en mi pc, funciona)... pero no en el server que te digo tiene php version 4.3.11...

intente con el cambio que tu dices pero igual, no me registra la sesion.. y el script de "seguridad" que tengo siempre me manda a la pag de error...
Código PHP:
//script de seguridad
session_start(); 
if (
$_SESSION["usrOk"]!="activa")
{
header("Location: pagina_de_error.php");
exit();

alguna idea?

gracias


mmm.. si tenes razon en lo de mi error de logica .. lo escribi mal ...

debia ser:

session_start();
session_register("usrOk");
$usrOk= "activa" //pero igual .. asi no funciona...
__________________
MWNS
Mario Navas
http://marionavas.com
  #4 (permalink)  
Antiguo 04/02/2006, 11:24
Avatar de levhita  
Fecha de Ingreso: febrero-2006
Ubicación: Guadalajara, México
Mensajes: 88
Antigüedad: 18 años, 2 meses
Puntos: 0
mmm Cookies tal vez?

La primera vez que escribí el código puse "activo", luego lo corregi a "activa", no será que copiaste el código antes de la corrección?

Intenta cambiar la configuración en tu script, para que use el GET en lugar de Cookies.
Código PHP:

ini_set
(session.use_cookies'0');
ini_set(session.use_only_cookies'0'); 
Al menos para probar que este funcionando el manejo de sesión.
__________________
"La libertad viene en paquetes pequeños, usualmente TCP/IP"
http://blog.levhita.net/
  #5 (permalink)  
Antiguo 04/02/2006, 11:28
Avatar de deadlykyo  
Fecha de Ingreso: noviembre-2005
Ubicación: Cbba - Bolivia
Mensajes: 747
Antigüedad: 18 años, 5 meses
Puntos: 5
se puede usar de la manera que dices, lo unico que tendrias que hacer es cambiar en tu php.ini:
register_globals= on
pero esto en php desde cierta version (no estoy seguro cual) lo trae desabiltado ya que tenerlo en esa configuracion, trae problemas de seguridad, lo optimo seria que lo manejes como te sugiere levhita:
Código PHP:
<?php
  session_start
(); //Inicia sesión, bien
   
$_SESSION['usrOk']="activa";
alor.
?>
ahora para que estes segura si esta en la session la variable que dices por que no intentas mostrar todas las variables que tienes registradas en la session:
Código PHP:
<?
//script de seguridad

session_start(); 
        
$sesion = array();
    foreach (
$_SESSION as $nombre_var => $valor_var)
        
$sesion[$nombre_var] = $valor_var;
    print 
"<br>valores SESSION, se envi&oacute;:\n";
    
var_dump($sesion);
if (
$_SESSION["usrOk"]!="activa")
{
  
//header("Location: pagina_de_error.php");
  //exit();


?>
con eso veras si la variable que deseas esta o no registrada en la sesion, cya
__________________
"El Conocimiento es de todos, no solo de algunos"
  #6 (permalink)  
Antiguo 04/02/2006, 11:55
Avatar de MWNS  
Fecha de Ingreso: julio-2003
Mensajes: 528
Antigüedad: 20 años, 9 meses
Puntos: 2
hola, hey gracias...

sigue sin funcionar ... mmm .. register globals esta a ON, deberian registrarse las sesiones sin ningun tipo de problemas, pero no...

deadlykyo, realicé algunos comentarios sobre el code que pusiste, me dices si lo entendí bien...

Código PHP:
session_start(); 
$sesion = array(); // se genera un arreglo llamado sesion
foreach ($_SESSION as $nombre_var => $valor_var)// a $nombre_var deberia asignarle usrOk a $valor_var, activa...
$sesion[$nombre_var] = $valor_var;//esto seria decir al arreglo sesion en su posicion $nombre_var ingrese el valor que trae $valor_var
print "<br>valores SESSION, se envio:\n";//aca se imprime mensaje
var_dump($sesion);//esto deberia imprimir algo asi como: valores SESSION, se envió: array(0) {activa}, osea, el arreglo sesion en su posicion 0 tiene como contenido, activa... 
pero no, lo que imprime es:

valores SESSION, se envió: array(0) { }

ideas? ... sigo sin entender por que no me registra la variable ... si register globals esta a on ... ..

y bueno, otra preguntilla ...

si register globals estuviera a off, que no es mi caso ... solo es por saber ... como seria la forma para registrar una sesion?...


gracias!
__________________
MWNS
Mario Navas
http://marionavas.com
  #7 (permalink)  
Antiguo 04/02/2006, 12:18
Avatar de levhita  
Fecha de Ingreso: febrero-2006
Ubicación: Guadalajara, México
Mensajes: 88
Antigüedad: 18 años, 2 meses
Puntos: 0
Con session_start(), y asignando variables directamente a $_SESSION.

Pues mira, lo que alcanzo a percibir es que nisiquiera esta iniciando sesión. mmm. La verdad no le hallo al problema, y me ya me voy a desconectar por el resto del día.

Suerte.
__________________
"La libertad viene en paquetes pequeños, usualmente TCP/IP"
http://blog.levhita.net/
  #8 (permalink)  
Antiguo 04/02/2006, 12:22
Avatar de deadlykyo  
Fecha de Ingreso: noviembre-2005
Ubicación: Cbba - Bolivia
Mensajes: 747
Antigüedad: 18 años, 5 meses
Puntos: 5
sorry debi comentarlo el codigo, bueno te dare la idea general es un ciclo que recorre toda la variable superglobal $_SESSION y lo guarda dentro de un arreglo y luego te lo muestra todo lo que este registrado en la $_SESSION
Código PHP:
<?php 
session_start
(); 
$sesion = array(); // se genera un arreglo llamado sesion
foreach ($_SESSION as $nombre_var => $valor_var)// a $nombre_var se encarga de agarrar todos los nombres de las variables que han sido subidas a la $_SESSION, ahi tambien esta usrOk, no tienes que cambiarlo
//$valor_var es el valor que tiene esa variable, ejm digamos que nombre_var = 'usrOk' y valor_var='activa'
//y asi sucesivamente si existen mas valores registrados en la sesion, tomalo como si fuera un arreglo asociativo.
$sesion[$nombre_var] = $valor_var;//esto seria decir al arreglo sesion en su posicion $nombre_var ingrese el valor que trae $valor_var
print "<br>valores SESSION, se envio:\n";//aca se imprime mensaje
var_dump($sesion);//esto te imprime todo lo que tengas registrado en la $_SESSION
Y si dices que no te muestra nada quiere decir que no hay nada en tu session, por alguna razon, tal vez sean problema de cookies como te dice levitha, puede ser que tu navegador este con alguna configuracion que no permita cookies, ahora si no tal vez puedan ser problemas en la configuracion de tu php.ini.
ahora sobre register_globals lo que hace es esto, si lo tienes en on:
Código PHP:
<?
    
//puedes acceder a tus variables en la sesion, en el POST, GET, etc
    //solamente poniendo el nombre de las variables como haces aqui
    
session_register("usrOk"); 
    
$usrOk "activa";
     
//pero cuando esta en off no puedes hacer esto y si quieres acceder a tus
     //variables en cualquiera de los ambitos del POST, GET, SESSION, SERVER,etc
     //tendrias que hacerlo de otra manera
     //asi asignas a la session
     
$_SESSION['usrOk']="activa";
     
//asi recuperas de la sesion, igual es con $_POST, $_GET, ....
     
$valorUsrOk=$_SESSION['activa'];
?>
espero haberte ayudado un poco y haber si nos dice s como te va, cya
__________________
"El Conocimiento es de todos, no solo de algunos"
  #9 (permalink)  
Antiguo 04/02/2006, 12:50
Avatar de MWNS  
Fecha de Ingreso: julio-2003
Mensajes: 528
Antigüedad: 20 años, 9 meses
Puntos: 2
hola deadlykyo, levhita, nuevamente gracias.

como les decia al comienzo del post... cuando pruebo el registro de sesiones en mi pc, (phptriad), todo corre bien, la sesion queda registrada , eso quiere decir que la opción de que la causa del fallo sea el browser (creo) queda descartada...

dices que la causa posiblemente podría ser en el php.ini, de ser así que es lo que podría estar funcionando mal? ...te agradecería me orientaras en esa parte para poder hablar con mi proveedor...

gracias
__________________
MWNS
Mario Navas
http://marionavas.com
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 21:23.