Foros del Web » Programando para Internet » PHP »

se puede crear una funcion o clase para conectar a una base de datos recibiendo varia

Estas en el tema de se puede crear una funcion o clase para conectar a una base de datos recibiendo varia en el foro de PHP en Foros del Web. hola amigos se puede crear una funcion o clase para conectar a una base de datos recibiendo por post el nombre de usuario y contraseña ...
  #1 (permalink)  
Antiguo 27/10/2012, 15:16
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
se puede crear una funcion o clase para conectar a una base de datos recibiendo varia

hola amigos

se puede crear una funcion o clase para conectar a una base de datos recibiendo por post el nombre de usuario y contraseña para el usuario de la base de datos
  #2 (permalink)  
Antiguo 27/10/2012, 15:20
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: se puede crear una funcion o clase para conectar a una base de datos recib

Si, se puede

deberías probarlo antes de preguntar.

mandale los parametros necesarios a la función y listo
  #3 (permalink)  
Antiguo 27/10/2012, 16:28
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: se puede crear una funcion o clase para conectar a una base de datos recib

rodrigo791 gracias por responder

me podrias indicar mediante un ejemplo

mira te indico lo que me pasa

este es mi codigo
Código PHP:
Ver original
  1. global $servidor, $bd, $usuario, $contrasenia;
  2. $db = new PDO('pgsql:host=' . $servidor . ';dbname=' . $bd, $usuario, $contrasenia);
  3.  
  4.  
  5.     class Login
  6.     {
  7.         /*---------------  Validar Usuarios -----------------------------------------*/
  8.         public function validate_users($db)
  9.         {
  10.        
  11.             $usuario = $_POST['usuario'];
  12.             $clave = $_POST['clave'];
  13.        
  14.             $consulta = $db->prepare("select usu_usuario, usu_clave from usuarios where usu_usuario='montes' and usu_clave='montes' and usu_estado = 1");
  15.             $consulta->execute();
  16.        
  17.             while($fila = $consulta->fetch())
  18.             {
  19.            
  20.                 $_SESSION['nombre'] = 'montes';
  21.                 $_SESSION['clave'] = 'montes';
  22.                 header("Refresh: 0; URL=/volcanicos/");
  23.                 die();
  24.                
  25.             }
  26.            
  27.              if (!$this->consulta)
  28.                 {
  29.                     $_SESSION['invalidate_user'] = true;
  30.                 }
  31.                
  32.         }
  33.        
  34.         /*-----------------------------------------  Validar Perfil -----------------------------------------*/
  35.         public function validate_profile($db)
  36.         {
  37.             $consulta = $db->prepare("select id_usuarios,perfil from usuarios where usu_usuario='montes'");
  38.             $consulta->execute();
  39.        
  40.             while($fila = $consulta->fetch())
  41.             {
  42.            
  43.                 $_SESSION['perfil'] = $fila['perfil'];
  44.                 $_SESSION['id_usuarios'] = $fila['id_usuarios'];
  45.                
  46.             }
  47.            
  48.        
  49.         }
  50.        
  51.  
  52.    
  53.     }


y tengo un archivo conexion.php el cual suministra las variables a global $servidor, $bd, $usuario, $contrasenia;

<?php

$servidor = 'localhost';
$bd = 'mibd';
$usuario = 'postgres';
$contrasenia = '****';

?>


como puedo realizar el cambio para que sea una funcion a la cual le entran datos por post?
  #4 (permalink)  
Antiguo 27/10/2012, 16:42
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: se puede crear una funcion o clase para conectar a una base de datos recib

pues no incluyas el script ese y listo, si lo incluís entonces o tomas los datos que te llegan por POST o los del fichero, en caso de que no te lleguen datos de POST usa los del fichero y te conectas con el usuario administrador digamos, que es postrgress, si te llegan datos conectate con los datos que te mandan y listo

cuando digo los datos que te llegan por POST me refiero a esto
$usuario = $_POST['usuario'];
$clave = $_POST['clave'];

usas eso para conectarte

Código PHP:
Ver original
  1. function conectar($usuario,$pass){
  2. new PDO('pgsql:host=' . $servidor . ';dbname=' . $bd, $usuario, $pass);
  3. }

no tengo mucha experiencia en PDO pero supongo que con algo como esto lo haces.
  #5 (permalink)  
Antiguo 27/10/2012, 16:50
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: se puede crear una funcion o clase para conectar a una base de datos recib

rodrigo791 gracias por responder

y como invoco la funcion para realizar la consulta?


