Anda di halaman 1dari 4

CONEXIN A LA BASE DE DATOS UTILIZANDO PDO

<?php
1
class Db{
2
private static $conexion=null;
3
private function __construct(){}
4
5
public static function conectar(){
6
$pdo_options[PDO::ATTR_ERRMODE]=PDO::ERRMODE_EXCEPTION;
7
self::$conexion=new
8
PDO('mysql:host=localhost;dbname=baselogin','root','root123456',$pdo_options);
9
return self::$conexion;
10
}
11
}
12
?>

MTODOS INSERTAR PARA EL USUARIO, VALIDAR EL


NOMBRE DE USUARIO Y VALIDAR USUARIO Y
CONTRASEA PARA EL LOGIN

1 <?php
2 require_once('conexion.php');
3 require_once('usuario.php');
4
5 class CrudUsuario{
6
7 public function __construct(){}
8
9 //inserta los datos del usuario
10 public function insertar($usuario){
11 $db=DB::conectar();
12 $insert=$db->prepare('INSERT INTO USUARIOS VALUES(NULL,:nombre, :clave)');
13 $insert->bindValue('nombre',$usuario->getNombre());
14 //encripta la clave
15 $pass=password_hash($usuario->getClave(),PASSWORD_DEFAULT);
16 $insert->bindValue('clave',$pass);
17 $insert->execute();
18 }
19
20 //obtiene el usuario para el login
21 public function obtenerUsuario($nombre, $clave){
22 $db=Db::conectar();
23 $select=$db->prepare('SELECT * FROM USUARIOS WHERE
24 nombre=:nombre');//AND clave=:clave
25 $select->bindValue('nombre',$nombre);
26 $select->execute();
27 $registro=$select->fetch();
28 $usuario=new Usuario();
29 //verifica si la clave es conrrecta
30 if (password_verify($clave, $registro['clave'])) {
31 //si es correcta, asigna los valores que trae desde la base de datos
32 $usuario->setId($registro['Id']);
33 $usuario->setNombre($registro['nombre']);
34 $usuario->setClave($registro['clave']);
35 }
36 return $usuario;
37 }
38
39 //busca el nombre del usuario si existe
40 public function buscarUsuario($nombre){
41 $db=Db::conectar();
42 $select=$db->prepare('SELECT * FROM USUARIOS WHERE nombre=:nombre');
43 $select->bindValue('nombre',$nombre);
44 $select->execute();
45 $registro=$select->fetch();
46 if($registro['Id']!=NULL){
47 $usado=False;
48 }else{
49 $usado=True;
50 }
51 return $usado;
52 }
53 }
?>

Algo interesante en el cdigo anterior es la lnea 15 en


la cual estamos encriptando la clave del usuario
utilizando la funcin password_hash() de manera que
no sea legible, por ejemplo para el administrador de la
base de datos o en el caso de algn hackeo, as
mismo en la lnea 29 se utiliza la funcin
password_verify() que verifica la clave real con la clave
encriptada.
CONTROLADOR PARA MANEJAR LAS PETICIONES DESDE
LA VISTA
<?php
1
require_once('usuario.php');
2
require_once('crud_usuario.php');
3
require_once('conexion.php');
4
5
//inicio de sesion
6
session_start();
7
8
$usuario=new Usuario();
9
$crud=new CrudUsuario();
10
//verifica si la variable registrarse est definida
11
//se da que est definicda cuando el usuario se loguea, ya que la enva en la peticin
12
if (isset($_POST['registrarse'])) {
13
$usuario->setNombre($_POST['usuario']);
14
$usuario->setClave($_POST['pas']);
15
if ($crud->buscarUsuario($_POST['usuario'])) {
16
$crud->insertar($usuario);
17
header('Location: index.php');
18
}else{
19
header('Location: error.php?mensaje=El nombre de usuario ya existe');
20
}
21
22
}elseif (isset($_POST['entrar'])) { //verifica si la variable entrar est definida
23
$usuario=$crud->obtenerUsuario($_POST['usuario'],$_POST['pas']);
24
// si el id del objeto retornado no es null, quiere decir que encontro un registro en la base
25
if ($usuario->getId()!=NULL) {
26
$_SESSION['usuario']=$usuario; //si el usuario se encuentra, crea la sesin de usuario
27
header('Location: cuenta.php'); //envia a la pgina que simula la cuenta
28
}else{
29
header('Location: error.php?mensaje=Tus nombre de usuario o clave son incorrectos'); //
30
cuando los datos son incorrectos envia a la pgina de error
31
}
32
}elseif(isset($_POST['salir'])){ // cuando presiona el botn salir
33
header('Location: index.php');
34
unset($_SESSION['usuario']); //destruye la sesin
35
}
36
?>

Antes de ejecutar el proyecto, no olvides ejecutar el


script, para generar la base de datos con la tabla
usuarios, as mismo no olvides cambiar el usuario y
contrasea de tu base de datos, a continuacin te dejo
la Descarga completa del ejemplo.
ARTCULOS RELACIONADOS:
Te gustara aprender a programar con PHP de manera
profesional y sobre todo prctica?, aprovecha mi
curso Aprende a crear una Aplicacin Web de
Historias Clnicas con PHP.
Si te gust este tutorial no olvides comentar y
compartirlo, nos vemos en la prxima entrada.

Anda mungkin juga menyukai