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($sql, Config::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
}
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
}
}
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";
}
Muchas gracias por leer el post, y espero muchas alternativas para realizar este método.