Foros del Web » Programando para Internet » PHP »

Problema para logear contra usuarios de base de datos y no contra usuarios almacenado

Estas en el tema de Problema para logear contra usuarios de base de datos y no contra usuarios almacenado en el foro de PHP en Foros del Web. hola amigos espero me puedan ayudar . tengo una aplicacion web a la cual para ingresar se autentica contra una tabla de la base de ...
  #1 (permalink)  
Antiguo 25/10/2012, 12:21
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Problema para logear contra usuarios de base de datos y no contra usuarios almacenado

hola amigos espero me puedan ayudar .

tengo una aplicacion web a la cual para ingresar se autentica contra una tabla de la base de datos (usuarios almacenados en la base de datos en la tabla usuarios) y ahora requiero autenticar contra la base de datos(usuarios de bases de datos). hasta el momento solo tengo un usuario de la base de datos

estoy utilizando PDO y postgresql

en mi idex.php tengo

Código PHP:
Ver original
  1. require_once( dirname(__FILE__) . '/config/conexion.php' );
  2.  
  3. /*directorio donde estan los controladores/*/$dirControllers = "controllers/";
  4. /*controlador por defecto*/$controlDefault = "login_";
  5. /* accion por defecto*/$accionDefault = "menu_users";


este es el archivo donde se encuentra en controlador por defecto
login_Controller.php y contiene esto

/*------------------ Funcion Login Usuarios ------------------*/
function login_users()
{
require 'models/login_Model.php';

if($_POST)
{
$ls = new Login();
$ls -> validate_users($db);
}

require 'views/login.php';
}

para trabajar esta funcion require login_Model.php y contiene lo siguiente

