martes, 26 de abril de 2016

Php - 20. Sesiones y contador

En esta entrada os pongo un ejemplo de codigo con el que controlamos el inicio de sesion, que en este caso nos servira para incrementar el contador de visitas solo si es la primera vez que entra el usuario, si recarga la pagina no volvera a incrementar el contador, a menos que borre las sesiones desde el menu de herramientas del navegador o cierre el navegador.
Para ello dispondremos de 2 archivos, el primero con las funciones que usaremos y el siguiente el que se ejecuta al abrir la web y realiza las llamadas al de funciones.
El archivo de funciones lo llamaremos funciones.php y es asi:

<?php
function iniciasesion(){
    session_start();
    //echo "sesion iniciada";
}
function compruebasesion(){
    if(isset($_SESSION['sesion'])){
        //echo "sesion ya iniciada";
        $suma=0;
    }else {
        //echo "sesion no iniciada";
        $suma=1;
    }
    return $suma;
}
function contador($suma){
    $archivo="contador.txt";
    $f=fopen($archivo,"r");
    $contador=fgets($f,26);
    fclose($f);
    if($suma!=0){
        $contador++;
        $f=fopen($archivo,"w+");
        fwrite($f,$contador,26);
        fclose($f);
       
    } else {
        $contador=$contador;
    }
    return ($contador);
}
?>
En este archivo incluimos las llamadas a las funciones que realizaremos desde el archivo que inicia la web.
He dejado algunos comentarior "//" si se quitan, se imprimiran mensajes en pantalla comunicando si la sesion esta iniciada o no, mediante el comando "echo".
Con "if(isset($_SESSION['sesion'])" se comprueba si la variable sesion existe dentro de la SESSION para ver si ya esta iniciada.
El archivo web lo llamaremos index.php y esta es su composicion:
<!DOCTYPE html>
<?php
include("funciones.php");
iniciasesion();
$suma=0;
$suma=compruebasesion();
if($suma==1){
    $_SESSION['sesion']=1;
}  
?>

<html lang="es">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-secale=1.0">
<meta name="author" content="Jose Ojeda (ticoticotaa)">
<meta name="keywords" content="html,manuales,aplicaciones">
<meta name="description" content="mi descripcion del documento">
<link href="css/estilo.css" rel="stylesheet" type="text/css">
<title>Mi web por Ticoticotaa</title>
</head>
<body>
<header>
<h1>TITULO DE MI WEB</h1>
<nav>
<ul>
<li><a href="index.html">Incio</a></li>
<li><a href="acercade.html">Acerca de</a></li>
<li><a href="contacto.html">Contacto</a></li>
</ul>
</nav>
</header>
<section>
<article>
<h1>Encabezado principal</h1>
<p>testojdljdlajldsjaljdslajlfdjsaljlsdjlfjalsdjljdkl</p>
</article>
<aside>
<h1>Redes sociales</h1>
</aside>
</section>
<footer>
<div id="contador">
<h3>
<?php
$contador=contador($suma);
echo "Eres el visitante numero ".$contador;
?>

</h3></div>
</footer></body></html>
El inicio de sesion es lo primero que hay que ejecutar, antes que cualquier otro elemento de la web, despues se comprueba si ya esta iniciada la sesion con el nombre sesion, en caso de que no lo este le damos su valor, obtenemos tambien el valor para $suma con el fin de incrementar o no el contador.
He utilizado codigo ya explicado en anteriores entradas, con la salvedad de "include" que nos sirve para tener por un lado el archivo con las funciones y poder incluirlo en el otro para poder realizar las llamadas a las funciones.
Espero os sea util.

sábado, 9 de abril de 2016