Código PHP:
Ver original
  1. public function validate_profile($db)
  2.         {
  3. $consulta = $db->prepare("select id_usuarios,perfil from usuarios where usu_usuario='montes'");
  4.             $consulta->execute();
  5.        
  6.             while($fila = $consulta->fetch())
  7.             {
  8.            
  9.                 $_SESSION['perfil'] = $fila['perfil'];
  10.                 $_SESSION['id_usuarios'] = $fila['id_usuarios'];
  11.                
  12.             }
  13.            
  14.        
  15.         }
  #6 (permalink)  
Antiguo 27/10/2012, 16:57
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: se puede crear una funcion o clase para conectar a una base de datos recib

No entiendo tu pregunta.

para llamar la función solo llamala y listo, validate_profile($db),
$db no va a poder ser eso que tenes en el script ese que llamas.
$db va a ser lo mismo que tenes en el scritp conexion ese que tenes pero en realidad de usar esos datos del usuario postgres usas los datos el usuario que te llega por POST, creo que no tiene mucha ciencia.
  #7 (permalink)  
Antiguo 27/10/2012, 17:26
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: se puede crear una funcion o clase para conectar a una base de datos recib

rodigo vos me indicas que haga esto


Código PHP:
Ver original
  1. $usuario = $_POST['usuario'];
  2. $pass= $_POST['clave']
  3.  
  4. function conectar($usuario,$pass){
  5. new PDO('pgsql:host=' . $servidor . ';dbname=' . $bd, $usuario, $pass);
  6. }
  7.  
  8.  validate_users($db)
  9.  
  10. $consulta = $db->prepare("select id_usuarios,perfil from usuarios where usu_usuario='montes'");

cual seria el valor de $db ?
  #8 (permalink)  
Antiguo 27/10/2012, 17:59
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: se puede crear una funcion o clase para conectar a una base de datos recib

rodrigo791 mira como trabaja mi aplicacion y me das un consejo

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.         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.     }


conexion.php

Código PHP:
Ver original
  1. $servidor = 'localhost';
  2. $bd = 'mibd';
  3. $usuario = 'postgres';
  4. $contrasenia = '****';

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


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

ahora necesito conectarme a la base de datos con el usuario y la clave que me llegan por post

estoy un poco confundido

con tu gran experiencia me podrias orientar un poco

gracias
  #9 (permalink)  
Antiguo 27/10/2012, 18:05
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: se puede crear una funcion o clase para conectar a una base de datos recib

Lo que te dije es que en vez de usar los datos del script conexion, usas los que te llegan por POST, sino entendi mal lo que queres hacer es conectarte AL SERVIDOR, con los datos que te llegan del usuario, tales como su nombre y contraseña, por POST.

Si es esto, entonces no tiene ciencia, create una función que se llame conectar, o algo asi comote dije mas arriba, la cual tiene los datos de usuario que llegan por POST y te conectas al servidor con esos datos, de mas está decir que tenes que tener el usuario creado en tu servidor, sino será imposible, y no me refiero a un usuario creado en una tabla llamada usuarios, me refiero a un usuario real, como el usuario postgres, supongo que sabes de que hablo, no es complicado.

Resumen: no uses conexion.php en cada archivo de tu sistema, solo usa la función conectar que te indique arriba y conectate al servidor, luego almacenas en una variable SESSION el recurso $db, para tenerlo presente siempre, tan simple como eso, porque si no guardas en sessiones $db que va a ser lo que utilices para tus consultas, etc entonces tendrías que llamar continuamente a la función conectar, o tener un script pero no sería lo correcto para lo que queres.
  #10 (permalink)  
Antiguo 27/10/2012, 18:35
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: se puede crear una funcion o clase para conectar a una base de datos recib

rodrigo791 gracias por responder y por tenerme paciencia

queria pedirte en que parte de mi codigo debo de colocar la funcion?

index.php

login_Controller.php

login_Model.php
  #11 (permalink)  
Antiguo 27/10/2012, 18:50
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: se puede crear una funcion o clase para conectar a una base de datos recib

pues en el archivo que recibas los datos del usuario, si los recibis en index, entonces ahi hace la función, y como te dije guarda el $db de la función en una variable se session, asi lo podes seguir utilizando.

EDITADO: perdon, lo que tenes que almacenar en una variable de sesion son los datos del servidor, no $db, no leí bien
me refiero a esto pgsql.

Última edición por rodrigo791; 27/10/2012 a las 19:06

Etiquetas: clase, funcion, recibiendo, varia, usuarios
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 03:11.