Código PHP:
Ver original
  1. global $servidor, $bd, $usuario, $contrasenia;
  2.     $db = new PDO('pgsql:host=' . $servidor . ';dbname=' . $bd, $usuario, $contrasenia);
  3.  
  4.     class Login
  5.     {
  6.         /*-----------------------------------------  Validar Usuarios -----------------------------------------*/
  7.         public function validate_users($db)
  8.         {
  9.        
  10.             $usuario = $_POST['usuario'];
  11.             $clave = $_POST['clave'];
  12.        
  13.             $consulta = $db->prepare("select usu_usuario, usu_clave from usuarios where usu_usuario='$usuario' and usu_clave='$clave' and usu_estado = 1");
  14.             $consulta->execute();
  15.            
  16.             $count = $consulta->rowCount();
  17.  
  18.             if($count==1){
  19.             $_SESSION['nombre'] = $_POST['usuario'];
  20.             $_SESSION['clave'] = $_POST['clave'];
  21.             header("Refresh: 0; URL=/volcanicos/");
  22.             }
  23.             else {
  24.             //echo "usuario o contraseña incorrecta";
  25.             header("location:views/login_error.php");
  26.             }
  27.         }

en conexion.php

Código PHP:
Ver original
  1. <?php
  2.  
  3.     $servidor = 'localhost';
  4.     $bd = 'volcanoes';
  5.     $usuario = 'postgres';
  6.     $contrasenia = '*****';
  7.    
  8. ?>
  #2 (permalink)  
Antiguo 28/10/2012, 21:14
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: Problema para logear contra usuarios de base de datos y no contra usuarios

¿y cual es el problema?
  #3 (permalink)  
Antiguo 28/10/2012, 21:21
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: Problema para logear contra usuarios de base de datos y no contra usuarios

el problema es que esta estructura sirve para el usuario postgres y ahora la necesito para los usuarios que se crearon en el motor de base de datos

mi idea es en el archivo conexion.php


Código PHP:
Ver original
  1. <?php
  2.  
  3.     $servidor = 'localhost';
  4.     $bd = 'volcanoes';
  5.     $usuario =$_POST['usuario'];
  6.     $contrasenia = $_POST['clave'];
  7.    
  8. ?>


y en login_Controller.php

Código PHP:
Ver original
  1. /*------------------  Funcion Login Usuarios  ------------------*/
  2.     function login_users()
  3.     {
  4.        
  5.  
  6.        if($_POST)
  7.         {
  8.             require 'models/login_Model.php';
  9.        
  10.               $ls = new Login();
  11.               $ls -> validate_users($db);
  12.         }
  13.        
  14.         require 'views/login.php';
  15.     }



pero no se si desde login_Model.php mediante
Código PHP:
Ver original
  1. global $servidor, $bd, $usuario, $contrasenia;
  2.     $db = new PDO('pgsql:host=' . $servidor . ';dbname=' . $bd, $usuario, $contrasenia);


puedo realizar la conexion a la base de datos ?


o vos con tu gran experiencia que me aconsejas
  #4 (permalink)  
Antiguo 28/10/2012, 21:53
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Problema para logear contra usuarios de base de datos y no contra usuarios

Ufff que error usar global. Te recomiendo que mejor crees la conexión en una clase aparte y solo es cuestión de llamarla en el controlador, o si quieres crea la conexión en ese mismo controlador y luego la usas a través de toda la clase. Pero usar globar y lo que queires lograr es un error de encapsulamiento. Y también es un problema a la hora de hacer debug y entre otras cosas.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 29/10/2012, 08:50
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: Problema para logear contra usuarios de base de datos y no contra usuarios

abimaelrc gracias por responder estoy un poco confundido

me podrias indicar un poco por favor

yo lo haria de la siguiente manera espero me corrigan

en el index.php tendira
Código PHP:
Ver original
  1.  
  2.     if ((isset($_SESSION['nombre']) && $_SESSION['nombre'] != "") || (isset($_SESSION['clave']) && $_SESSION['clave'] != ""))
  3.     {  
  4.         //<-----------------------------------------------  Logged User ---------------------------------->//
  5.        
  6.         //require_once( dirname(__FILE__) . '/config/conexion.php' );
  7.  
  8.         $dirControllers = "controllers/";
  9.         $controlDefault = "login_";
  10.         $accionDefault = "menu_users";
  11.  
  12.         if(! empty($_GET['controller']))
  13.               $controller = $_GET['controller'];
  14.         else
  15.               $controller = $controlDefault;
  16.  
  17.         if(! empty($_GET['accion']))
  18.               $accion = $_GET['accion'];
  19.         else
  20.               $accion = $accionDefault;
  21.  
  22.         $controller = $dirControllers . $controller . 'Controller.php';
  23.  
  24.         if(is_file($controller))
  25.               require_once $controller;
  26.         else
  27.               echo '<script languaje="Javascript">location.href="views/error_controller.php"</script>';
  28.  
  29.         if(is_callable($accion))
  30.               $accion();
  31.         else
  32.               echo '<script languaje="Javascript">location.href="views/error_accion.php"</script>';
  33.     }
  34.    
  35.     else
  36.     {
  37.         //<-----------------------------------------------  SignUp User ---------------------------------->//
  38.        
  39.         //require_once( dirname(__FILE__) . '/config/conexion.php' );
  40.  
  41.         $dirControllers = "controllers/";
  42.         $controlDefault = "login_";
  43.         $accionDefault = "login_users";
  44.  
  45.         if(! empty($_GET['controller']))
  46.               $controller = $_GET['controller'];
  47.         else
  48.               $controller = $controlDefault;
  49.  
  50.         if(! empty($_GET['accion']))
  51.               $accion = $_GET['accion'];
  52.         else
  53.               $accion = $accionDefault;
  54.  
  55.         $controller = $dirControllers . $controller . 'Controller.php';
  56.  
  57.         if(is_file($controller))
  58.               require_once $controller;
  59.         else
  60.               //die('El Controlador No Existe - 404 not found');
  61.               echo '<script languaje="Javascript">location.href="views/error_controller.php"</script>';
  62.  
  63.         if(is_callable($accion))
  64.               $accion();
  65.         else
  66.               //die('La accion No Existe - 404 not found');
  67.               echo '<script languaje="Javascript">location.href="views/error_accion.php"</script>';
  68.     }
  69.          
  70. ?>

en el login_Controller.php

Código PHP:
Ver original
  1. function login_users()
  2.     {
  3.        
  4.        if($_POST)
  5.         {
  6.               require 'models/conexion.php';       
  7.               require 'models/login_Model.php';
  8.              
  9.               $lc=new Conexion();
  10.               $lc -> conectar($usuario,$contrasenia);
  11.              
  12.              
  13.               $ls = new Login();
  14.               $ls -> validate_users($db);
  15.         }
  16.        
  17.         require 'views/login.php';
  18.     }


y en conexion.php

Código PHP:
Ver original
  1. class Conexion
  2.     {
  3.         /*----------------------------------------- Realizar Conexion-----------------------------------------*/
  4.         public function conectar($usuario,$contrasenia){
  5.         {
  6.                 $usuario = $_POST['usuario'];
  7.                 $contrasenia = $_POST['clave'];
  8.  
  9.                
  10.             try {
  11.                  $db = new PDO('pgsql:host=localhost;dbname=volcanoes',$usuario,$contrasenia);
  12.                 }catch(PDOException $e) {
  13.                 echo $e->getMessage();
  14.                 }
  15.         }
  16.  
  17.         }
  18.        
  19.     }


este es el error que me marca

Fatal error: Call to a member function prepare() on a non-object in C:\websites\volcanicos\models\login_Model.php on line 13

y la linea 13 contiene
Código PHP:
Ver original
  1. $consulta = $db->prepare("select usu_usuario, usu_clave from usuarios where usu_usuario='$usuario' and usu_clave='$clave' and usu_estado = 1");

Última edición por Montes28; 29/10/2012 a las 09:08
  #6 (permalink)  
Antiguo 29/10/2012, 10:10
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: Problema para logear contra usuarios de base de datos y no contra usuarios

Lee sobre el ámbito de variables, las variables que declaras en una función no se propagan a otras funciones.

Saludos.
  #7 (permalink)  
Antiguo 29/10/2012, 10:36
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: Problema para logear contra usuarios de base de datos y no contra usuarios

GatorV lei lo que me indicas http://hacerpaginaswebconphp.com/amb...iables-en-php/

pero me siento un poco confundido

en login_Controller.php instancio la class Conexion


Código PHP:
Ver original
  1. function login_users()
  2.     {
  3.        
  4.        if($_POST)
  5.         {
  6.               require 'models/conexion.php';       
  7.               require 'models/login_Model.php';
  8.              
  9.               $lc=new Conexion();
  10.               $lc -> conectar($usuario,$contrasenia);
  11.              
  12.              
  13.               $ls = new Login();
  14.               $ls -> validate_users($db);
  15.         }
  16.        
  17.         require 'views/login.php';
  18.     }

y en class conexion realizo la conexion mediante una funcion que retorna $db

Código PHP:
Ver original
  1. public function conectar($usuario,$contrasenia){
  2.         {
  3.                 $usuario = $_POST['usuario'];
  4.                 $contrasenia = $_POST['clave'];
  5.  
  6.                
  7.             try {
  8.                  $db = new PDO('pgsql:host=localhost;dbname=volcanoes',$usuario,$contrasenia);
  9.                 }catch(PDOException $e) {
  10.                 //echo $e->getMessage();
  11.                 echo "Usuario y Clave Invalidas";
  12.                 }
  13.                
  14.                 return $db;
  15.         }

pero como desde la public function validate_users($db) como accedo a la varable de public function conectar($usuario,$contrasenia)

y segun lo leido

"Si tenemos funciones, cada función accede sólo a sus variables (no puede acceder a las de fuera o globales), desde fuera no se puede acceder a las variables de las funciones"

no se como realizar dicha enlace entre las funciones
  #8 (permalink)  
Antiguo 29/10/2012, 10:43
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: Problema para logear contra usuarios de base de datos y no contra usuarios

Un ejemplo simple:
Código PHP:
Ver original
  1. function foo() {
  2.      $bar = new FooBar();
  3.      return $bar;
  4. }
  5.  
  6. function bar($bar) {
  7.      $bar->foo();
  8. }
  9.  
  10. $bar = foo();
  11. bar($bar);

Saludos.
  #9 (permalink)  
Antiguo 29/10/2012, 11:05
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: Problema para logear contra usuarios de base de datos y no contra usuarios

GatorV gracias por responder , por ayudarme y disculpame por no ver lo que para ti es obvio pero sigo confundido

me confundo es por lo que trabajo con archivos diferentes osea login_Controller.php , conexion.php , login_Model.php

en login_Controller.php lamo a las funciones y compruebo que la funcion conectar se este ejecuntando cuando ingreso valores que no son correctos y me devuelve el error

Código PHP:
Ver original
  1. function login_users()
  2.     {
  3.        
  4.        if($_POST)
  5.         {
  6.               require 'models/conexion.php';       
  7.               require 'models/login_Model.php';
  8.              
  9.               $lc=new Conexion();
  10.               $lc -> conectar();
  11.              
  12.              
  13.               $ls = new Login();
  14.               $ls -> validate_users($db);
  15.         }
  16.        
  17.         require 'views/login.php';
  18.     }

el problema viene es en el archivo login_Model.php no se como invocar la class Conexion

Código PHP:
Ver original
  1. class Login
  2.     {
  3.        
  4.        
  5.         /*------- Validar Usuarios -----------------------------------------*/
  6.         public function validate_users($db)
  7.         {
  8.        
  9.             $usuario = $_POST['usuario'];
  10.             $clave = $_POST['clave'];
  11.        
  12.            
  13.            
  14.             $consulta = $db->prepare("select usu_usuario, usu_clave from usuarios where usu_usuario='$usuario' and usu_clave='$clave' and usu_estado = 1");
  15.             $consulta->execute();
  16.        
  17.             while($fila = $consulta->fetch())
  18.             {
  19.            
  20.                 $_SESSION['nombre'] = $_POST['usuario'];
  21.                 $_SESSION['clave'] = $_POST['clave'];
  22.                 header("Refresh: 0; URL=/volcanicos/");
  23.                 die();
  24.                
  25.             }
  26.            
  27.              if (!$this->consulta)
  28.                 {
  29.                     $_SESSION['invalidate_user'] = true;
  30.                 }
  31.                
  32.         }

atal error: Call to a member function prepare() on a non-object in C:\websites\volcanicos\models\login_Model.php on line 17

esta es la linea 17
Código PHP:
Ver original
  1. $consulta = $db->prepare("select usu_usuario, usu_clave from usuarios where usu_usuario='$usuario' and usu_clave='$clave' and usu_estado = 1");
  #10 (permalink)  
Antiguo 29/10/2012, 11:24
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: Problema para logear contra usuarios de base de datos y no contra usuarios

Es por eso, por el ámbito de variables, necesitas pasarle el objeto DB a tu función para que haga el trabajo, ya la tienes declarada solo tienes que pasarle el recurso correcto:
Código PHP:
Ver original
  1. $lc=new Conexion();
  2.               $db = $lc -> conectar();
  3.              
  4.              
  5.               $ls = new Login();
  6.               $ls -> validate_users($db);
  #11 (permalink)  
Antiguo 29/10/2012, 11:34
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: Problema para logear contra usuarios de base de datos y no contra usuarios

GatorV gracias , aun no me funciona hice lo que me indicas


login_Controller.php
Código PHP:
Ver original
  1. function login_users()
  2.     {
  3.        
  4.        if($_POST)
  5.         {
  6.               require 'models/conexion.php';       
  7.               require 'models/login_Model.php';
  8.              
  9.                
  10.              
  11.               $lc=new Conexion();
  12.               $db = $lc -> conectar();
  13.              
  14.              
  15.               $ls = new Login();
  16.               $ls -> validate_users($db);
  17.  
  18.         }
  19.        
  20.         require 'views/login.php';
  21.     }


pero continua el error
Fatal error: Call to a member function prepare() on a non-object in C:\websites\volcanicos\models\login_Model.php on line 16

Código PHP:
Ver original
  1. $consulta = $db->prepare("select usu_usuario, usu_clave from usuarios where usu_usuario='$usuario' and usu_clave='$clave' and usu_estado = 1");
  #12 (permalink)  
Antiguo 29/10/2012, 11:58
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: Problema para logear contra usuarios de base de datos y no contra usuarios

Haz un var_dump() antes de prepare y revisa que tipo de variable es $db.

Saludos.
  #13 (permalink)  
Antiguo 29/10/2012, 12:16
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: Problema para logear contra usuarios de base de datos y no contra usuarios

Código PHP:
Ver original
  1. var_dump($db);                 
  2. $consulta = $db->prepare("select usu_usuario, usu_clave from usuarios where usu_usuario='$usuario' and usu_clave='$clave' and usu_estado = 1");
  3. $consulta->execute();


el resultado es NULL

no se que hacer , cual sera el problema?
  #14 (permalink)  
Antiguo 29/10/2012, 12:19
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: Problema para logear contra usuarios de base de datos y no contra usuarios

vi el errror

no tenia el parametro de la funcion validate_users ($db)

Código PHP:
Ver original
  1. public function validate_users($db)
  2.         {.....}


lo tenia asi

Código PHP:
Ver original
  1. public function validate_users()
  2.         {.....}
  #15 (permalink)  
Antiguo 29/10/2012, 12:45
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: Problema para logear contra usuarios de base de datos y no contra usuarios

GatorV gracias por la ayuda que me bridas , te cuento que ya no me sale el error pero no logro mi mision

en login_Controller.php realizo la validacion del usuario y consulto a que perfil tiene el usuario

Código PHP:
Ver original
  1. /*------------------  Funcion Login Usuarios  ------------------*/
  2.     function login_users()
  3.     {
  4.        
  5.        if($_POST)
  6.         {
  7.               require 'models/conexion.php';       
  8.               require 'models/login_Model.php';
  9.              
  10.                
  11.              
  12.               $lc=new Conexion();
  13.               $db = $lc -> conectar();
  14.              
  15.              
  16.               $ls = new Login();
  17.               $ls -> validate_users($db);
  18.  
  19.         }
  20.        
  21.         require 'views/login.php';
  22.     }

Código PHP:
Ver original
  1. function menu_users()
  2.     {
  3.    
  4.        
  5.         require 'models/conexion.php';
  6.         require 'models/login_Model.php';
  7.  
  8.  
  9. $lc=new Conexion();
  10.         $db = $lc -> conectar();
  11.        
  12.        
  13.          $ls = new Login();
  14.          $ls -> validate_profile($db);
  15.                    
  16.         require 'views/main.php';
  17.        
  18.     }


y en el login_Model.php tengo

Código PHP:
Ver original
  1. <?php
  2.  
  3.    
  4.     class Login
  5.     {
  6.        
  7.            
  8.         /*-----------------------------------------  Validar Usuarios -----------------------------------------*/
  9.         public function validate_users($db)
  10.         {
  11.        
  12.             $usuario = $_POST['usuario'];
  13.             $clave = $_POST['clave'];
  14.        
  15.             echo var_dump($usuario)."<br>";
  16.             echo var_dump($clave )."<br>";
  17.             echo var_dump($db)."<br>";                 
  18.             $consulta = $db->prepare("select usu_usuario, usu_clave from usuarios where usu_usuario='$usuario' and usu_clave='$clave' and usu_estado = 1");
  19.             $consulta->execute();
  20.             echo var_dump($consulta)."<br>";
  21.            
  22.        
  23.             while($fila = $consulta->fetch())
  24.             {
  25.            
  26.                 $_SESSION['nombre'] = $_POST['usuario'];
  27.                 $_SESSION['clave'] = $_POST['clave'];
  28.                
  29.                
  30.                 header("Refresh: 0; URL=/volcanicos/");
  31.                 die();
  32.                
  33.             }
  34.            
  35.              if (!$this->consulta)
  36.                 {
  37.                     $_SESSION['invalidate_user'] = true;
  38.                 }
  39.                
  40.         }
  41.        
  42.         /*-----------------------------------------  Validar Perfil -----------------------------------------*/
  43.         public function validate_profile($db)
  44.         {
  45.             $consulta = $db->prepare("select id_usuarios,perfil from usuarios where usu_usuario='$_SESSION[nombre]'");
  46.             $consulta->execute();
  47.        
  48.             while($fila = $consulta->fetch())
  49.             {
  50.            
  51.                 $_SESSION['perfil'] = $fila['perfil'];
  52.                 $_SESSION['id_usuarios'] = $fila['id_usuarios'];
  53.                
  54.             }
  55.            
  56.        
  57.         }
  58.        
  59.    
  60.        
  61.     }
  62.  
  63. ?>

y en el main.php tengo

Código PHP:
Ver original
  1. <?
  2.  
  3. switch ($_SESSION['perfil'])
  4.     {
  5. /*----------------- Menu Administrador ----------------------*/
  6.         case '1':
  7.         include 'views/menus/m_admin.php';
  8.         break;
  9.        
  10.         case '2':
  11.         include 'views/menus/m_asis.php';
  12.         break;
  13.  
  14.            
  15.     }
  16. ?>


no se porque no me funciona
  #16 (permalink)  
Antiguo 29/10/2012, 13:17
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: Problema para logear contra usuarios de base de datos y no contra usuarios

¿y cual es el error?
  #17 (permalink)  
Antiguo 29/10/2012, 13:55
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: Problema para logear contra usuarios de base de datos y no contra usuarios

GatorV


Fatal error: Call to a member function prepare() on a non-object in C:\websites\volcanicos\models\login_Model.php on line 50

esta es la linea 50
Código PHP:
Ver original
  1. $consulta = $db->prepare("select id_usuarios,perfil from usuarios where usu_usuario='$_SESSION[nombre]'");
  2. $consulta->execute();
  #18 (permalink)  
Antiguo 29/10/2012, 13:59
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: Problema para logear contra usuarios de base de datos y no contra usuarios

Es lo mismo, tienes que pasarle el objeto DB a tu función, tal como lo resolviste en el primero.

Saludos
  #19 (permalink)  
Antiguo 29/10/2012, 14:08
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: Problema para logear contra usuarios de base de datos y no contra usuarios

eso es lo que hice

Código PHP:
Ver original
  1. function menu_users()
  2.     {
  3.    
  4.        
  5.         require 'models/conexion.php';
  6.         require 'models/login_Model.php';
  7.        
  8.  
  9.        
  10.         $lc=new Conexion();
  11.                 $db = $lc -> conectar();
  12.        
  13.        
  14.          $ls = new Login();
  15.          $ls -> validate_profile($db);
  16.                    
  17.         require 'views/main.php';
  18.        
  19.     }
  #20 (permalink)  
Antiguo 29/10/2012, 14:50
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: Problema para logear contra usuarios de base de datos y no contra usuarios

estoy a punto de lograr mi mision

en el formulario de login.php estoy ingresando los datos usuario , clave y lo raro es que no me aparece mas errores pero si me aparce la pantalla blanca en la url http://localhost/volcanicos/ le doy f5 para actualizar y me sale la ventana del navegador en la cual dice

Confirmar

Para mostrar esta pagina,Firefox necesita enviar informacion que repetira cualquier acción(como) una busqueda o una confirmacion de compra) realizada anteriormente.

Reenviar


si le doy Reenviar si veo la pagina que requiero.


para explicar un poco asi tengo mi index.php

Código PHP:
Ver original
  1.  
  2.     if ((isset($_SESSION['nombre']) && $_SESSION['nombre'] != "") || (isset($_SESSION['clave']) && $_SESSION['clave'] != ""))
  3.     {  
  4.         //<-----------------------------------------------  Logged User ---------------------------------->//
  5.        
  6.         $dirControllers = "controllers/";
  7.         $controlDefault = "login_";
  8.         $accionDefault = "menu_users";
  9.  
  10.         if(! empty($_GET['controller']))
  11.               $controller = $_GET['controller'];
  12.         else
  13.               $controller = $controlDefault;
  14.  
  15.         if(! empty($_GET['accion']))
  16.               $accion = $_GET['accion'];
  17.         else
  18.               $accion = $accionDefault;
  19.  
  20.         $controller = $dirControllers . $controller . 'Controller.php';
  21.  
  22.         if(is_file($controller))
  23.               require_once $controller;
  24.         else
  25.               echo '<script languaje="Javascript">location.href="views/error_controller.php"</script>';
  26.  
  27.         if(is_callable($accion))
  28.               $accion();
  29.         else
  30.               echo '<script languaje="Javascript">location.href="views/error_accion.php"</script>';
  31.     }
  32.    
  33.     else
  34.     {
  35.         //<-----------------------------------------------  SignUp User ---------------------------------->//
  36.        
  37.  
  38.         $dirControllers = "controllers/";
  39.         $controlDefault = "login_";
  40.         $accionDefault = "login_users";
  41.  
  42.         if(! empty($_GET['controller']))
  43.               $controller = $_GET['controller'];
  44.         else
  45.               $controller = $controlDefault;
  46.  
  47.         if(! empty($_GET['accion']))
  48.               $accion = $_GET['accion'];
  49.         else
  50.               $accion = $accionDefault;
  51.  
  52.         $controller = $dirControllers . $controller . 'Controller.php';
  53.  
  54.         if(is_file($controller))
  55.               require_once $controller;
  56.         else
  57.               //die('El Controlador No Existe - 404 not found');
  58.               echo '<script languaje="Javascript">location.href="views/error_controller.php"</script>';
  59.  
  60.         if(is_callable($accion))
  61.               $accion();
  62.         else
  63.               //die('La accion No Existe - 404 not found');
  64.               echo '<script languaje="Javascript">location.href="views/error_accion.php"</script>';
  65.     }


en mi login_Controller.php

Código PHP:
Ver original
  1. /*------------------  Funcion Login Usuarios  ------------------*/
  2.     function login_users()
  3.     {
  4.        
  5.        if($_POST)
  6.         {
  7.               require 'models/conexion.php';       
  8.               require 'models/login_Model.php';
  9.              
  10.                
  11.              
  12.               $lc=new Conexion();
  13.               $db = $lc -> conectar();
  14.              
  15.              
  16.               $ls = new Login();
  17.               $ls -> validate_users($db);
  18.  
  19.         }
  20.        
  21.         require 'views/login.php';
  22.     }
  23.  
  24.  
  25.     /*------------------  Funcion Menu Usuarios  ------------------*/
  26.     function menu_users()
  27.     {
  28.    
  29.      if($_POST)
  30.         {
  31.        
  32.         require 'models/conexion.php';
  33.         require 'models/login_Model.php';
  34.    
  35.        
  36.         $lc=new Conexion();
  37.         $db = $lc -> conectar();
  38.        
  39.        
  40.          $ls = new Login();
  41.          $ls -> validate_profile($db);
  42.        
  43.         }
  44.                    
  45.         require 'views/main.php';
  46.        
  47.     }
  48.    
  49.    
  50.     /*------------------  Funcion Cerrar Sesion  ------------------*/
  51.     function close_session()
  52.     {
  53.    
  54.         require 'models/conexion.php';
  55.         require 'models/login_Model.php';
  56.        
  57.        $ls = new Login();
  58.            
  59.         session_start();
  60.         session_unset();
  61.         session_destroy(); 
  62.        
  63.         require 'views/exit.php';
  64.        
  65.     }

login.Model.php

Código PHP:
Ver original
  1. class Login
  2.     {
  3.        
  4.            
  5.         /*-----------------------------------------  Validar Usuarios -----------------------------------------*/
  6.         public function validate_users($db)
  7.         {
  8.        
  9.             $usuario = $_POST['usuario'];
  10.             $clave = $_POST['clave'];
  11.        
  12.             //echo var_dump($usuario)."<br>";
  13.             //echo var_dump($clave )."<br>";
  14.             //echo var_dump($db)."<br>";                   
  15.             $consulta = $db->prepare("select usu_usuario, usu_clave from usuarios where usu_usuario='$usuario' and usu_clave='$clave' and usu_estado = 1");
  16.             $consulta->execute();
  17.             //echo var_dump($consulta)."<br>";
  18.            
  19.             $count = $consulta->rowCount();
  20.             //echo $count;
  21.            
  22.            
  23.             while($fila = $consulta->fetch())
  24.             {
  25.            
  26.             $_SESSION['nombre'] = $_POST['usuario'];
  27.             $_SESSION['clave'] = $_POST['clave'];
  28.             //echo $fila['usu_usuario'];
  29.            
  30.             header("Refresh: 0; URL=/volcanicos/");
  31.             die();
  32.            
  33.             }
  34.            
  35.    
  36.            
  37.              if (!$this->consulta)
  38.                 {
  39.                     $_SESSION['invalidate_user'] = true;
  40.                 }
  41.                
  42.         }
  43.        
  44.         /*-----------------------------------------  Validar Perfil -----------------------------------------*/
  45.         public function validate_profile($db)
  46.         {
  47.             $consulta = $db->prepare("select id_usuarios,perfil from usuarios where usu_usuario='$_SESSION[nombre]'");
  48.             $consulta->execute();
  49.        
  50.             while($fila = $consulta->fetch())
  51.             {
  52.            
  53.                 $_SESSION['perfil'] = $fila['perfil'];
  54.                 $_SESSION['id_usuarios'] = $fila['id_usuarios'];
  55.                
  56.             }
  57.            
  58.        
  59.         }
  60.        
  61.    
  62.        
  63.     }

main.php

Código PHP:
Ver original
  1. switch ($_SESSION['perfil'])
  2.     {
  3. /*----------------- Menu Administrador ----------------------*/
  4.         case '1':
  5.         include 'views/m_admin.php';
  6.         break;
  7.        
  8.         case '2':
  9.         include 'views/m_asis.php';
  10.         break;
  11.  
  12.            
  13.     }
  #21 (permalink)  
Antiguo 29/10/2012, 16:24
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: Problema para logear contra usuarios de base de datos y no contra usuarios

tengo problema con

Código PHP:
Ver original
  1. header("Refresh: 0; URL=/volcanicos/");

si lo quito y coloco echo "entre";

funciona

que estoy haciendo mal?
  #22 (permalink)  
Antiguo 29/10/2012, 23:19
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: Problema para logear contra usuarios de base de datos y no contra usuarios

GatorV y amigos lo solucione

cree una funcion para realizar el resto de las operaciones a la base de datos (insert,update,delete).


en conexion.php

Código PHP:
Ver original
  1. public function conec(){
  2.  
  3.                  $use =$_SESSION['nombre'];
  4.                  $pass =$_SESSION['clave'] ;   
  5.                  
  6.                  
  7.                  
  8.        
  9.             try {
  10.                  $db = new PDO('pgsql:host=localhost;dbname=volcanoes',$use,$pass);
  11.                 }catch(PDOException $e) {
  12.                 echo $e->getMessage();
  13.                
  14.                 }
  15.                
  16.                 return $db;
  17.         }

Etiquetas: contra, logear, sql, tabla, usuarios, almacenar
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 11:03.