Foros del Web » Programando para Internet » PHP »

Registrar session de un login con PDO

Estas en el tema de Registrar session de un login con PDO en el foro de PHP en Foros del Web. Hola amigos, he estado buscando diferentes soluciones, y quiero tener una vision diferente de parte de Ud, para la siguiente cuestion. Como premisas: 1- Conexion ...
  #1 (permalink)  
Antiguo 04/12/2012, 14:08
 
Fecha de Ingreso: marzo-2009
Mensajes: 90
Antigüedad: 15 años, 1 mes
Puntos: 0
Registrar session de un login con PDO

Hola amigos, he estado buscando diferentes soluciones, y quiero tener una vision diferente de parte de Ud, para la siguiente cuestion.

Como premisas:
1- Conexion BD PDO MYSQL.
2- Libreria PDO Patron Singleton.
3- Declaracion de Session_start() aun indefinida.
4- Registrar una session con id del usuario de una tabla llamada "USUARIOS"

Problematica:

Realizar un método para loquearse o iniciar sesion...similiar al siguiente.

Codigo conexion Mysql normal.
Código PHP:
 public function login($correo,$password)
    {      
        
$sql "select * from usuarios where 
        correo='$correo' and password='$password'"
;
        
$res mysql_query($sqlConfig::con());

        if (
mysql_num_rows($res) == 0) {
        
            
header("location:../../index.php?m=1"); // No existe el usuario
        
} else {
        
            if (
$reg mysql_fetch_array($res)) {
                
$_SESSION["admin_session"] = $reg["id_usuario"];
                
header("location: ../admin/home.php");  // OK el usuario existe
            
// fin del if
        
}// fin del else
    

Solución

Intentando realizar o copiar el método anterior pero con PDO. he escrito el siguiente código que no me produce ningún resultado satisfactorio.

Código PHP:
public function login($correo$password)
    {
           
$sql="SELECT * from usuarios
                    WHERE correo='$correo' and password='$password' "
;
        
$nRows $this->_getDbh()->query($sql)->fetchAll(); // numero de registros
        
$stm $this->_getDbh()->query($sql);
        if (
count($nRows) == 0) {
            
header("Location: ../views/login.php?m=2"); // no existe el usuario 
        
} else {
            while(
$reg $stm->fetch(PDO::FETCH_ASSOC)){
            
$_SESSION["ses_user"] = $reg["id_usuario"];
    
header("Location: ../views/cpanel.php"); // OK, el usuario existe
        
}    
    } 
Conlusion:

Si coloco session_start; en la libreria PDO inmediatamente saca un error, si coloco la session_start; en mi archivo php (class Usuarios) donde manejo los métodos. el login se ejecuta y me lleva al cpanel.php...peroo....

Al preguntar en el archivo Cpanel.php y aquellos donde se requiere
Código PHP:
<?php
if(isset($_SESSION['ses_user']))
{

?>
<htm>el resto</html>
<?php 
}
else
{
   echo 
"no hay session registrada";
}
Efectivamente se salta al "ELSE", obviamente porque no registro la session.

Muchas gracias por leer el post, y espero muchas alternativas para realizar este método.
  #2 (permalink)  
Antiguo 04/12/2012, 16:35
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 11 meses
Puntos: 394
Respuesta: Registrar session de un login con PDO

1. No veo el session_start() en las paginas donde se requiere utilizar sesiones
2. realice un print_r ($_SESSION) para verificar que la matriz tenga datos o que si exista
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #3 (permalink)  
Antiguo 04/12/2012, 18:26
 
Fecha de Ingreso: marzo-2009
Mensajes: 90
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Registrar session de un login con PDO

Gracias Jotaincubus por leer el tema y por escribir...Como te haz dado cuenta en las premisas del post y la conclusión del mismo...afirmo claramente. que declaro el session_star; en la librería PDO y sale error, Luego la declaro en la clase Usuarios... estas opciones es para tener disponible la session y no tener q andar de archivo en archivo colocando session_start....ok aclarado nuevamente eso... creo q la el problema esta en el método login. al no registrar la session...con el id del usuario.

Nuevamente gracias por tu apreciación.

Etiquetas: login, pdo, session
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 09:45.