Foros del Web » Programando para Internet » PHP »

No reconoce registro de sesion en la pagina

Estas en el tema de No reconoce registro de sesion en la pagina en el foro de PHP en Foros del Web. hola amigos estoy intentando registrar unas variables por sesion pero no me las reconoce como que se pierden si las valida bien en la clase ...
  #1 (permalink)  
Antiguo 31/08/2009, 18:37
Avatar de miguec04  
Fecha de Ingreso: agosto-2008
Ubicación: Cimitarra, Santander
Mensajes: 378
Antigüedad: 15 años, 8 meses
Puntos: 15
Exclamación No reconoce registro de sesion en la pagina

hola amigos estoy intentando registrar unas variables por sesion pero no me las reconoce como que se pierden si las valida bien en la clase pero no la reconoce en el resto de pagina cuando las vuelvo a utilizar.

bueno este es el codigo donde registro las variables

Código PHP:
$consulta $db->consulta("SELECT * FROM usuarios WHERE usucla='$cla' ");
            if(
$db->num_rows($consulta)>0)
            {
                
                
$row $db->fetch_array($consulta);
                                
                
session_start();
                
session_register("usuario","cargo","nombres","apellidos");
                
                
$usuario $row['usucod'];
                
$nombres $row['usunom'];
                
$apellidos $row['usuape'];
                
$cargo $row['usuniv'];
                
                echo 
'<HEAD>
                <META HTTP-EQUIV="Refresh" CONTENT="0; URL=index.php?comp=login?bienvenido=Usuario">
                </HEAD>
                <body><div align="right">Ingresando...</div></body>
                </html>'
;
                exit;
                } 
y el me la imprime, no me redireccion ni con el header ni con un javascript me toco de esta forma. bueno entonces voy a utilizar estas sesion registradas en otra clase o en la misma plantilla y no me aparece llenas, tan vacias no me muestra nada.

que puede ser amigos?? muchas gracias
__________________
Desoftc Technology - Miguel Carmona
Creaciones Inteligentes - Cimitarra Colombia
[email protected]
http://www.desoftc.com.co
  #2 (permalink)  
Antiguo 31/08/2009, 19:40
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Respuesta: No reconoce registro de sesion en la pagina

www.php.net/session_register

Cita:
Caution

If you want your script to work regardless of register_globals, you need to instead use the $_SESSION array as $_SESSION entries are automatically registered. If your script uses session_register(), it will not work in environments where the PHP directive register_globals is disabled.
Osease, necesitas register_globals activadas, si quieres que funcione sin importar esta directiva debes usar $_SESSION ... pero sigue leyendo:
Cita:
Note: register_globals: important note
As of PHP 4.2.0, the default value for the PHP directive register_globals is off, and it was completely removed as of PHP 6.0.0. The PHP community discourages developers from relying on this directive, and encourages the use of other means, such as the superglobals.
register_globals por default están desactivadas y se desaconseja activarlas. En PHP6 (no sé en php5.3) ya no será opcional su manejo ... actualmente en PHP 5.3 session_register() es obsoleta.

Y, por si fuera poco ... sigue:
Cita:
Caution

This registers a global variable. If you want to register a session variable from within a function, you need to make sure to make it global using the global keyword or the $GLOBALS[] array, or use the special session arrays as noted below.
No muestras cuando intentas recuperar el valor, pero si piensas utilizarlas (ojalá a este punto ya no) dentro de una clase, tienes que utilizar la palabra clave global.


En resumen, lo mejor será que te actualizaras. No uses session_register() y utiliza el arreglo superglobal $_SESSION. Más en la documentación y en las FAQ.

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

"100 años después, la revolución no es con armas, es intelectual y digital"
  #3 (permalink)  
Antiguo 31/08/2009, 19:41
Avatar de miguec04  
Fecha de Ingreso: agosto-2008
Ubicación: Cimitarra, Santander
Mensajes: 378
Antigüedad: 15 años, 8 meses
Puntos: 15
Respuesta: No reconoce registro de sesion en la pagina

Ok muchas gracias amigos no sabia que ya habia php 6 jejeje perdón por la ignorancia.

Muchas gracias.
__________________
Desoftc Technology - Miguel Carmona
Creaciones Inteligentes - Cimitarra Colombia
[email protected]
http://www.desoftc.com.co
  #4 (permalink)  
Antiguo 31/08/2009, 19:44
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Respuesta: No reconoce registro de sesion en la pagina

No problem ... si tienes problemas puedes mencionarlos

(y no ... aún no hay PHP6, pero algún día lo habrá )
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #5 (permalink)  
Antiguo 01/09/2009, 15:15
Avatar de miguec04  
Fecha de Ingreso: agosto-2008
Ubicación: Cimitarra, Santander
Mensajes: 378
Antigüedad: 15 años, 8 meses
Puntos: 15
Respuesta: No reconoce registro de sesion en la pagina

compañeros fijesen yo mando las variables $_POST['nombre_usuario'] y $_POST['contrasena'] desde una clase llamada formulario y de ahi llamo otra clase llamada validacion donde compruebo que no vengan vacias y que exitan en la base de datos, pero el problema es que me inicia la sesion dentro de la clase pero no en toda la pagina y no se que hacer lo hize de esta otra forma y tampoco funciono

