Tutorial
Hola como primer paso en este tutorial. Para la creación de este módulo, crearemos una base de datos en cotejación “utf8_general_ci” posteriormente crearemos una tabla en la base de datos, con los campos: id(INT primary key), nombre(text), password (text), perfil(text), fecha(timestamp), ultimo_login(datetime)esta tabla se llamara “usuarios”.
Ingresamos a nuestro servidor local y creamos 3 carpetas, “controladores, modelos, vistas” y creamos un archivo “index.php”. creamos un archivo .htaccess desde sublime y lo guardamos ahí mismo.
Abrimos el archivo index, y colocamos este código, en el cual mandaremos a llamar archivos que aún no creamos, aquí definiremos el nombre que se le otorgara a cada archivo y la carpeta en la que se guardaran.
En el archivo index.php
<?php
require_once "controladores/plantilla.controlador.php";
require_once "controladores/usuarios.controlador.php";
require_once "modelos/usuarios.modelo.php";
$plantilla-> new ControladorPlantilla();
$plantilla->ctrPlantilla();
?>
Ahora que ya hacemos eso, ahora guardamos y cerramos, ahora hacemos creamos el archivo “plantilla.controlador.php” en la carpeta “controladores”
<?php
class ControladorPlantilla{
static public function ctrPlantilla(){
include "vistas/plantilla.php";
}
}
<?
En el archivo plantilla, pondremos como primer paso una variable para que nos lea las sesiones
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<?php
if (isset($_GET["ruta"])) {
if ($_GET["ruta"] == "usuarios" ){
include "modulos/" . $_GET["ruta"] . ".php";
} else {
include "no se encontro la ruta";
}?>
</body>
</html>
Ahí estamos diciendo que si la variable ruta trae el nombre de usuarios puede entrar y si no se encuentra ese archivo en la carpeta de módulos, nos muestra un mensaje de error. Enseguida el archivo access lo editamos y ponemos el siguiente código, en el cual se especifica la variable ruta la cual nos ayuda a identificar en el archivo anterior
Options All –Indexes
RewriteEngine On
RewriteRule ^([-a-zA-Z0-9]+)$ index.php?ruta=$1
A continuación creamos dentro de la carpeta de “vistas” una carpeta llamada “módulos” y dentro de de este archivo creamos un archivo llamado “usuarios.php”
Alta de usuarios a la base de dato.
<?php
if($_SESSION["perfil"] !="Admin"){
echo "<script>
window.location = 'inicio';
</script>";
return;
}
?>
<hr>
<form role="form" method="POST" enctype="multipart/form-data">
<input type="texto" class="form-control" name="nombreUsuario" required="required" placeholder="Ingrese el nombre"><br>
<input type="texto" class="form-control" name="ingUsuario" required="required" placeholder="Ingrese el usuario"><br>
<input type="password" class="form-control" name="UsuarioPass" required="required" placeholder="*******"><br>
<select name="perfilUsuario" class="form-control">
<option value"">Seleccione perfil</option>
<option value="Admin">Admin</option>
<option value="vendedor">Vendedor</option>
</select><br>
<button type="submit" class="btn btn-success btn-lg">Guardar Usuario</button>
<?php
$crearUser = new ControladorUsuarios();
$crearUser -> ctrIngresoUser();
?>
</form>
Después de tener eso,que simplemente es un formulario que al final tienen un llamado a un controlador de usuario, creamos ese controlador en la carpeta de controladores, el archivo de sebe de llamar tal cual lo nombramos en el index.php. Enseguida creamos ese archivo, el cual debe de contar con el siguiente código, en el cual se valida que la variable tenga datos, después se crea una variable con el nombre de la tabla de la base de datos, los datos se meten en un arreglo
<?php
class ControladorUsuarios{
static public function ctrIngresoUser(){
if(isset($_POST["ingUsuario"])){
$nombreUsuario = $_POST["nombreUsuario"];
$ingUsuario = $_POST["ingUsuario"];
$password = md5($_POST["UsuarioPass"]);
$perfilUsuario = $_POST["perfilUsuario"];
$tabla = "usuarios";
$datos = array(
"nombre" => $nombreUsuario,
"usuario"=> $ingUsuario,
"password" => $password,
"perfil" => $perfilUsuario
);
$respuesta = ModeloUsuarios::MdlIngresarUsuario($tabla,$datos);
if($respuesta == "ok"){
echo "<script>
alert('Se ha ingresado un usuario correctamento');
window.location='./';
</script>";
}
}
}
Enseguida se manda a un modelo de usuarios, para esto debemos crear el archivo de “usuarios.modelo.php”. En el cual se realiza la inserción a la base de datos, mandando los datos necesarios. Si la respuesta que nos manda el modelo de usuarios es correcta nos notifica con una alerta de java. En el siguiente código solo realizamos la inserción de los datos.
<?php
require_once "conexion.php";
class ModeloUsuarios{
static public function MdlIngresarUsuario($tabla, $datos){
$stm = Conexion::conectar()->prepare("INSERT INTO $tabla(nombre, usuario, password, perfil) VALUES(:nombre, :usuario, :password, :perfil)");
$stm->bindparam(":nombre", $datos["nombre"],PDO::PARAM_STR);
$stm->bindparam(":usuario", $datos["usuario"],PDO::PARAM_STR);
$stm->bindparam(":password", $datos["password"],PDO::PARAM_STR);
$stm->bindparam(":perfil", $datos["perfil"],PDO::PARAM_STR);
if($stm->execute()){
return "ok";
}else{
return "Error";
}
$stm->close();
$stm = null;
}
<?php
class Conexion{
static public function conectar(){
$link= new PDO("mysql:host=localhost;dbname=cursos","root", "");
$link->exec("set names utf8");
return $link;
}
}
?>
Ya que tenemos este modulo completo de alta de usuarios ahora pasamos al login de usuarios, para esto es necesario crear un archivo llamado login.php, en el cual pondremos el formulario correspondiente para poder iniciar. En este código hacemos un simple formulario en el cual mandamos llamar una función al controlador de usuarios.
<h1>inicio de sesion</h1>
<form role="form" method="POST" enctype="multipart/form-data" <br>
<input type="texto" class="form-control" name="ingUsuario" required="required" placeholder="Ingrese el usuario"><br>
<input type="password" class="form-control" name="UsuarioPass" required="required" placeholder="*******"><br>
<button type="submit" class="btn btn-success">Entrar</button>
<?php
$IngresarUser = new ControladorUsuarios();
$IngresarUser -> ctrInicio();
?>
</form>
Controlador de usuarios.
Ahora en el controlador de usuario agregamos esa función.
static public function ctrInicio(){
if(isset($_POST["ingUsuario"])){
$ingUsuario = $_POST["ingUsuario"];
$password = md5($_POST["UsuarioPass"]);
$tabla = "usuarios";
$item="usuario";
$valor = $ingUsuario;
$respuesta = ModeloUsuarios::MdlMostrarUsuario($tabla, $item, $valor);
if($respuesta ["usuario"]== $ingUsuario && $respuesta["password"] == $password){
$_SESSION["iniciarSesion"] = "ok";
$_SESSION["id"] = $respuesta["id"];
$_SESSION["nombre"] =$respuesta["nombre"];
$_SESSION["usuario"] =$respuesta["usuario"];
$_SESSION["perfil"] =$respuesta["perfil"];
date_default_timezone_set("America/Mexico_City");
$fecha = date("Y-m-d");
$hora = date("h:i:s");
$fechaActual = $fecha.' '.$hora;
$item = "ultimo_login";
$valor1 = $fechaActual;
$item2 = "id";
$valor2= $respuesta["id"];
$ultimoLogin = ModeloUsuarios::mdlUpdateUser($tabla, $item, $valor1,$item2,$valor2);
if($ultimoLogin == "ok"){
echo "<script>
alert('Usted ha iniciado Sesion');
window.location='inicio';
</script>";
}
}else{
echo "no entra";
}
}
}
En ese código llamamos a una función del modelo de la cual mandamos llamar la comparación y en caso de que sea exitosa, actualizamos el ultimo login, este código se agrega al archivo de modelo usuarios.
static public function MdlMostrarUsuario($tabla, $item, $valor){
$stm = Conexion::conectar()->prepare("SELECT * FROM $tabla WHERE usuario = :$item");
$stm->bindparam(":".$item, $valor,PDO::PARAM_STR);
$stm->execute();
return $stm->fetch();
$stm->close();
$stm = null;
}
static public function mdlUpdateUser($tabla, $item, $valor,$item2,$valor2){
$stm = Conexion::conectar()->prepare("UPDATE $tabla SET $item = :$item WHERE $item2 = :$item2");
$stm->bindparam(":".$item, $valor, PDO::PARAM_STR);
$stm->bindparam(":".$item2, $valor2,PDO::PARAM_STR);
if($stm->execute()){
return "ok";
}else{
return "Error";
}
$stm->close();
$stm = null;
}
De esta manera, realizamos la alta y el inicio de sesión de nuestros usuarios, los archivos finales quedarían acomodados de esta manera. de igual manera pueden observar el tutorial en youtube.
Raíz
-Vistas/modulos/usuarios.php, inicio.php, login.php
-Modelos/usuarios.modelo.php, conexion.php
-Controladores/usuarios.controlador.php, plantilla.controlador.php
-index.php
-.htaccess