miércoles, 30 de mayo de 2018

Php index Inicio Sesion y Suma Acessos Denegados

En esta ocasión, veremos en pantalla una ventana donde se reflejarán los accesos permitidos, los accesos denegados y las visitas a la página principal.
Con acceso con usuario y contraseña a nuestra web y con la correspondiente validación de datos y retorno de errores.
Al final del post os dejo la estructura de la tabla de bbdd para insertar los datos de accesos denegados y permitidos.
El código completo de la aplicación y su manual lo podéis descargar desde este enlace CONTABILIDAD COMERCIAL O DOMESTICA EN PHP o este otro enlace.
Deseo que os sea útil a todos.

<?php
session_start();

/* Llamamos al archivo con el código Xhtml5. Ojo a la ruta relativa */

    require 'Inclu/Inclu_Menu_00.php';
/* Declaramos globales la variables de BBDD.
Antes de la variable, si lo hacemos depués, declaramos global la siguiente, no la anterior.
Llamamos al archivo de variables de conexión y relizamos la conexión.
En caso de error imprime un mensaje. */


    global $db;
    global $db_name;
   
        require 'Conections/conection.php';

    $db = mysqli_connect($db_host,$db_user,$db_pass,$db_name);
    if (!$db){ die ("Es imposible conectar con la bbdd ".$db_name."</br>".mysqli_connect_error());
                }

///////////////////////////////////////////////////////////////////////////////////////

/* Leemos la bbdd donde coincida el campo usuario y password.
Creamos los objetos mysqli_query y mysqli_fetch_assoc respectivamente.
Generamos las superglobales de sesión. */


    $sql =  "SELECT * FROM `admin` WHERE `Usuario` = '$_POST[Usuario]' AND `Password` = '$_POST[Password]'";
    
    $q = mysqli_query($db, $sql);
   
    $row = mysqli_fetch_assoc($q);
   
    global $userid;
    global $uservisita;

    $_SESSION['ID'] = $row['ID'];
    $_SESSION['ref'] = $row['ref'];
    $_SESSION['Nivel'] = $row['Nivel'];
    $_SESSION['Nombre'] = $row['Nombre'];
    $_SESSION['Apellidos'] = $row['Apellidos'];
    $_SESSION['Email'] = $row['Email'];
    $_SESSION['Usuario'] = $row['Usuario'];
    $_SESSION['Password'] = $row['Password'];
    $_SESSION['Direccion'] = $row['Direccion'];
    $_SESSION['Tlf1'] = $row['Tlf1'];
    $_SESSION['Tlf2'] = $row['Tlf2'];
    $_SESSION['lastin'] = $row['lastin'];
    $_SESSION['lastout'] = $row['lastout'];
    $_SESSION['visitadmin'] = $row['visitadmin'];

    $userid = $_SESSION['ID'];
    global $uservisita;
    $uservisita = $_SESSION['visitadmin'];
   
///////////////////////////////////////////////////////////////////////////////////////////////

/*  Aplicamos la LÓGICA DEL FORMULARIO, mediante la cual se ejecutaran una u otra función.
O simplemente se verá el formulario.
Se incluye una función que suma una visita al cargar la página y otras que suman los accesos permitidos y denegados. */


                if($_POST['oculto']){
                   
                        if($form_errors =     validate_form()){    suma_denegado ();
                                                                                         show_form($form_errors);
                                } else {suma_acces();
                                            process_form();
                                    }
                   
                                }    
                                    elseif ($_POST['salir']){    salir();
                                                                               show_form();
                                }
                                    else {    suma_visit();   
                                                 show_form();
                                                            }
                                               

/////////////////////////////////////////////////////////////////////////////////////////////////

/* Nos imprime en pantalla, el número de visitas a la pagina de acceso, los accesos permitidos y los denegados. */