Cita:
if($db->num_rows($consulta)>0)
{

$row = $db->fetch_array($consulta);

session_start();

$_SESSION['codigo']=$row['usucod'];
$_SESSION['nombres'] = $row['usunom'];
$_SESSION['apellidos'] = $row['usuape'];
$_SESSION['cargo'] = $row['usuniv'];

echo '<HEAD>
<META HTTP-EQUIV="Refresh" CONTENT="0; URL=index.php?comp=login?bienvenido=Usuario">
</HEAD>
<body><div align="right">Ingresando...</div></body>
</html>';
//exit;
}
no se que hacer por favor ayuda, muchas gracias.
__________________
Desoftc Technology - Miguel Carmona
Creaciones Inteligentes - Cimitarra Colombia
[email protected]
http://www.desoftc.com.co
  #6 (permalink)  
Antiguo 01/09/2009, 15:21
 
Fecha de Ingreso: abril-2009
Ubicación: Miami
Mensajes: 182
Antigüedad: 15 años
Puntos: 8
Respuesta: No reconoce registro de sesion en la pagina

hola ... probaste poniendo en la PRIMERA LÍNEA session_start(); y no en la 3ra o mas abajo ????? en todas las páginas que uses y captures la SESION usa esto session_start(); en la primera, no dejes ni un ENTER en el medio ... salu2
  #7 (permalink)  
Antiguo 01/09/2009, 15:28
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Respuesta: No reconoce registro de sesion en la pagina

Cita:
Iniciado por miguec04 Ver Mensaje
[...] el problema es que me inicia la sesion dentro de la clase pero no en toda la pagina [...]
¿?

Tu, en cada petición, tienes un script PHP. No pienses en clases, no pienses en páginas; por cada petición, se ejecuta un script PHP .... punto.

Además, no tiene sentido hacer la redirección que haces, ¿por qué no desde el propio servidor?

www.php.net/header

(¿consultaste las FAQ como sugerí? ... ... creo recordar se maneja como ejemplo, precisamente ... un login de usuario )
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #8 (permalink)  
Antiguo 01/09/2009, 15:31
Avatar de miguec04  
Fecha de Ingreso: agosto-2008
Ubicación: Cimitarra, Santander
Mensajes: 378
Antigüedad: 15 años, 8 meses
Puntos: 15
pongo un pedazo mas largo del codigo

Cita:
public function contenido($db)
{
//Verifico que los campos solicitados no vengan vacios.
$usu=$_POST['usuario'];
$cla=$_POST['clave'];

if($usu!="" && $cla!="")
{
$consulta = $db->consulta("SELECT * FROM usuarios WHERE usucla='$cla' ");
if($db->num_rows($consulta)>0)
{

$row = $db->fetch_array($consulta);

session_start();

$_SESSION['codigo']=$row['usucod'];
$_SESSION['nombres'] = $row['usunom'];
$_SESSION['apellidos'] = $row['usuape'];
$_SESSION['cargo'] = $row['usuniv'];


echo '<HEAD>
<META HTTP-EQUIV="Refresh" CONTENT="0; URL=index.php?comp=login?bienvenido=Usuario">
</HEAD>
<body><div align="right">Ingresando...</div></body>
</html>';
//exit;
}

}
creo que ahí esta bien, no se si sea por la re-direccion pero ya no se ni que pueda ser.

pero la redireccion con el header no funciona, ya la he probado tampoco funciona una con javascript solo funciona esa y no se porque pero voy a echarle un vistaso en este momento a los faqs muchas gracias.
__________________
Desoftc Technology - Miguel Carmona
Creaciones Inteligentes - Cimitarra Colombia
[email protected]
http://www.desoftc.com.co

Última edición por GatorV; 01/09/2009 a las 17:44
  #9 (permalink)  
Antiguo 01/09/2009, 17:45
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: No reconoce registro de sesion en la pagina

Si no te sirve header() es probable que ya estes enviando algo de contenido al browser, por lo que ya no puedes re-enviar las cabeceras. En ese caso session_start() tampoco te va a funcionar, ya que como te dije ya estas enviando cabeceras antes.

Es recomendable que actives el mostrar errores en tu php.ini así puedes ver el problema y si estas enviando o no cabeceras antes de las llamadas session_start/header.

Saludos.
  #10 (permalink)  
Antiguo 02/09/2009, 10:45
Avatar de miguec04  
Fecha de Ingreso: agosto-2008
Ubicación: Cimitarra, Santander
Mensajes: 378
Antigüedad: 15 años, 8 meses
Puntos: 15
Respuesta: No reconoce registro de sesion en la pagina

ya lo hize, me registro las variables y me redirecciona pero con el ;html meta, mas tardecito pongo el codigo que aqui en estos momentos no le tengo, pero muchas gracias a todos, ahora explico la solucuion que encontre.
__________________
Desoftc Technology - Miguel Carmona
Creaciones Inteligentes - Cimitarra Colombia
[email protected]
http://www.desoftc.com.co
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 13:18.