Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/12/2012, 14:08
kosios
 
Fecha de Ingreso: marzo-2009
Mensajes: 90
Antigüedad: 15 años, 2 meses
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.