Foros del Web » Programando para Internet » PHP »

No se donde puede estar mal

Estas en el tema de No se donde puede estar mal en el foro de PHP en Foros del Web. Se puede registrar una session dentro de una clase -> método? Código PHP:      function  loguearUsuario ( $usuario ,  $password )     {              $sql = ...
  #1 (permalink)  
Antiguo 09/04/2003, 02:08
Avatar de urjose  
Fecha de Ingreso: diciembre-2001
Mensajes: 5.286
Antigüedad: 22 años, 3 meses
Puntos: 1
No se donde puede estar mal

Se puede registrar una session dentro de una clase -> método?

Código PHP:
    function loguearUsuario($usuario$password)
    {
            
$sql="SELECT * FROM logueo WHERE logueoUsuario='".$usuario."' and logueoPassword='".$password."'";
            if (
$this->manejaDb->query($sql)){ 
                if (
$this->manejaDb->numLineas()>0) { 
                    
$this->mensaje("10"); // Usted es un usuario valido.
                    
session_start();
                    
session_register("id");
                    
$row=$this->manejaDb->getArray();
                    
$id=$row["logueoClave"];
                } else {
                    
$this->mensaje("11"); // Usted no es un usuario valido.
                
// End If
            
} else {
                    
$this->mensaje("9"); // Ocurrio un error en el sistema.
            
// End If
    


Tengo eso pero no funciona, y si lo hago por "fuera" de la clase arreglando un poco funciona bien

Gracias
  #2 (permalink)  
Antiguo 09/04/2003, 02:13
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 22 años, 3 meses
Puntos: 17
Seguramente se trata de alguna variable que la función debería recibir y no recibe.
Probablemente, se trate de la conexión MySQL y la selección de la tabla.
__________________
M a l d i t o F r i k i
  #3 (permalink)  
Antiguo 09/04/2003, 02:16
Avatar de urjose  
Fecha de Ingreso: diciembre-2001
Mensajes: 5.286
Antigüedad: 22 años, 3 meses
Puntos: 1
eh, nop

despues puse un

Código PHP:
echo $row["logueoClave"]; 
y me muestra un 7, o sea si jala el campo.

Luego imprimo

Código PHP:
echo $id
Y me muestra también 7.

Será que cuando registro una sesión esta solo es valida dentro de la clase o algo así?

  #4 (permalink)  
Antiguo 09/04/2003, 02:24
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 22 años, 3 meses
Puntos: 17
Y, exactamente, ¿que error devuelve PHP? ¿O el problema es que ni siquiera devuelve error?
__________________
M a l d i t o F r i k i
  #5 (permalink)  
Antiguo 09/04/2003, 11:37
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Yo usaría los arrays superglobales? $_SESSION

session_start();
$_SESSION['id']=$this->manejaDb->getArray();

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 09/04/2003, 13:45
Avatar de urjose  
Fecha de Ingreso: diciembre-2001
Mensajes: 5.286
Antigüedad: 22 años, 3 meses
Puntos: 1
De hecho use arrays superglobales en pruebas posteriores y el problema es que no devuelve error, simplemente la sesión fuera de la clase desaparece. Pero pues ya mejor lo solucione generando afuera la sesión aunque quería que fuera dentro pero bueno, nada es perfecto.

Saludos
  #7 (permalink)  
Antiguo 09/04/2003, 14:01
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 9 meses
Puntos: 16
Hola,

Segun el manual session_register() solo funciona con variables globales. En tu caso $id no es global sino local a la funcion. Ademas, creo que primero debes asignar el valor a la variable y luego hacer el session_register().

Me extraña eso que dices que usando los superglobales fuera de la clase desaparezca la sesion. Pensaba en las sessiones como "objetos globales" a los que daba igual donde los activases con session_start(), siempre y cuando esta funcion se llame antes de acceder a $_SESSION.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #8 (permalink)  
Antiguo 09/04/2003, 14:27
Avatar de urjose  
Fecha de Ingreso: diciembre-2001
Mensajes: 5.286
Antigüedad: 22 años, 3 meses
Puntos: 1
Cita:
Segun el manual session_register() solo funciona con variables globales. En tu caso $id no es global sino local a la funcion. Ademas, creo que primero debes asignar el valor a la variable y luego hacer el session_register().
De hecho era lo que me suponia. Por que lo solucione fuera de la clase.

Y si se puede hacer


Código PHP:
session_register("id");
$id=$row["logueClave"]; 
Así lo he trabajado siempre.

Y pues por las pruebas que hice, la session solo funcionaba dentro de la clase a menos que alguien explique lo que paso.

Saludos
  #9 (permalink)  
Antiguo 09/04/2003, 14:37
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Y la clase esa la trabajas haciendo include() o requiere() en tus scripts .. o lo haces via include_once() ? ..

Tal vez si usas include_once() (o requiere_once() ) y metes el inicio de sesion dentro de tu classe .. es normal que no se inicie session_start() mas q una vez y no siempre que se requiera acceder a un valor de una variable de sesión.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #10 (permalink)  
Antiguo 09/04/2003, 14:57
Avatar de urjose  
Fecha de Ingreso: diciembre-2001
Mensajes: 5.286
Antigüedad: 22 años, 3 meses
Puntos: 1
De hecho uso include_once()

Dejen q tenga tiempo, la pruebo y les digo los resultados con include()

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 02:19.