Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE TABLE usuarios(
- id INT NOT NULL UNIQUE AUTO_INCREMENT,
- tipo_de_usuario VARCHAR(100) NOT NULL,
- nombre VARCHAR(25) NOT NULL UNIQUE,
- email VARCHAR(255) NOT NULL UNIQUE,
- password VARCHAR(255) NOT NULL,
- fecha_registro DATETIME NOT NULL,
- activo TINYINT NOT NULL,
- PRIMARY KEY(id)
- );
- class Usuario {
- private $id;
- private $tipo_de_usuario;
- private $nombre;
- private $email;
- private $password;
- private $fecha_registro;
- private $activo;
- public function __construct($id, $tipo_de_usuario, $nombre, $email, $password, $fecha_registro, $activo){
- $this -> id = $id;
- $this -> tipo_de_usuario = $tipo_de_usuario;
- $this -> nombre = $nombre;
- $this -> email = $email;
- $this -> password = $password;
- $this -> fecha_registro = $fecha_registro;
- $this -> activo = $activo;
- }
- public function obtener_id(){
- return $this -> id;
- }
- public function obtener_tipo_de_usuario(){
- return $this -> tipo_de_usuario;
- }
- public function obtener_nombre(){
- return $this -> nombre;
- }
- public function obtener_email(){
- return $this -> email;
- }
- public function obtener_password(){
- return $this -> password;
- }
- public function obtener_fecha_registro(){
- return $this -> fecha_registro;
- }
- public function esta_activo(){
- return $this -> activo;
- }
- public function cambiar_tipo_de_usuario($tipo_de_usuario){
- $this -> tipo_de_usuario = $tipo_de_usuario;
- }
- public function cambiar_nombre($nombre){
- $this -> nombre = $nombre;
- }
- public function cambiar_email($email){
- $this -> email = $email;
- }
- public function cambiar_password($password){
- $this -> password = $password;
- }
- public function cambiar_activo($activo){
- $this -> activo = $activo;
- }
- }
- class RepositorioUsuario {
- public static function obtener_todos($conexion) {
- $usuarios = array();
- if (isset($conexion)) {
- try {
- include_once 'usuarios.inc.php';
- $sql = "SELECT * FROM usuarios";
- $sentencia = $conexion->prepare($sql);
- $sentencia->execute();
- $resultado = $sentencia->fetchAll();
- if (count($resultado)) {
- foreach ($resultado as $fila) {
- $usuarios[] = new Usuario(
- $fila['id'], $fila['tipo_de_usuario'], $fila['nombre'], $fila['email'], $fila['password'], $fila['fecha_registro'], $fila['activo']
- );
- }
- } else {
- print 'No hay usuarios';
- }
- } catch (PDOException $ex) {
- print 'ERROR' . $ex->GetMessage();
- }
- }
- return $usuarios;
- }
- public static function obtener_numero_usuarios($conexion) {
- $total_usuarios = null;
- if (isset($conexion)) {
- try {
- $sql = "SELECT COUNT(*) as total FROM usuarios";
- $sentencia = $conexion->prepare($sql);
- $sentencia->execute();
- $resultado = $sentencia->fetch();
- $total_usuarios = $resultado['total'];
- } catch (PDOException $ex) {
- print 'ERROR: ' . $ex->GetMessage();
- }
- }
- return $total_usuarios;
- }
- public static function insertar_usuario($conexion, $usuario) {
- $usuario_insertado = false;
- if (isset($conexion)) {
- try {
- $sql = "INSERT INTO usuarios(tipo_de_usuario, nombre, email, password, fecha_registro, activo) VALUES(:tipo_de_usuario, :nombre, :email, :password, NOW(), 0)";
- $sentencia = $conexion->prepare($sql);
- $tipo_de_usuario_temp = $usuario->obtener_tipo_de_usuario();
- $nombretemp = $usuario->obtener_nombre();
- $emailtemp = $usuario->obtener_email();
- $passwordtemp = $usuario->obtener_password();
- $sentencia->bindParam(':tipo_de_usuario', $tipo_de_usuario_temp, PDO::PARAM_STR);
- $sentencia->bindParam(':nombre', $nombretemp, PDO::PARAM_STR);
- $sentencia->bindParam(':email', $emailtemp, PDO::PARAM_STR);
- $sentencia->bindParam(':password', $passwordtemp, PDO::PARAM_STR);
- $usuario_insertado = $sentencia->execute();
- } catch (PDOException $ex) {
- print 'ERROR: ' . $ex->GetMessage();
- }
- }
- return $usuario_insertado;
- }
- public static function tipo_de_usuario_existe($conexion, $tipo_de_usuario){
- $tipo_de_usuario_existe=true;
- if(isset($conexion)){
- try{
- $sql="SELECT * FROM usuarios WHERE tipo_de_usuario= :tipo_de_usuario ";
- $sentencia= $conexion-> prepare($sql);
- $sentencia->bindParam(':tipo_de_usuario', $tipo_de_usuario, PDO::PARAM_STR);
- $sentencia-> execute();
- $resultado= $sentencia -> fetchAll();
- if(count ($resultado)){
- $tipo_de_usuario_existe = true;
- }else{
- $tipo_de_usuario_existe = false;
- }
- } catch (PDOException $ex) {
- print 'ERROR.' . $ex ->getMessage();
- }
- }
- return $tipo_de_usuario_existe;
- }
- public static function nombre_existe($conexion, $nombre){
- $nombre_existe=true;
- if(isset($conexion)){
- try{
- $sql="SELECT * FROM usuarios WHERE nombre= :nombre ";
- $sentencia= $conexion-> prepare($sql);
- $sentencia->bindParam(':nombre', $nombre, PDO::PARAM_STR);
- $sentencia-> execute();
- $resultado= $sentencia -> fetchAll();
- if(count ($resultado)){
- $nombre_existe = true;
- }else{
- $nombre_existe = false;
- }
- } catch (PDOException $ex) {
- print 'ERROR.' . $ex ->getMessage();
- }
- }
- return $nombre_existe;
- }
- public static function email_existe($conexion, $email){
- $email_existe=true;
- if(isset($conexion)){
- try{
- $sql="SELECT * FROM usuarios WHERE email = :email ";
- $sentencia= $conexion-> prepare($sql);
- $sentencia->bindParam(':email', $email, PDO::PARAM_STR);
- $sentencia-> execute();
- $resultado= $sentencia -> fetchAll();
- if(count ($resultado)){
- $email_existe = true;
- }else{
- $email_existe = false;
- }
- } catch (PDOException $ex) {
- print 'ERROR.' . $ex ->getMessage();
- }
- }
- return $email_existe;
- }
- public static function obtener_usuario_por_email($conexion, $email){
- $usuario = null;
- if(isset($conexion)){
- try{
- include_once 'app/usuarios.inc.php';
- $sql="select * FROM usuarios WHERE email = :email";
- $sentencia = $conexion -> prepare($sql);
- $sentencia -> bindParam(':email', $email, PDO::PARAM_STR);
- $sentencia -> execute();
- $resultado = $sentencia ->fetch();
- if(!empty($resultado)){
- $usuario = new Usuario($resultado['id'], $resultado['tipo_de_usuario'], $resultado['nombre'], $resultado['email'], $resultado['password'], $resultado['fecha_registro'], $resultado['activo']);
- }
- } catch (PDOException $ex) {
- print 'ERROR.' . $ex -> getMessage();
- }
- }
- return $usuario;
- }
- public static function obtener_usuario_por_id($conexion, $id){
- $usuario = null;
- if(isset($conexion)){
- try{
- include_once 'app/usuarios.inc.php';
- $sql="select * FROM usuarios WHERE id = :id";
- $sentencia = $conexion -> prepare($sql);
- $sentencia -> bindParam(':id', $id, PDO::PARAM_STR);
- $sentencia -> execute();
- $resultado = $sentencia ->fetch();
- if(!empty($resultado)){
- $usuario = new Usuario($resultado['id'], $resultado['tipo_de_usuario'], $resultado['nombre'], $resultado['email'], $resultado['password'], $resultado['fecha_registro'], $resultado['activo']);
- }
- } catch (PDOException $ex) {
- print 'ERROR.' . $ex -> getMessage();
- }
- }
- return $usuario;
- }
- }
- ?>
- class ValidadorRegistro {
- private $aviso_inicio;
- private $aviso_cierre;
- private $tipo_de_usuario;
- private $nombre;
- private $email;
- private $clave;
- private $error_nombre;
- private $error_email;
- private $error_clave1;
- private $error_clave2;
- public function __construct($tipo_de_usuario, $nombre, $email, $clave1, $clave2, $conexion) {
- $this->aviso_inicio="<br><div class='alert alert-danger' role='alert'>";
- $this->aviso_cierre="</div>";
- $this->tipo_de_usuario = "";
- $this->nombre = "";
- $this->email = "";
- $this->clave ="";
- $this->error_tipo_de_usuario = $this->validar_tipo_de_usuario($tipo_de_usuario);
- $this->error_nombre = $this->validar_nombre($conexion, $nombre);
- $this->error_email = $this->validar_email($conexion, $email);
- $this->error_clave1 = $this->validar_clave1($clave1);
- $this->error_clave2 = $this->validar_clave2($clave1, $clave2);
- if($this->error_clave1 === "" && $this->error_clave2 === ""){
- $this-> clave = $clave1;
- }
- }
- private function variable_iniciada($variable) {
- if (isset($variable) && !empty($variable)) {
- return true;
- } else {
- return false;
- }
- }
- private function validar_tipo_de_usuario($tipo_de_usuario) {
- if ($this->variable_iniciada($tipo_de_usuario)) {
- return "Debes seleccionar un tipo de usuario.";
- } else if ($this->variable_iniciada($tipo_de_usuario)== "Individuo (Persona Natural)"){
- $this-> tipo_de_usuario = $tipo_de_usuario;
- } else if ($this->variable_iniciada($tipo_de_usuario)== "Empresa o negocio (Persona Juridica)"){
- $this-> tipo_de_usuario = $tipo_de_usuario;
- }
- }
- private function validar_nombre($conexion, $nombre) {
- if (!$this->variable_iniciada($nombre)) {
- return "Debes escribir un nombre de usuario.";
- } else {
- $this->nombre = $nombre;
- }
- if (strlen($nombre) < 6) {
- return "El nombre debe ser mas largo de 6 caracteres.";
- }
- if (strlen($nombre) > 30) {
- return "El nombre no debe contener mas de 30 caracteres.";
- }
- if(RepositorioUsuario :: nombre_existe($conexion, $nombre)){
- return "Este nombre de usuario ya esta en uso. Por favor, intenta con otro nombre.";
- }
- return "";
- }
- private function validar_email($conexion, $email) {
- if (!$this->variable_iniciada($email)) {
- return "Debes proporcionar un email.";
- } else {
- $this->email = $email;
- }
- if(RepositorioUsuario :: email_existe($conexion, $email)){
- return "Este email ya esta en uso. Por favor, intenta con otro email o <a href='#'>intente recuperar su contraseña.</a>";
- }
- return "";
- }
- private function validar_clave1($clave1) {
- if (!$this->variable_iniciada($clave1)){
- return "Debes proporcionar una contraseña.";
- }
- return "";
- }
- private function validar_clave2($clave1, $clave2) {
- if (!$this->variable_iniciada($clave1)){
- return "Primero debes escribir en el campo anterior.";
- }
- if (!$this->variable_iniciada($clave2)){
- return "Debes repetir tu contraseña.";
- }
- if ($clave1 !== $clave2){
- return "Ambas contraseñas deben coincidir.";
- }
- return "";
- }
- public function obtener_tipo_de_usuario(){
- return $this-> tipo_de_usuario;
- }
- public function obtener_nombre(){
- return $this-> nombre;
- }
- public function obtener_email(){
- return $this-> email;
- }
- public function obtener_clave(){
- return $this-> clave;
- }
- public function obtener_error_tipo_de_usuario(){
- return $this-> error_tipo_de_usuario;
- }
- public function obtener_error_nombre(){
- return $this-> error_nombre;
- }
- public function obtener_error_email(){
- return $this-> error_email;
- }
- public function obtener_error_clave1(){
- return $this-> error_clave1;
- }
- public function obtener_error_clave2(){
- return $this-> error_clave2;
- }
- public function mostrar_tipo_de_usuario(){
- if($this->tipo_de_usuario!==""){
- echo 'value="'. $this -> tipo_de_usuario . '"';
- }
- }
- public function mostrar_error_tipo_de_usuario(){
- if($this->error_tipo_de_usuario!==""){
- echo $this->aviso_inicio . $this -> error_tipo_de_usuario . $this->aviso_cierre;
- }
- }
- public function mostrar_nombre(){
- if($this->nombre!==""){
- echo 'value="'. $this -> nombre . '"';
- }
- }
- public function mostrar_error_nombre(){
- if($this->error_nombre!==""){
- echo $this->aviso_inicio . $this -> error_nombre . $this->aviso_cierre;
- }
- }
- public function mostrar_email(){
- if($this->email!==""){
- echo 'value="'. $this -> email . '"';
- }
- }
- public function mostrar_error_email(){
- if($this->error_email!==""){
- echo $this->aviso_inicio . $this -> error_email . $this->aviso_cierre;
- }
- }
- public function mostrar_error_clave1(){
- if($this->error_clave1!==""){
- echo $this->aviso_inicio . $this -> error_clave1 . $this->aviso_cierre;
- }
- }
- public function mostrar_error_clave2(){
- if($this->error_clave2!==""){
- echo $this->aviso_inicio . $this -> error_clave2 . $this->aviso_cierre;
- }
- }
- public function registro_valido(){
- if($this-> error_tipo_de_usuario === "" && $this-> error_nombre === "" && $this-> error_email === "" && $this-> error_clave1 === "" && $this-> error_clave2 === ""){
- return true;
- }else{
- return false;
- }
- }
- }
- if(ControlSesion :: sesion_iniciada()){
- Redireccion :: redirigir(SERVIDOR);
- }
- if(isset($_POST['enviar'])){
- Conexion :: abrir_conexion();
- $validador = new ValidadorRegistro($_POST['tipo_de_usuario'], $_POST['nombre'], $_POST['email'], $_POST['clave1'], $_POST['clave2'], Conexion :: obtener_conexion());
- if($validador->registro_valido()){
- $usuario = new Usuario('', $validador-> obtener_tipo_de_usuario(), $validador-> obtener_nombre(), $validador-> obtener_email(), password_hash($validador-> obtener_clave(), PASSWORD_DEFAULT), '', '');
- $usuario_insertado = RepositorioUsuario :: insertar_usuario(Conexion :: obtener_conexion(), $usuario);
- if($usuario_insertado){
- Redireccion :: redirigir(RUTA_REGISTRO_CORRECTO. '/' . $usuario -> obtener_nombre());
- }
- }
- Conexion :: cerrar_conexion();
- }
- $titulo = 'Registrarse';
- <div class="container">
- <div class="jumbotron">
- <h1 class="text-center">Formulario de Registro</h1>
- </div>
- </div>
- <div class="container">
- <div class="row">
- <div class="col-md-6 text-center">
- <div class="panel panel-default">
- <div class="panel-heading">
- <h3 class="panel-title">
- Instrucciones
- </h3>
- </div>
- <div class="panel-body">
- <br>
- <p class="text-justify">
- Para registrarte, introduce un nombre de usuario,
- tu email y una contraseña. El email que introduzcas debe ser real debido a que
- será necesario para que gestiones tu cuenta sin problemas. Te recomendamos que tu contraseña
- al igual que tu nombre de usuario sea alfanumerico, esto quiere decir que debe tener tanto
- letras minusculas y mayusculas, asi como numeros.
- </p>
- <br>
- <br>
- <a href="<?php echo RUTA_LOGIN ?>">¿Ya tienes tu cuenta?
- Inicia Sesion</a>
- <br>
- <br>
- <a href="#">¿Olvidaste tu contraseña?</a>
- <br>
- <br>
- </div>
- </div>
- </div>
- <div class="col-md-6 text-center">
- <div class="panel panel-default">
- <div class="panel-heading">
- <h3 class="panel-title">
- Introduce tus datos:
- </h3>
- </div>
- <div class="panel-body">
- <form role="form" method="post" action="<?php echo RUTA_REGISTRO?>">
- <?php
- if(isset($_POST['enviar'])){
- <form role="form" method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>">
- <div class="form-group">
- <label>Tipo de Usuario: </label>
- <select name="tipo_de_usuario" class="form-control">
- <option>Seleccione... </option>
- <option value="Individuo (Persona Natural)">Individuo (Persona Natural)</option>
- <option value="Empresa o negocio (Persona Juridica)">Empresa o negocio (Persona Juridica)</option>
- </select>
- </div>
- <div class="form-group">
- <label>Nombre de Usuario: </label>
- <input type="text" class="form-control" name="nombre" placeholder="JuanitoPerez666">
- </div>
- <div class="form-group">
- <label>Email: </label>
- <input type="email" class="form-control" name="email" placeholder="juanitoperez_666@ejemplo.com">
- </div>
- <div class="form-group">
- <label>Contraseña: </label>
- <input type="password" class="form-control" name="clave1" placeholder="********">
- </div>
- <div class="form-group">
- <label>Repite tu contraseña: </label>
- <input type="password" class="form-control" name="clave2" placeholder="********">
- </div>
- <br>
- <button type="reset" class="btn btn-default">Limpiar casillas</button>
- <button type="submit" class="btn btn-default" name="enviar">Enviar Datos</button>
- </form>
- }else{
- <form role="form" method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>">
- <div class="form-group">
- <label>Tipo de Usuario: </label>
- <select name="tipo_de_usuario" class="form-control">
- <option>Seleccione... </option>
- <option value="Individuo (Persona Natural)">Individuo (Persona Natural)</option>
- <option value="Empresa o negocio (Persona Juridica)">Empresa o negocio (Persona Juridica)</option>
- </select>
- </div>
- <?php
- $validador-> mostrar_error_tipo_de_usuario();
- ?>
- <div class="form-group">
- <label>Nombre de Usuario: </label>
- <input type="text" class="form-control" name="nombre" placeholder="JuanitoPerez666" <?php $validador -> mostrar_nombre() ?>>
- <?php
- $validador-> mostrar_error_nombre();
- ?>
- </div>
- <div class="form-group">
- <label>Email: </label>
- <input type="email" class="form-control" name="email" placeholder="juanitoperez_666@ejemplo.com" <?php $validador -> mostrar_email() ?>>
- <?php
- $validador-> mostrar_error_email();
- ?>
- </div>
- <div class="form-group">
- <label>Contraseña: </label>
- <input type="password" class="form-control" name="clave1" placeholder="********">
- <?php
- $validador-> mostrar_error_clave1();
- ?>
- </div>
- <div class="form-group">
- <label>Repite tu contraseña: </label>
- <input type="password" class="form-control" name="clave2" placeholder="********">
- <?php
- $validador-> mostrar_error_clave2();
- ?>
- </div>
- <br>
- <button type="reset" class="btn btn-default">Limpiar casillas</button>
- <button type="submit" class="btn btn-default" name="enviar">Enviar Datos</button>
- </form>
- }
- ?>
- </form>
- </div>
- </div>
- </div>
- </div>
- </div>
- <br>
- <br>
- <br>
Add Comment
Please, Sign In to add comment