function show_visit(){

    global $db;
    global $db_name;
    global $rowv;
    global $sumavisit;
   
    $sqlv =  "SELECT * FROM `visitasadmin`";
    $qv = mysqli_query($db, $sqlv);
   
    $rowv = mysqli_fetch_assoc($qv);
   
    $_SESSION['admin'] = $rowv['admin'];
   
    $tot = $rowv['admin'];

    global $sumavisit;
    $sumavisit = $tot + 1;

    $idv = 69;
   
    if(mysqli_query($db, $sqlv)){
        /**/    print("            

            <div style='clear:both'></div>

                <table align='right' style='margin-top:0px'>
       
                        <tr>   
                            <td align='right'>
                                <font color='#59746A'>
                                    VISITAS:
                                </font>
                            </td>
                            <td  align='right'>
                                <font color='#59746A'>
                                                        ".$tot."
                                </font>
                            </td>
                        </tr>
                       
                        <tr>
                            <td align='right'>
                                <font color='#59746A'>
                                    ACCESOS PERMITIDOS:
                                </font>
                            </td>
                            <td align='right'>
                                <font color='#59746A'>
                                                        ".$rowv['acceso']."
                                </font>
                            </td>
                           
                        </tr>

                        <tr>
                            <td align='right'>
                                <font color='#59746A'>
                                    ACCESOS DENEGADOS:
                                </font>
                            </td>
                            <td align='right'>
                                <font color='#59746A'>
                                                        ".$rowv['deneg']."
                                </font>
                            </td>
                           
                        </tr>
                    </table>
                    </br>
                                ");
                                        }
               
                 else {
                print("<font color='#FF0000'>
                        * Error: </font>
                        </br>
                        &nbsp;&nbsp;&nbsp;".mysqli_error($db)."
                        </br>");
                       
                            }

                                }

/////////////////////////////////////////////////////////////////////////////////////////////////

/* Suma la visita a la página al cargar */


function suma_visit(){

    global $db;
    global $db_name;
    global $rowv;
    global $sumavisit;
   

    $sqlv =  "SELECT * FROM `visitasadmin`";
    $qv = mysqli_query($db, $sqlv);
    $rowv = mysqli_fetch_assoc($qv);
   
    $_SESSION['admin'] = $rowv['admin'];
   
    $tot = $rowv['admin'];

    global $sumavisit;
    $sumavisit = $tot + 1;

    $idv = 69;
   
    $sqlv = "UPDATE `$db_name`.`visitasadmin` SET `admin` = '$sumavisit' WHERE `visitasadmin`.`idv` = '$idv' LIMIT 1 ";

    if(mysqli_query($db, $sqlv)){
        /**/    print(" </br>");
                                        }
               
                 else {
                print("<font color='#FF0000'>
                        * Error: </font>
                        </br>
                        &nbsp;&nbsp;&nbsp;".mysqli_error($db)."
                        </br>");
                       
                            }
                                }

/////////////////////////////////////////////////////////////////////////////////////////////////

/*  Suma el acceso al computo general sin tener en cuenta el usuario. */


function suma_acces(){

    global $db;
    global $db_name;
    global $rowa;
    global $sumaacces;
   

    $sqla =  "SELECT * FROM `visitasadmin`";
    $qa = mysqli_query($db, $sqla);
    $rowa = mysqli_fetch_assoc($qa);
   
    $_SESSION['acceso'] = $rowa['acceso'];
   
    $tota = $rowa['acceso'];

    global $sumaacces;
    $sumaacces = $tota + 1;

    $idv = 69;
   
    $sqla = "UPDATE `$db_name`.`visitasadmin` SET `acceso` = '$sumaacces' WHERE `visitasadmin`.`idv` = '$idv' LIMIT 1 ";

    if(mysqli_query($db, $sqla)){ print ('</br>');
                                                    }
               
                 else {
                print("<font color='#FF0000'>
                        * Error: </font>
                        </br>
                        &nbsp;&nbsp;&nbsp;".mysqli_error($db)."
                        </br>");
                       
                            }

                                }

/////////////////////////////////////////////////////////////////////////////////////////////////

/* Suma el acceso denegado sin tener en cuenta el usuario. */


function suma_denegado(){

    global $db;
    global $db_name;
    global $rowd;
    global $sumadeneg;
   

    $sqld =  "SELECT * FROM `visitasadmin`";
    $qd = mysqli_query($db, $sqld);
    $rowd = mysqli_fetch_assoc($qd);
   
    $_SESSION['deneg'] = $rowd['deneg'];
   
    $dng = $rowd['deneg'];
   
    global $sumadeneg;
    $sumadeneg = $dng + 1;

    $idd = 69;
   
    $sqld = "UPDATE `$db_name`.`visitasadmin` SET `deneg` = '$sumadeneg' WHERE `visitasadmin`.`idv` = '$idd' LIMIT 1 ";

    if(mysqli_query($db, $sqld)){
        /**/    print("    </br>");
                                        }
               
                 else {
                print("<font color='#FF0000'>
                        * Error: </font>
                        </br>
                        &nbsp;&nbsp;&nbsp;".mysqli_error($db)."
                        </br>");
                       
                            }
                                }

//////////////////////////////////////////////////////////////////////////////////////////////

/* Valida el formulario. Y retorna los errores y el formulario con los valores que hemos escrito en los campos correspondientes.  */


function validate_form(){
   
    global $db;
   
    $errors = array();
   
    if (strlen(trim($_POST['Usuario'])) == 0){
        $errors [] = "Usuario: Campo obligatorio.";
        }
   
    if (strlen(trim($_POST['Password'])) == 0){
        $errors [] = "Password: Campo Obligatorio:";
        }
       
    global $sql;
    global $q;
    global $row;
   
    if(trim($_POST['Usuario'] != $row['Usuario'])){
        $errors [] = "Nombre o Password incorrecto.";
        }
   
    elseif(trim($_POST['Password'] != $row['Password'])){
        $errors [] = "Nombre o Password incorrecto.";
        }

    return $errors;

        }
       
//////////////////////////////////////////////////////////////////////////////////////////////

/* Se procesa el formulario, en caso de pasar la validación.
Se imprime el index de la aplicación según el nivel de la pepona.
Si error bbdd, mensaje.
Si no permitido, consulte con WEBMASTER  */


function process_form(){
   
    global $db;
                   
if (($_SESSION['Nivel'] == 'admin') || ($_SESSION['Nivel'] == 'user')){               
            print("Wellcome: ".$_SESSION['Nombre']." ".$_SESSION['Apellidos'].".");
   
            master_index();
           
        print("<table align='center' style=\"margin-top:4px;margin-bottom:4px\">
                    <tr align='center'>
                        <td>
                            <font color='#2E939A'>
                                <b>
                HOLA ".strtoupper($_SESSION['Nombre'])." ".strtoupper($_SESSION['Apellidos']).".
                                </br>
                            HA ACCEDIDO AL SISTEMA COMO ".strtoupper($_SESSION['Nivel']).".
                            </font>
                        </td>
                    </tr>
                </table>");
               
              show_balance();
           
        }    else { print("<table align='center' style=\"margin-top:200px;margin-bottom:200px\">
                                    <tr align='center'>
                                        <td>
                                            <font color='red'>
                                                <b>
                                                    ACCESO RESTRINGIDO.
                                                </br></br>
                                                    CONSULTE SUS PERMISOS ADMINISTRATIVOS.
                                            </font>
                                        </td>
                                    </tr>
                                </table>");
                               
                            }
               
    }   

/////////////////////////////////////////////////////////////////////////////////////////////////

/* El formulario de acceso a la plataforma. */


function show_form($errors=''){
   
    if($_POST['oculto']){
        $defaults = $_POST;
        } else {
                $defaults = array ('Usuario' => '',
                                   'Password' => '');
                                   }
   
   
    if ($errors){
        print("    <div width='90%' style='float:left'>
                    <table align='left' style='border:none'>
                    <th style='text-align:left'>
                    <font color='#FF0000'>* SOLUCIONE ESTOS ERRORES:</font><br/>
                    </th>
                    <tr>
                    <td style='text-align:left'>");
           
        for($a=0; $c=count($errors), $a<$c; $a++){
            print("<font color='#FF0000'>**</font>  ".$errors [$a]."<br/>");
            }
        print("</td>
                </tr>
                </table>
                </div>
                <div style='clear:both'></div>");
        }
   
    print("".show_visit()."
           
            <div style='clear:both'></div>
           
            <table align='center' style=\"margin-top:2px; margin-bottom:8px\" >
                <tr>
                    <th colspan=2 width=100% valign=\"bottom\" class='BorderInf'>
                        SUS DATOS DE ACCESO
                    </th>
                </tr>
               
            <form name='form_tabla' method='post' action='$_SERVER[PHP_SELF]'>
                       
                <tr>
                    <td>   
                        USUARIO
                    </td>
                    <td>
<input type='Password' name='Usuario' size=20 maxlength=50 value='".$defaults['Usuario']."' />
                    </td>
                </tr>
   
                <tr>
                    <td>   
                        PASSWORD
                    </td>
                    <td>
<input type='Password' name='Password' size=20 maxlength=50 value='".$defaults['Password']."' />
                    </td>
                </tr>
   
                <tr>
                    <td valign='middle' align='right' colspan='2'>
                        <input type='submit' value='ACCEDER' />
                        <input type='hidden' name='oculto' value=1 />
                    </td>
                   
                </tr>
               
        </form>   
                   
            </table>
           
                ");
   
   
    }

/////////////////////////////////////////////////////////////////////////////////////////////////
/* Llamamos al master index segun el nivel del usuario. */  
 

    function master_index(){

        require 'Inclu/Master_Index_00.php';
       
                }

/////////////////////////////////////////////////////////////////////////////////////////////////
   
/* Desconectamos del sistema
Mato las superglobales una a una, soy un poco maniático. */

           
    function salir() {        unset($_SESSION['ID']);
                            unset($_SESSION['Nivel']);
                            unset($_SESSION['Nombre']);
                            unset($_SESSpellidos']);
                            unset($_SESSION['doc']);
                            unset($_SESSION['dni']);
                            unset($_SESSION['ldni']);
                            unset($_SESSION['Email']);
                            unset($_SESSION['Usuario']);
                            unset($_SESSION['Password']);
                            unset($_SESSION['Direccion']);
                            unset($_SESSION['Tlf1']);
                            unset($_SESSION['Tlf2']);
                            unset($_SESSION['nclient']);
                    print("Se ha cerrado la sesión.</br>");
                }
   
/////////////////////////////////////////////////////////////////////////////////////////////////
 /* El Xhtml5 que cierra la maquetación. */


    require 'Inclu/Inclu_Footer_01.php';
   
/////////////////////////////////////////////////////////////////////////////////////////////////

?>

************************
*************
************************

Esta es la estructura de la tabla de bbdd para grabar los datos de los accesos permitidos, los denegados y las visitas realizadas.
Lo podemos incluir en una función o crear la tabla e ingresar los datos iniciales manualmente en phpmyadmin.

    /************* CREAMOS LA TABLA VISITAS ADMIN ****************/

$visitas = "CREATE TABLE `$db_name`.`visitasadmin` (
  `idv` int(2) NOT NULL,
  `visita` int(10) NOT NULL,
  `admin` int(10) NOT NULL,
  `deneg` int(10) NOT NULL,
  `acceso` int(10) NOT NULL,
  PRIMARY KEY  (`idv`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1";
      
    if(mysqli_query($db, $visitas)){
            print ("<table align='center'>
                                    <tr>
                                        <td>
                                                HA CREADO LA TABLA VISTAADMIN
                                        </td>
                                    </tr>
                                </table>
                                        ");                     
                } else {
                  
                print ("<table align='center'>
                                    <tr>
                                        <td>
                                                NO HA CREADO LA TABLA.
                                        </td>
                                    </tr>
                                </table>
                                        ");                  
                            }
                 
    $vd = "INSERT INTO `$db_name`.`visitasadmin` (`idv`, `visita`, `admin`, `deneg`, `acceso`) VALUES
(69, 0, 0, 0, 0)";
      
    if(mysqli_query($db, $vd)){  

                 print ("<table align='center'>
                                    <tr>
                                        <td>
                              HA GRABADO LOS DATOS EN LA TABLA VISTAADMIN
                                        </td>
                                    </tr>
                                </table>
                                        ");  
               } else { 

                print ("<table align='center'>
                                    <tr>
                                        <td>
                              NO SE HAN GRABADO LOS DATOS EN LA TABLA.
                                        </td>
                                    </tr>
                                </table>
                                        ");     
                          }


Y LISTO ...

No hay comentarios:

Publicar un comentario

Gracias por vuestros aportes.