Hola a todos, en esta entrada os quiero dejar el código para acceder a vuestra aplicación web mediante usuario y contraseña.
Con la correspondiente validación de datos y retorno de errores.
Podéis ver que existen otras funciones que se van explicando sobre la marcha.
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 rar.
Ya sabéis que podéis quitar las funciones que no os sean útiles y dejarlo a vuestro gusto.
En próximas entradas intentaré editarlo más desgranado.
Espero 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 otra que suma una visita a las ya existentes en caso de inciar sesión el usuario. */
if($_POST['oculto']){
if($form_errors = validate_form()){suma_denegado ();
show_form($form_errors);
} else {admin();
suma_acces();
process_form();
ayear();
admin_entrada();
}
}
elseif ($_POST['salir']){ salir();
show_form();
}
else { suma_visit();
show_form();
}
///////////////////////
/* En estas funciones se compureva que el año es el mismo y si no es así, se crean las tablas y los directorios necesarias para trabajar el año corriente (solo para este usuario, no para otros que no han iniciado sesión) y se modifica el archivo de verificación del año (para este usuario). */
function modif(){
$filename = "Users/".$_SESSION['ref']."/ayear.php";
$fw1 = fopen($filename, 'r+');
$contenido = fread($fw1,filesize($filename));
fclose($fw1);
$contenido = explode("\n",$contenido);
$contenido[2] = "'' => 'YEAR',\n'".date('y')."' => '".date('Y')."',";
$contenido = implode("\n",$contenido);
//fseek($fw, 37);
$fw = fopen($filename, 'w+');
fwrite($fw, $contenido);
fclose($fw);
global $dat1;
$dat1 = "\tMODIFICADO Y ACTUALIZADO ".$filename.".\n";
}
function modif2(){
$filename = "Users/".$_SESSION['ref']."/year.txt";
$fw2 = fopen($filename, 'w+');
$date = "".date('Y')."";
fwrite($fw2, $date);
fclose($fw2);
global $dat2;
$dat2 = "\tMODIFICADO Y ACTUALIZADO ".$filename.".\n";
}
function modif2b(){
$filename = "config/year.txt";
$fw2 = fopen($filename, 'w+');
$date = "".date('Y')."";
fwrite($fw2, $date);
fclose($fw2);
global $dat3;
$dat3 = "\tMODIFICADO Y ACTUALIZADO ".$filename.".\n";
}
function tingresos(){
global $db;
global $db_name;
$vname = $_SESSION['ref']."_ingresos_".date('Y');
$vname = "`".$vname."`";
$tv = "CREATE TABLE `$db_name`.$vname (
`id` int(4) NOT NULL auto_increment,
`factnum` varchar(20) collate utf8_spanish2_ci NOT NULL,
`factdate` varchar(20) collate utf8_spanish2_ci NOT NULL,
`refprovee` varchar(20) collate utf8_spanish2_ci NOT NULL,
`factnom` varchar(22) collate utf8_spanish2_ci NOT NULL,
`factnif` varchar(20) collate utf8_spanish2_ci NOT NULL,
`factiva` int(2) NOT NULL,
`factivae` decimal(9,2) unsigned NOT NULL,
`factpvp` decimal(9,2) unsigned NOT NULL,
`factpvptot` decimal(9,2) unsigned NOT NULL,
`coment` text collate utf8_spanish2_ci NOT NULL,
`myimg1` varchar(30) collate utf8_spanish2_ci NOT NULL default 'untitled.png',
`myimg2` varchar(30) collate utf8_spanish2_ci NOT NULL default 'untitled.png',
`myimg3` varchar(30) collate utf8_spanish2_ci NOT NULL default 'untitled.png',
`myimg4` varchar(30) collate utf8_spanish2_ci NOT NULL default 'untitled.png',
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_spanish2_ci AUTO_INCREMENT=2 ";
if(mysqli_query($db, $tv)){
global $dat4;
$dat4 = "\tCREADA TABLA ".$vname.".\n";
} else {print( "* NO OK TABLA VENTAS. ".mysqli_error($db).".\n");
global $dat4;
$dat4 = "\tNO CREADA TABLA ".$vname.". ".mysqli_error($db).".\n";
}
// CREA EL DIRECTORIO DE INGRESOS, para este año y este usuario.
$vn3 = "docingresos_".date('Y');
$carpeta3 = "Users/".$_SESSION['ref']."/".$vn3;
if (!file_exists($carpeta3)) {
mkdir($carpeta3, 0777, true);
copy("Images/untitled.png", $carpeta3."/untitled.png");
copy("Images/pdf.png", $carpeta3."/pdf.png");
global $dat4b;
$dat4b = "\tCREADO EL DIRECTORIO ".$carpeta3.".\n";
}
else{print("* NO HA CREADO EL DIRECTORIO ".$carpeta3."\n");
global $dat4b;
$dat4b = "\tNO CREADO EL DIRECTORIO ".$carpeta3.".\n";
}
}
function tgastos(){
global $db;
global $db_name;
$vname = $_SESSION['ref']."_gastos_".date('Y');
$vname = "`".$vname."`";
$tg = "CREATE TABLE `$db_name`.$vname (
`id` int(4) NOT NULL auto_increment,
`factnum` varchar(20) collate utf8_spanish2_ci NOT NULL,
`factdate` varchar(20) collate utf8_spanish2_ci NOT NULL,
`refprovee` varchar(20) collate utf8_spanish2_ci NOT NULL,
`factnom` varchar(22) collate utf8_spanish2_ci NOT NULL,
`factnif` varchar(20) collate utf8_spanish2_ci NOT NULL,
`factiva` int(2) NOT NULL,
`factivae` decimal(9,2) unsigned NOT NULL,
`factpvp` decimal(9,2) unsigned NOT NULL,
`factpvptot` decimal(9,2) unsigned NOT NULL,
`coment` text collate utf8_spanish2_ci NOT NULL,
`myimg1` varchar(30) collate utf8_spanish2_ci NOT NULL default 'untitled.png',
`myimg2` varchar(30) collate utf8_spanish2_ci NOT NULL default 'untitled.png',
`myimg3` varchar(30) collate utf8_spanish2_ci NOT NULL default 'untitled.png',
`myimg4` varchar(30) collate utf8_spanish2_ci NOT NULL default 'untitled.png',
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_spanish2_ci AUTO_INCREMENT=2 ";
if(mysqli_query($db, $tg)){
global $dat5;
$dat5 = "\tCREADA TABLA ".$vname.".\n";
} else {print( "* NO OK TABLA GASTOS. ".mysqli_error($db)."\n");
global $dat5;
$dat5 = "\tNO CREADA TABLA ".$vname.". ".mysqli_error($db).".\n";
}
// CREA EL DIRECTORIO DE DOC GASTOS.
$vn1 = "docgastos_".date('Y');
$carpeta1 = "Users/".$_SESSION['ref']."/".$vn1;
if (!file_exists($carpeta1)) {
mkdir($carpeta1, 0777, true);
copy("Images/untitled.png", $carpeta1."/untitled.png");
copy("Images/pdf.png", $carpeta1."/pdf.png");
global $dat5b;
$dat5b = "\tCREADO EL DIRECTORIO ".$carpeta1.".\n";
}
else{die("* NO HA CREADO EL DIRECTORIO ".$carpeta."\n");
global $dat5b;
$dat5b = "\tNO CREADO EL DIRECTORIO ".$carpeta1.".\n";
}
}
function inserbalg(){
global $db;
global $db_name;
$dy = date('Y');
$vname7 = $_SESSION['ref']."_balanceg";
$vname7 = "`".$vname7."`";
$vname7 = strtolower($vname7);
$balanceg2 = "INSERT INTO `$db_name`.$vname7 (`year`, `mes`, `iva`, `sub`, `tot`) VALUES
($dy, 'M01', '0.00', '0.00', '0.00'),
($dy, 'M02', '0.00', '0.00', '0.00'),
($dy, 'M03', '0.00', '0.00', '0.00'),
($dy, 'M04', '0.00', '0.00', '0.00'),
($dy, 'M05', '0.00', '0.00', '0.00'),
($dy, 'M06', '0.00', '0.00', '0.00'),
($dy, 'M07', '0.00', '0.00', '0.00'),
($dy, 'M08', '0.00', '0.00', '0.00'),
($dy, 'M09', '0.00', '0.00', '0.00'),
($dy, 'M10', '0.00', '0.00', '0.00'),
($dy, 'M11', '0.00', '0.00', '0.00'),
($dy, 'M12', '0.00', '0.00', '0.00'),
($dy, 'TRI1', '0.00', '0.00', '0.00'),
($dy, 'TRI2', '0.00', '0.00', '0.00'),
($dy, 'TRI3', '0.00', '0.00', '0.00'),
($dy, 'TRI4', '0.00', '0.00', '0.00'),
($dy, 'ANU', '0.00', '0.00', '0.00')
";
if(mysqli_query($db, $balanceg2)){
global $dat6;
$dat6 = "\tACTUALIZADA TABLA ".$vname7.".\n";
} else {
print("* NO OK VALUES EN ".$vname7.". ".mysqli_error($db)."</br>");
global $dat6;
$dat6 = "\tNO CREADA TABLA ".$vname7.". ".mysqli_error($db).".\n";
}
}
function inserbali(){
global $db;
global $db_name;
$dy = date('Y');
$vname8 = $_SESSION['ref']."_balancei";
$vname8 = "`".$vname8."`";
$vname8 = strtolower($vname8);
$balancei2 = "INSERT INTO `$db_name`.$vname8 (`year`, `mes`, `iva`, `sub`, `tot`) VALUES
($dy, 'M01', '0.00', '0.00', '0.00'),
($dy, 'M02', '0.00', '0.00', '0.00'),
($dy, 'M03', '0.00', '0.00', '0.00'),
($dy, 'M04', '0.00', '0.00', '0.00'),
($dy, 'M05', '0.00', '0.00', '0.00'),
($dy, 'M06', '0.00', '0.00', '0.00'),
($dy, 'M07', '0.00', '0.00', '0.00'),
($dy, 'M08', '0.00', '0.00', '0.00'),
($dy, 'M09', '0.00', '0.00', '0.00'),
($dy, 'M10', '0.00', '0.00', '0.00'),
($dy, 'M11', '0.00', '0.00', '0.00'),
($dy, 'M12', '0.00', '0.00', '0.00'),
($dy, 'TRI1', '0.00', '0.00', '0.00'),
($dy, 'TRI2', '0.00', '0.00', '0.00'),
($dy, 'TRI3', '0.00', '0.00', '0.00'),
($dy, 'TRI4', '0.00', '0.00', '0.00'),
($dy, 'ANU', '0.00', '0.00', '0.00')
";
if(mysqli_query($db, $balancei2)){
global $dat7;
$dat7 = "\tACTUALIZADA TABLA ".$vname8.".\n";
} else {
print("* NO OK VALUES EN ".$vname8.". ".mysqli_error($db)."</br>");
global $dat7;
$dat7 = "\tNO CREADA TABLA ".$vname8.". ".mysqli_error($db).".\n";
}
}
function inserbald(){
global $db;
global $db_name;
$dy = date('Y');
$vname9 = $_SESSION['ref']."_balanced";
$vname9 = "`".$vname9."`";
$vname9 = strtolower($vname9);
$balanced2 = "INSERT INTO `$db_name`.$vname9 (`year`, `mes`, `iva`, `sub`, `tot`) VALUES
($dy, 'M01', '0.00', '0.00', '0.00'),
($dy, 'M02', '0.00', '0.00', '0.00'),
($dy, 'M03', '0.00', '0.00', '0.00'),
($dy, 'M04', '0.00', '0.00', '0.00'),
($dy, 'M05', '0.00', '0.00', '0.00'),
($dy, 'M06', '0.00', '0.00', '0.00'),
($dy, 'M07', '0.00', '0.00', '0.00'),
($dy, 'M08', '0.00', '0.00', '0.00'),
($dy, 'M09', '0.00', '0.00', '0.00'),
($dy, 'M10', '0.00', '0.00', '0.00'),
($dy, 'M11', '0.00', '0.00', '0.00'),
($dy, 'M12', '0.00', '0.00', '0.00'),
($dy, 'TRI1', '0.00', '0.00', '0.00'),
($dy, 'TRI2', '0.00', '0.00', '0.00'),
($dy, 'TRI3', '0.00', '0.00', '0.00'),
($dy, 'TRI4', '0.00', '0.00', '0.00'),
($dy, 'ANU', '0.00', '0.00', '0.00')
";
if(mysqli_query($db, $balanced2)){
global $dat8;
$dat8 = "\tACTUALIZADA TABLA ".$vname9.".\n";
} else {
print("* NO OK VALUES EN ".$vname9.". ".mysqli_error($db)."</br>");
global $dat8;
$dat8 = "\tNO CREADA TABLA ".$vname9.". ".mysqli_error($db).".\n";
}
}
///////////////////////
/* Esta función es la que comprueva el año y las anteriores son dependientes de esta. */
function ayear(){
$filename = "Users/".$_SESSION['ref']."/year.txt";
$fw2 = fopen($filename, 'r+');
$fget = fgets($fw2);
fclose($fw2);
if($fget == date('Y')){
/*print(" <div style='clear:both'></div>
<div style='width:200px'>* EL AÑO ES EL MISMO </div>".date('Y')." == ".$fget );*/
}
elseif($fget != date('Y')){
print(" <div style='clear:both'></div>
<div style='width:200px'>* EL AÑO HA CAMBIADO </div>"/*.date('Y')." != ".$fget */);
modif();
modif2();
modif2b();
tingresos();
tgastos();
inserbalg();
inserbali();
inserbald();
global $dat1; global $dat2; global $dat3; global $dat4; global $dat4b;
global $dat5; global $dat5b; global $dat6; global $dat7; global $dat8;
global $datos;
$datos = $dat1.$dat2.$dat3.$dat4.$dat4b.$dat5.$dat5b.$dat6.$dat7.$dat8."\n";
}
}
/////////////////////////////////////////////////////////////////////////////////////////////////
/* Al inciar sesión suma una visita de la pepona, la fecha y la hora de entrada en el sistema. */
function admin_entrada(){
global $db;
global $db_name;
global $userid;
global $uservisita;
global $dir;
if (($_SESSION['Nivel'] == 'admin') || ($_SESSION['Nivel'] == 'user')){
$dir = "Users/".$_SESSION['ref']."/log";
}
$uservisita = $_SESSION['visitadmin'];
$total = $uservisita + 1;
$datein = date('Y-m-d/H:i:s');
$sqladin = "UPDATE `$db_name`.`admin` SET `lastin` = '$datein', `visitadmin` = '$total' WHERE `admin`.`ID` = '$userid' LIMIT 1 ";
if(mysqli_query($db, $sqladin)){
// print("* ");
} else {
print("</br>
<font color='#FF0000'>
* FATAL ERROR funcion admin_entrada(): </font></br> ".mysqli_error($db))."
</br>";
}
/* Aqui grabamos un archivo de log de sistema para controlar la actividad de la pepona dentro de la aplicación.
En el resto de la aplicación se seguira grabando toda la actividad en el mismo archivo .log ... */
global $datos;
$logdocu = $_SESSION['ref'];
$logdate = date('Y_m_d');
$logtext = "\n** INICIO SESION => .".$datein.".\n\t User Ref: ".$_SESSION['ref'].".\n\t User Name: ".$_SESSION['Nombre']." ".$_SESSION['Apellidos']."\n \n".$datos;
$filename = $dir."/".$logdate."_".$logdocu.".log";
$log = fopen($filename, 'ab+');
fwrite($log, $logtext);
fclose($log);
}
/////////////////////////////////////////////////////////////////////////////////////////////////
/* Nos imprime en pantalla, el número de visitas a la página 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>
".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>
".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>
".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>
".mysqli_error($db)."
</br>");
}
}
//////////////////////////////////////////////////////////////////////////////////////////////
/* Valida el formulario. Y retorna los errores. */
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>");
}
}
//////////////////////////////////////////////////////////////////////////////////////////////
/* Nos presenta en la pagina de inicio el balance y las sumas totales. */
function show_balance($errors=''){
if($_POST['show_formcl']){
$defaults = $_POST;
}
elseif($_POST['todo']){
$defaults = $_POST;
} else {
$defaults = array ('id' => '',
'year' => '',
'mes' => '',
'tot' => '',
'Orden' => $ordenar,
);
}
$carpeta = "Users/".$_SESSION['ref']."/ayear.php";
require "Users/".$_SESSION['ref']."/ayear.php";
$dm = array ( '' => 'MES TODOS',
'M01' => 'ENERO',
'M02' => 'FEBRERO',
'M03' => 'MARZO',
'M04' => 'ABRIL',
'M05' => 'MAYO',
'M06' => 'JUNIO',
'M07' => 'JULIO',
'M08' => 'AGOSTO',
'M09' => 'SEPTIEMBRE',
'M10' => 'OCTUBRE',
'M11' => 'NOVIEMBRE',
'M12' => 'DICIEMBRE',
'TRI0' => 'TRIMESTRAL',
'TRI1' => 'TRIMESTRE 1',
'TRI2' => 'TRIMESTRE 2',
'TRI3' => 'TRIMESTRE 3',
'TRI4' => 'TRIMESTRE 4',
'ANU' => 'ANUAL',
);
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>");
}
$ordenar = array ( '`id` ASC' => 'ID Asc',
'`id` DESC' => 'ID Desc',
'`year` ASC' => 'YEAR Asc',
'`year` DESC' => 'YEAR Desc',
'`mes` ASC' => 'MES Asc',
'`mes` DESC' => 'MES Desc',
'`tot` ASC' => 'TOTAL Asc',
'`tot` DESC' => 'TOTAL Desc',
);
print("
<table align='center' style=\"border:0px;margin-top:4px\">
<tr>
<th colspan=2>
BALANCE CONTABLE TRIMESTRAL
</th>
</tr>
<form name='todo' method='post' action='Balances/Balances.php' >
<tr>
<td align='center' class='BorderSup'>
<input type='submit' value='FILTRO BALANCES' />
<input type='hidden' name='todo' value=1 />
</td>
<td class='BorderSup'>
<div style='float:left'>
<select name='Orden'>");
foreach($ordenar as $option => $label){
print ("<option value='".$option."' ");
if($option == $defaults['Orden']){
print ("selected = 'selected'");
}
print ("> $label </option>");
}
print (" </select>
</div>
<div style='float:left'>
<select name='dy'>");
foreach($dy as $optiondy => $labeldy){
print ("<option value='".$optiondy."' ");
if($optiondy == $defaults['dy']){
print ("selected = 'selected'");
}
print ("> $labeldy </option>");
}
print (" </select>
</div>
<div style='float:left'>
<select name='dm'>");
foreach($dm as $optiondm => $labeldm){
print ("<option value='".$optiondm."' ");
if($optiondm == $defaults['dm']){
print ("selected = 'selected'");
}
print ("> $labeldm </option>");
}
print (" </select>
</div>
</form>
</td>
</tr>
</table>
"); /* Fin del print */
//////////////////
//////////////////
//////////////////
global $db;
global $db_name;
global $dyt1;
$dyt1 = '';
$dm1 = 'TRI';
global $sent;
$sent = "LIKE '%".$dm1."%'";
$tabla1 = $_SESSION['ref'];
$tabla1 = strtolower($tabla1);
$vname = $tabla1."_balancei";
$vname = "`".$vname."`";
$sqli = "SELECT * FROM $vname WHERE `year` LIKE '%$dyt1%' AND `mes` $sent ORDER BY `id` ASC ";
$qbi = mysqli_query($db, $sqli);
/////////////////////
/* PARA SUMAR PVPTOT */
if(!$qbi){print(mysqli_error($db).".</br>");
}
else{
$qpvptot = mysqli_query($db, $sqli);
$rowpvptot = mysqli_num_rows($qpvptot);
$sumapvptoti = 0;
for($i=0; $i<$rowpvptot; $i++)
{
$veri = mysqli_fetch_array($qpvptot);
$sumapvptoti = $sumapvptoti + $veri['tot'];
}
}
/* FIN PARA SUMAR PVPTOT */
/////////////////////////
/////////////////////
/* PARA SUMAR IVA */
if(!$qbi){print(mysqli_error($db).".</br>");
}
else{
$qivae = mysqli_query($db, $sqli);
$rowivae = mysqli_num_rows($qivae);
$sumaivaei = 0;
for($i=0; $i<$rowivae; $i++)
{
$veri = mysqli_fetch_array($qivae);
$sumaivaei = $sumaivaei + $veri['iva'];
}
}
/* FIN PARA SUMAR IVA */
/////////////////////////
if(!$qbi){
print("<font color='#FF0000'>Se ha producido un error: </font></br>".mysqli_error($db)."</br>");
} else {
if(mysqli_num_rows($qbi) == 0){
print ("<table align='center'>
<tr>
<td>
<font color='#FF0000'>
NO HAY DATOS
</font>
</td>
</tr>
</table>.");
} else { print ("<div style='float:left;margin-left:3%;margin-right:auto'>
<table align='center'>
<th colspan=5 class='BorderInf'>
BALANCE INGRESOS ".mysqli_num_rows($qbi)."R.
</th>
</tr>
<tr>
<th class='BorderInfDch'>
AÑO
</th>
<th class='BorderInfDch'>
MES
</th>
<th class='BorderInfDch'>
IVA
</th>
<th class='BorderInfDch'>
SUBTOT
</th>
<th class='BorderInf'>
TOTAL
</th>
</tr>");
while($rowi = mysqli_fetch_assoc($qbi)){
global $vname;
global $dyt1;
//if($rowi['tot']!= 0.00){
print ( "<tr align='center'>
<form name='ver' action='Gastos_Ver_02.php' target='popup' method='POST' onsubmit=\"window.open('', 'popup', 'width=440px,height=670px')\">
<input name='dyt1' type='hidden' value='".$dyt1."' />
<input name='vname' type='hidden' value='".$vname."' />
<input name='id' type='hidden' value='".$rowi['id']."' />
<td class='BorderInfDch' align='right'>
<input name='year' type='hidden' value='".$rowi['year']."' />".$rowi['year']."
</td>
<td class='BorderInfDch' align='right'>
<input name='mes' type='hidden' value='".$rowi['mes']."' />".$rowi['mes']."
</td>
<td class='BorderInfDch' align='right'>
<input name='iva' type='hidden' value='".$rowi['iva']."' />".$rowi['iva']." €
</td>
<td class='BorderInfDch' align='right'>
<input name='sub' type='hidden' value='".$rowi['sub']."' />".$rowi['sub']." €
</td>
<td class='BorderInf' align='right'>
<input name='tot' type='hidden' value='".$rowi['tot']."' />".$rowi['tot']." €
</td>
</form>
</tr>");
//}
} /* Fin del while.*/
print("
<tr>
<td colspan='5' class='BorderInf'>
</td>
</tr>
<tr>
<td class='BorderInf' align='right'>
TOT:
</td>
<td class='BorderInf' align='right'>
IMP REP
</td>
<td class='BorderInfDch' align='left'>
".$sumaivaei." €
</td>
<td class='BorderInf' align='right'>
TOTAL
</td>
<td class='BorderInf' align='left'>
".$sumapvptoti." €
</td>
</tr>
</table>
</div>");
} /* Fin segundo else anidado en if */
} /* Fin de primer else . */
/////////////
/////////////
/////////////
$tabla1 = $_SESSION['ref'];
$tabla1 = strtolower($tabla1);
$vname = $tabla1."_balanceg";
$vname = "`".$vname."`";
$sqlb = "SELECT * FROM $vname WHERE `year` LIKE '%$dyt1%' AND `mes` $sent ORDER BY `id` ASC ";
$qb = mysqli_query($db, $sqlb);
/////////////////////
/* PARA SUMAR PVPTOT */
if(!$qb){print(mysqli_error($db).".</br>");
}
else{
$qpvptot = mysqli_query($db, $sqlb);
$rowpvptot = mysqli_num_rows($qpvptot);
$sumapvptotg = 0;
for($i=0; $i<$rowpvptot; $i++)
{
$verg = mysqli_fetch_array($qpvptot);
$sumapvptotg = $sumapvptotg + $verg['tot'];
}
}
/* FIN PARA SUMAR PVPTOT */
/////////////////////////
/////////////////////
/* PARA SUMAR IVA */
if(!$qb){print(mysqli_error($db).".</br>");
}
else{
$qivae = mysqli_query($db, $sqlb);
$rowivae = mysqli_num_rows($qivae);
$sumaivaeg = 0;
for($i=0; $i<$rowivae; $i++)
{
$verg = mysqli_fetch_array($qivae);
$sumaivaeg = $sumaivaeg + $verg['iva'];
}
}
/* FIN PARA SUMAR IVA */
/////////////////////////
if(!$qb){
print("<font color='#FF0000'>Se ha producido un error: </font></br>".mysqli_error($db)."</br>");
} else {
if(mysqli_num_rows($qb) == 0){
print ("<table align='center'>
<tr>
<td>
<font color='#FF0000'>
NO HAY DATOS
</font>
</td>
</tr>
</table>.");
} else { print ("<div style='float:left;margin-left:6px;margin-right:auto'>
<table align='center'>
<th colspan='5' class='BorderInf'>
BALANCE GASTOS ".mysqli_num_rows($qb)."R.
</th>
</tr>
<tr>
<th class='BorderInfDch'>
AÑO
</th>
<th class='BorderInfDch'>
MES
</th>
<th class='BorderInfDch'>
IVA
</th>
<th class='BorderInfDch'>
SUBTOT
</th>
<th class='BorderInf'>
TOTAL
</th>
</tr>");
while($rowb = mysqli_fetch_assoc($qb)){
global $vname;
global $dyt1;
//if($rowb['tot']!= 0.00){
print ( "<tr align='center'>
<form name='ver' action='Gastos_Ver_02.php' target='popup' method='POST' onsubmit=\"window.open('', 'popup', 'width=440px,height=670px')\">
<input name='dyt1' type='hidden' value='".$dyt1."' />
<input name='vname' type='hidden' value='".$vname."' />
<input name='id' type='hidden' value='".$rowb['id']."' />
<td class='BorderInfDch' align='right'>
<input name='year' type='hidden' value='".$rowb['year']."' />".$rowb['year']."
</td>
<td class='BorderInfDch' align='right'>
<input name='mes' type='hidden' value='".$rowb['mes']."' />".$rowb['mes']."
</td>
<td class='BorderInfDch' align='right'>
<input name='iva' type='hidden' value='".$rowb['iva']."' />".$rowb['iva']." €
</td>
<td class='BorderInfDch' align='right'>
<input name='sub' type='hidden' value='".$rowb['sub']."' />".$rowb['sub']." €
</td>
<td class='BorderInf' align='right'>
<input name='tot' type='hidden' value='".$rowb['tot']."' />".$rowb['tot']." €
</td>
</form>
</tr>");
//}
} /* Fin del while.*/
print("
<tr>
<td colspan='5' class='BorderInf'>
</td>
</tr>
<tr>
<td class='BorderInf' align='right'>
TOT:
</td>
<td class='BorderInf' align='right'>
IMP SOP
</td>
<td class='BorderInfDch' align='left'>
".$sumaivaeg." €
</td>
<td class='BorderInf' align='right'>
TOTAL
</td>
<td class='BorderInf' align='left'>
".$sumapvptotg." €
</td>
</tr>
</table>
</div>");
} /* Fin segundo else anidado en if */
} /* Fin de primer else . */
/////////////
/////////////
/////////////
global $vnamed;
$tablad = $_SESSION['ref'];
$tablad = strtolower($tablad);
$vnamed = $tablad."_balanced";
$vnamed = "`".$vnamed."`";
$sqld = "SELECT * FROM $vnamed WHERE `year` LIKE '%$dyt1%' AND `mes` $sent ORDER BY `id` ASC ";
$qbd = mysqli_query($db, $sqld);
/////////////////////
/* PARA SUMAR PVPTOT */
if(!$qbd){print(mysqli_error($db).".</br>");
}
else{
$qpvptotd = mysqli_query($db, $sqld);
$rowpvptotd = mysqli_num_rows($qpvptotd);
$sumapvptotd = 0;
for($i=0; $i<$rowpvptotd; $i++)
{
$verd = mysqli_fetch_array($qpvptotd);
$sumapvptotd = $sumapvptotd + $verd['tot'];
}
}
/* FIN PARA SUMAR PVPTOT */
/////////////////////////
/////////////////////
/* PARA SUMAR IVA */
if(!$qbd){print(mysqli_error($db).".</br>");
}
else{
$qivaed = mysqli_query($db, $sqld);
$rowivaed = mysqli_num_rows($qivaed);
$sumaivaed = 0;
for($i=0; $i<$rowivaed; $i++)
{
$verd = mysqli_fetch_array($qivaed);
$sumaivaed = $sumaivaed + $verd['iva'];
}
}
/* FIN PARA SUMAR IVA */
/////////////////////////
if(!$qbd){
print("<font color='#FF0000'>Se ha producido un error: </font></br>".mysqli_error($db)."</br>");
} else {
if(mysqli_num_rows($qbd) == 0){
print ("<table align='center'>
<tr>
<td>
<font color='#FF0000'>
NO HAY DATOS
</font>
</td>
</tr>
</table>.");
} else { print ("<div style='float:left;margin-left:6px;margin-right:auto'>
<table align='center'>
<th colspan=5 class='BorderInf'>
BALANCE DIFERENCIAL ".mysqli_num_rows($qbd)."R.
</th>
</tr>
<tr>
<th class='BorderInfDch'>
AÑO
</th>
<th class='BorderInfDch'>
MES
</th>
<th class='BorderInfDch'>
IVA
</th>
<th class='BorderInfDch'>
SUBTOT
</th>
<th class='BorderInf'>
TOTAL
</th>
</tr>");
while($rowd = mysqli_fetch_assoc($qbd)){
global $vnamed;
global $dyt1;
//if($rowi['tot']!= 0.00){
print ( "<tr align='center'>
<form name='ver' action='Gastos_Ver_02.php' target='popup' method='POST' onsubmit=\"window.open('', 'popup', 'width=440px,height=670px')\">
<input name='dyt1' type='hidden' value='".$dyt1."' />
<input name='vname' type='hidden' value='".$vnamed."' />
<input name='id' type='hidden' value='".$rowd['id']."' />
<td class='BorderInfDch' align='right'>
<input name='year' type='hidden' value='".$rowd['year']."' />".$rowd['year']."
</td>
<td class='BorderInfDch' align='right'>
<input name='mes' type='hidden' value='".$rowd['mes']."' />".$rowd['mes']."
</td>
<td class='BorderInfDch' align='right'>
<input name='iva' type='hidden' value='".$rowd['iva']."' />".$rowd['iva']." €
</td>
<td class='BorderInfDch' align='right'>
<input name='sub' type='hidden' value='".$rowd['sub']."' />".$rowd['sub']." €
</td>
<td class='BorderInf' align='right'>
<input name='tot' type='hidden' value='".$rowd['tot']."' />".$rowd['tot']." €
</td>
</form>
</tr>");
//}
} /* Fin del while.*/
print("
<tr>
<td colspan='5' class='BorderInf'>
</td>
</tr>
<tr>
<td class='BorderInf' align='right'>
TOT:
</td>
<td class='BorderInfDch' align='right'>
IMP DF
</td>
<td class='BorderInfDch' align='left'>
".$sumaivaed." €
</td>
<td class='BorderInf' align='right'>
TOT DF
</td>
<td class='BorderInf' align='left'>
".$sumapvptotd." €
</td>
</tr>
</table>
</div>");
} /* Fin segundo else anidado en if */
} /* Fin de primer else . */
///////////////////////////////////////
///////////////////////////////////////
///////////////////////////////////////
} /* Fin show_balance(); */
/////////////////////////////////////////////////////////////////////////////////////////////////
/* 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 según el nivel del usuario. */
function master_index(){
require 'Inclu/Master_Index_00.php';
}
/////////////////////////////////////////////////////////////////////////////////////////////////
/* Desconectamos del sistema y grabamos en la bbdd la hora y el dia en que el usuario cierra sesión.
La funcion desconexion se ejecuta en otro script que graba la hora de salida del sistema.
Lo he integrado en el master index por cuestiones de comodidad, esta función no se ejecuta en este script directamente. */
function desconexion(){
print("<form name='cerrar' action='Admin/mcgexit.php' method='post'>
<tr>
<td valign='bottom' align='right' colspan='8'>
<input type='submit' value='Cerrar Sesion' />
</td>
</tr>
<input type='hidden' name='cerrar' value=1 />
</form>
");
}
function salir() { unset($_SESSION['ID']);
unset($_SESSION['Nivel']);
unset($_SESSION['Nombre']);
unset($_SESSION['Apellidos']);
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';
/////////////////////////////////////////////////////////////////////////////////////////////////
/* Nos emvia por email un aviso del inicio de sesión de la Pepona. */
function admin(){
/**/
require_once('geo_class/geoplugin.class.php');
$geoplugin = new geoPlugin();
$geoplugin->locate();
$text_body = " <!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<meta http-equiv='content-type' content='text/html' charset='utf-8' />
<meta http-equiv='Content-Language' content='es-es'>
<META NAME='Language' CONTENT='Spanish'>
</head>
<body bgcolor='#D7F0E7'>
<STYLE>
body {
font-family: 'Times New Roman', Times, serif;
}
body a {
text-decoration:none;
}
table a {
color: #666666;
text-decoration: none;
font-family: 'Times New Roman', Times, serif;
}
table a:hover {
color: #FF9900;
text-decoration: none;
}
tr {
margin: 0px;
padding: 0px;
}
td {
margin: 0px;
padding: 6px;
}
th {
padding: 6px;
margin: 0px;
text-align: center;
color: #666666;
}
</STYLE>
<table font-family='Times New Roman' width='90%' border='0' align='center' cellpadding='0' cellspacing='0'>
<tr>
<th colspan='3'>
NOTIFICACION DE USO DE LA APLICACION CONTAJUAN
</th>
</tr>
<tr>
<th colspan='3'>MENSAJE AUTOMÁTICO</th>
</tr>
<tr>
<td align='right'>ASUNTO:</td>
<td width='12'> </td>
<td align='left'>
SE HA UTILIZADO LA APLICACIÓN CONTAJUAN.
</td>
</tr>
<tr>
<td align='right'>FECHA:</td>
<td> </td>
<td align='left'>".date('d-m-Y/H:i:s')."</td>
</tr>
<tr>
<td align='right'>URL:</td>
<td> </td>
<td align='left'>".$_SERVER['HTTP_HOST']."/".$_SERVER['PHP_SELF']."</td>
</tr>
<tr>
<td align='right'>SERVER NAME:</td>
<td> </td>
<td align='left'>".$_SERVER['SERVER_NAME']."</td>
</tr>
<tr>
<td align='right'>SERVER IP:</td>
<td> </td>
<td align='left'>".$_SERVER['SERVER_ADDR']."</td>
</tr>
<tr>
<td align='right'>SERVER ADMIN:</td>
<td> </td>
<td align='left'>".$_SERVER['SERVER_ADMIN']."</td>
</tr>
<tr>
<td align='right'>IP ACCESS:</td>
<td> </td>
<td align='left'>".$_SERVER['REMOTE_ADDR']."</td>
</tr>
<tr>
<td align='right'>GEOLOCATION FOR:</td>
<td> </td>
<td align='left'>{$geoplugin->ip}</td>
</tr>
<tr>
<td align='right'>LONGITUD:</td>
<td> </td>
<td align='left'>{$geoplugin->longitude}</td>
</tr>
<tr>
<td align='right'>LATITUD:</td>
<td> </td>
<td align='left'>{$geoplugin->latitude}</td>
</tr>
<tr>
<td align='right'>COUNTRY NAME</td>
<td> </td>
<td align='left'>{$geoplugin->countryName}</td>
</tr>
<tr>
<td align='right'>COUNTY CODE:</td>
<td> </td>
<td align='left'>{$geoplugin->countryCode}</td>
</tr>
<tr>
<td align='right'>REGION:</td>
<td> </td>
<td align='left'>{$geoplugin->region}</td>
</tr>
<tr>
<td align='right'>CITY:</td>
<td> </td>
<td align='left'>{$geoplugin->city}</td>
</tr>
<tr>
<td align='right'>AREA CODE:</td>
<td> </td>
<td align='left'>{$geoplugin->areaCode}</td>
</tr>
<tr>
<td align='right'>DMA CODE:</td>
<td> </td>
<td align='left'>{$geoplugin->dmaCode}</td>
</tr>
</table>
</body>
</html>";
$headers = array ('From' => "juanbarrospazos@hotmail.es",
'Subject' => "NOTIFICACION DE USO DE LA APLICACION CONTAJUAN");
$destinatario= "juanbarrospazos@hotmail.es";
$titulo= "NOTIFICACION DE USO DE LA APLICACION CONTAJUAN";
$responder= "juanbarrospazos@hotmail.es";
$remite= "juanbarrospazos@hotmail.es";
$remitente= "MENSAJE GENERADO AUTOMATICAMENTE";
$separador = "_separador".md5 (uniqid (rand()));
$cabecera = "Date: ".date('l j F Y, G:i')."\n";
$cabecera .="MIME-Version: 1.0\n";
$cabecera .="From: ".$remitente."<".$remite.">\n";
$cabecera .="Return-path: ". $remite."\n";
$cabecera .= "Reply-To: ".$remite."\n";
$cabecera .="X-Mailer: PHP/". phpversion()."\n";
$cabecera .= "Content-Type: multipart/mixed;"."\n";
$cabecera .= " boundary=$separador"."\r\n\r\n"; /**/
$texto_html ="\n"."--$separador"."\n"; /**/
$texto_html .="Content-Type:text/html; charset=\'utf-8\'"."\n";
$texto_html .="Content-Transfer-Encoding: 7bit"."\r\n\r\n";
$texto_html .= $text_body;
$mensaje= $texto_html;
if( mail($destinatario, $titulo, $mensaje, $cabecera)){print("");
}else{print("");}
}
?>
No hay comentarios:
Publicar un comentario
Gracias por vuestros aportes.