Generar Código de verificación con FPDF y PHP Estoy realizando un proyecto de una organización técnica, en donde una persona al ser aprobado y a la vez que se haya cerrado el curso puede optar por su certificacion, para el el certificado utilicé FPDF , php y base de datos mysql, mi duda es como puedo insertar un código de verificación aleatorio sin que se repita , que se muestre en el certificado y que se guarde en la base de datos???, alguien me podría dar una idea por favor... Código PHP:
//resultcertificado.php <?php // Constantes conexión con la base de datos define("server", 'localhost'); define("user", 'root'); define("pass", ''); define("mainDataBase", 'otec'); // Variable que indica el status de la conexión a la base de datos $errorDbConexion = false; // Función para extraer el listado de usuarios function rCert($linkDB,$cliente){ $statusTipo = array("Activo" => "btn-success", "Suspendido" => "btn-warning"); $salida = ''; $consulta = $linkDB -> query("SELECT modulo.mo_cod, modulo.mo_nombre, certificado.cer_emision, certificado.cer_exp, certificado.cer_intentos FROM certificado,modulo WHERE certificado.mo_cod = modulo.mo_cod AND certificado.cl_id = '$cliente' AND modulo.mo_estado = 'Cerrado'"); //AND modulo.mo_estado = 'Cerrado' if($consulta -> num_rows != 0){ $n = 1; // convertimos el objeto echo "<div class='panel panel-success'> <div class='panel-heading'> <h3 class='panel-title'><i class='fa fa-eye-slash'></i><b> Estado Actual</b></h3> </div> <div class='panel-body'> <div class='row'> <div class='col-md-12'> <div class='form-group'> <div class='col-sm-2 col-sm-offset-5 col-xs-4 col-xs-offset-4'> <i class='fa fa-check-circle-o fa-5x'></i> </div> <div class='col-sm-4 col-sm-offset-4 col-xs-12'> <h3 align='center'>Disponible</h3> </div> </div> </div> </div> </div> </div>" ; echo "<div class='panel panel-success'> <div class='panel-heading'> <h3 class='panel-title'><i class='fa fa-folder-open-o'></i><b> Detalle</b></h3> </div> <div class='panel-body'> <div class='row'> <div class='col-md-12'> <div class='table-responsive'> <table class='table table-hover table-striped table-bordered'> <thead> <tr> <th>#</th> <th>Nombre</th> <th>Fecha Emision</th> <th>Fecha Expiracion</th> <th>Accción</th> </tr> </thead> <tbody> "; while($listadoOK = $consulta -> fetch_assoc()) { echo '<tr>'; echo '<td>'.$n.'</td>'; echo '<td>Certificacion en '.$listadoOK['mo_nombre'].'</td>'; echo '<td>'.$listadoOK['cer_emision'].'</td>'; echo '<td>'.$listadoOK['cer_exp'].'</td>'; echo '<td><a class = "btn btn-warning" href = "certificado/certificado.php?cliente='.$cliente.'&modulo='.$listadoOK['mo_cod'].'" target = "_blank">Generar</a></td>'; echo '<tr>'; ; $n++; } echo " </tbody> </table> </div> </div> </div> </div> </div>"; } else{ echo "<div class='panel panel-success'> <div class='panel-heading'> <h3 class='panel-title'><i class='fa fa-eye-slash'></i></i><b> Estado Actual</b></h3> </div> <div class='panel-body'> <div class='row'> <div class='col-md-12'> <div class='form-group'> <div class='col-sm-2 col-sm-offset-5 col-xs-4 col-xs-offset-4'> <i class='fa fa-refresh fa-spin fa-5x'></i> </div> <div class='col-sm-4 col-sm-offset-4 col-xs-12'> <h3 align='center'>En Espera</h3> </div> <div class='col-sm-10 col-sm-offset-1' <p align='center'>Actualmente no disponible, se requiere el cierre académico</p> </div> </div> </div> </div> </div> </div>"; } } // Verificar constantes para conexión al servidor if(defined('server') && defined('user') && defined('pass') && defined('mainDataBase')) { // Conexión con la base de datos $mysqli = new mysqli(server, user, pass, mainDataBase); // Verificamos si hay error al conectar if (mysqli_connect_error()) { $errorDbConexion = true; } // Evitando problemas con acentos $mysqli -> query('SET NAMES "utf8"'); } Código PHP:
//certificado.php , estructura de pdf <?php session_start(); if (!isset($_SESSION['id'])) { session_unset(); session_destroy(); header("Location:../../login.php"); } $cliente = $_GET['cliente']; $modulo = $_GET['modulo']; if ($_SESSION['id']==$cliente && $_SESSION['id_modulo']==$modulo) { $cl = $cliente; include ('../../../funciones/conexion.php'); $sql = "UPDATE certificado SET cer_intentos = cer_intentos+1 WHERE cl_id = '$cl' AND mo_cod = '$modulo' "; $rs = mysql_query($sql,$con); $sql1 = "SELECT evaluacion_aplicada.ea_promedio, modulo.mo_nombre FROM evaluacion_aplicada, modulo, evaluacion_creada WHERE evaluacion_creada.ec_id = evaluacion_aplicada.ec_id AND evaluacion_creada.mo_cod = modulo.mo_cod AND evaluacion_aplicada.cl_id = '$cl'"; $rs1 = mysql_query($sql1,$con); if ($row = mysql_fetch_array($rs1)) { $promedio = $row['ea_promedio']; $modulo = $row['mo_nombre']; } $rut = $_SESSION['rut']; $nomc = $_SESSION['nomc']; }else{ header('Location:../estudiante.php'); } require('fpdf.php'); class PDF extends FPDF{ function Header(){ //logo $this->Image('color.png',78,15,60); //ARIAL BOLD 15 $this->SetFont('Arial','B',20); //Movernos a la Derecha $this->Cell(80); //titulo $this->Cell(30,100,'CERTIFICACIÓN ROA-METALES',0,0,'C'); //Salto de Linea $this->Ln(20); //subtitulo $this->SetFont('Arial','B',14); //Movernos a la Derecha $this->Cell(80); //titulo $this->Cell(30,80,utf8_decode('Modulo Soldadura TIC'),0,0,'C'); //Salto de Linea $this->Ln(20); } function Footer(){ //posicion a 1,5 cm del final $this->SetY(-15); //Arial Italic 8 $this->SetFont('Arial','B',8); //Numero de Pagina $this->Rect(7,283,196,7); $this->Cell(170,10,'www.roametales.cl',0,0,'C'); $this->SetFont('Arial','I',8); $this->Cell(20,10,'Pagina '.$this->PageNo().'de 1',0,0,''); } } $pdf = new PDF(); $pdf->AliasNbPages(); $pdf->AddPage(); $pdf->Rect(7,7,196,283); $pdf->SetFont('Arial','',12); $pdf-> ln(50); $pdf->Write(6,'El Ministerio de Educación en común acuerdo con la empresa certificadora otorga el presente certificado a don(ña) '.$nomc.', RUN '.$rut.', quien ha cursado el modulo de '.$modulo.', año 2015, en el establecimiento certificador de capacidades conocimientos y habilidades OTEC ROA-METALES, comuna de RANCAGUA, Región Del Lib. B. O Higgins, obteniendo los siguientes resultados:'); $pdf-> ln(10); $pdf->Cell(43,6,'Promedio General :',0); $pdf->SetFont('Arial','B',12); $pdf->Cell(10,6,''.$promedio,0); $pdf-> ln(7); $pdf->SetFont('Arial','',12); $pdf->Cell(43,6,'Situacion Final :',0); $pdf->SetFont('Arial','B',12); $pdf->Cell(75,6,'Es Certificado En '.$modulo.'',0); $pdf-> ln(70); $pdf->Image('timbre.png',60,180,100); $pdf->SetFont('Arial','',12); $pdf->Cell(0,6,'Jessica Padilla U.',0,0,'C'); $pdf-> ln(); $pdf->Cell(0,6,'Coordinadora',0,0,'C'); $pdf-> ln(); $pdf->Cell(0,6,'Unidad Nacional de Registro Curricular',0,0,'C'); $pdf-> ln(12); $pdf->SetFont('Arial','B',10); $pdf->Cell(0,5,'Codigo de Verificacion:',0,0,'R'); $pdf-> ln(); $pdf->Cell(0,5,'',0,0,'R'); $pdf-> ln(12); $pdf->SetFont('Arial','',9); $pdf->Cell(90,4,'',0); $pdf->Cell(103,4,'La validez de este documento está dada por su código de verificación',0,0,''); $pdf-> ln(); $pdf->Cell(90,4,'Fecha de Emisión: '.date('d-m-Y').'',0,0,''); $pdf-> ln(); #Establecemos el margen inferior: $pdf->SetAutoPageBreak(true,5); // Segunda página $pdf->SetFontSize(14); $pdf->Output(); ?> |