CASO 1: LISTA BLANCA

En el siguiente artículo se explicará cómo fue implementado el código del caso LISTA BLANCA de la funcionalidad Formulario Para la implementación de esta funcionalidad se usó el lenguaje de programación PHP, además se usa el método GET para el envío de datos entre la plataforma web Verifíquese Cédula Almacén y la plataforma móvil Verifíquese Cédula Premium, antes de comenzar se debe descargar la base de datos y montarla en un motor de MySQL, puedes descargar el código fuente pulsando en el siguiente enlace Clic aquí para descargar el código fuente.

El siguiente código pertenece al formulario:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="iso-8559-1"/>
    <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<link rel="stylesheet" type="text/css" href="bootstrap/css/bootstrap.min.css">

</head>

<body>
<div class="container-fluid"  style="text-align: center; padding-right: 0px">
<div class="row">
<form class="form-horizontal" method="get">
<?php
       
//Se toman los datos del documento enviados desde la aplicación móvil Verifíquese Cédula
       
setlocale(LC_ALL,"es_ES");
       
$orh = null;
       
$bdh = null;
       
$wso = null;
       
$pur = null;
       
$gel = null;
       
$poe = null;
       
$wad = null;
       
$qwe = null;
       
$tyu = null;
       
$klz = null;
       
$sde = null;
       
$xlq = null;
       
$combo = null;
        if (!empty(
$_GET['orh'])) {
           
$orh = $_REQUEST['orh'];
        }
        if (!empty(
$_GET['bdh'])) {
           
$bdh = $_REQUEST['bdh'];
        }
        if (!empty(
$_GET['pur'])) {
           
$pur = $_REQUEST['pur'];
        }
        if (!empty(
$_GET['wso'])) {
           
$wso = $_REQUEST['wso'];
        }
        if (!empty(
$_GET['gel'])) {
           
$gel = $_REQUEST['gel'];
        }
        if (!empty(
$_GET['poe'])) {
           
$poe = $_REQUEST['poe'];
        }
        if (!empty(
$_GET['qwe'])) {
           
$qwe = $_REQUEST['qwe'];
        }
        if (!empty(
$_GET['tyu'])) {
           
$tyu = $_REQUEST['tyu'];
        }
        if (!empty(
$_GET['klz'])) {
           
$klz = $_REQUEST['klz'];
        }
        if (!empty(
$_GET['sde'])) {
           
$sde = $_REQUEST['sde'];
        }
        if (!empty(
$_GET['xlq'])) {
           
$xlq = $_REQUEST['xlq'];
        }
        if (!empty(
$_GET['wad'])) {
           
$wad = $_REQUEST['wad'];
        }
       
        require
'database.php';
       
$state = "";
        if (!empty(
$_GET['state'])) {
           
$state = $_REQUEST['state'];
        }
       
$count = 0;
        if(
$state == ""){
               
$pdo = Database::connect();
               
//Se hace una busqueda en la lista blanca para ver si el documento escaneado esta registrado en la lista blanca
               
$sql = "Select * from whitelist where country = '".$wad."' and document_type = '".$qwe."' and document_number = '".$gel."'";
               
$array = $pdo->query($sql);
               
$date = getdate();
               
$day = $date["mday"];
               
$mon = $date["mon"];
               
$year = $date["year"];
               
$fecha "".$year."/".$mon."/".$day;
                if(
$array->rowCount() >= 1){//Se valida si la consulta en la lista blanca trae algun resultado
                    //Si el documento se encuentra registrado en la lista blanca se guarda un registro en la tabla successfulaccess
                   
$idWhiteList = "";
                    foreach (
$array as $row) {
                       
$idWhiteList = $row['id_whitelist'];
                       
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                       
$sql = "insert into successfulaccess (id_whitelist,date_ingress) values(?,?)";
                       
$q = $pdo->prepare($sql);
                       
$q->execute(array($idWhiteList,$fecha));
                    }   
                   
//Se cuenta cuantas veces a ingresado el documento documento escaneado
                   
$sql = "select count(*) as records from successfulaccess where id_whitelist = ".$idWhiteList;
                   
$records = $pdo->query($sql);
                    foreach (
$records as $row) {
                       
$count = $row['records'];
                        if(
$count > 1){
                           
//Si la cantidad de veces ingresadas es mayor a 1 se coloca el estado de Restringido advirtiendo que el documento a ingresado varias veces y que puede ser una falsificación
                           
$state = "Restringido";
                        }else{
                           
//Si la cantidad de veces ingresadas es igual a 1 se coloca el estado de Aceptado
                           
$state = "Aceptado";
                        }
                    }       
                   
Database::disconnect();

                }else{
                    //Si el documento no esta registrado en la lista blanca se coloca el estado de Rechazado y se guarda un registro en la tabla accessdenied
                   
$state = "Rechazado";
                   
$pdo = Database::connect();
                   
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                   
$sql = "insert into accessdenied (date_ingress,datails,country,document_tye,document_number) values (?,?,?,?,?)";
                   
$q = $pdo->prepare($sql);
                   
$q->execute(array($fecha,$state,$wad,$qwe,$gel));
                   
                }
        }
               
//Se muestra una imagen dependiendo del estado
       
if($state == "Rechazado"){
            echo
"<input name='state' type='hidden' value='".$state."'>";
            echo
"<button type='submit' class='btn btn-danger'><img src='stop.png'></button>";
        }
        if(
$state == "Aceptado"){
            echo
"<input name='state' type='hidden' value='".$state."'>";
            echo
"<button type='submit' href='index.php' class='btn btn-success'><img src='go.png'></button>";
        }
        if(
$state == "Restringido"){
            echo
"<input name='records' type='hidden' value='".$count."'>";
            echo
"<input name='state' type='hidden' value='".$state."'>";
            echo
"<h2>"."Cantidad de veces ingresadas: ".$count."</h2>";
            echo
"<br/>";
            echo
"<button type='submit' class='btn btn-warning'><img src='go.png'></button>";
        }
   
?>
</form>
</div>
</div>
</body>
</html>

En el anterior formulario se toman los datos enviados desde la aplicación móvil Verifíquese Cédula para posteriormente buscar si es documento escaneado existe o no en la lista blanca, dependiendo de esta búsqueda se le asigna un estado (Aceptado, Restringido o Rechazado) una vez asignado el estado se procede a mostrar una imagen dependiendo del estado obtenido por la búsqueda.

El siguiente código pertenece al archivo de conexión a la base de datos:

<?php
class Database
{
    private static
$dbName = 'vfq_premium_almacen' ;
    private static
$dbHost = 'localhost' ;
    private static
$dbUsername = 'userName';
    private static
$dbUserPassword = 'Passwd';
    private static
$port = '3306';
    private static
$cont  = null;
    
    public function
__construct() {
        die(
'Init function is not allowed');
    }
    
    public static function
connect()
    {
      
// One connection through whole application
      
if ( null == self::$cont )
       {    
        try
        {
         
self::$cont =  new PDO( "mysql:host=".self::$dbHost.";"."port=".self::$port.";"."dbname=".self::$dbName, self::$dbUsername, self::$dbUserPassword);
         
self::$cont -> exec("set names utf8");
        }
        catch(
PDOException $e)
        {
          die(
$e->getMessage());
        }
       }
       return
self::$cont;
    }
    
    public static function
disconnect()
    {
       
self::$cont = null;
    }
}
?>