Hola quería que me ayudarais con el siguiente problema,
Resulta que quiero que al refrescar/cargar la pagina web me alterne dos imágenes banners de modo que en cada carga muestre una distinta.
Ojo no la quiero random ya que de ese modo lo consigo hacer(efecto que no deseo ya que a lo mejor cada dos, tres... refrescos me la alterna). Se me ocurre guardar un flag en la BD como valor a 1 de modo que si recargo de nuevo compruebo el valor, si es igual a 1 cargo el siguiente banner y lo pongo a 2 el flag y así al revés poniéndolo de nuevo a 1. Pero no querría legar hacer este procedimiento...
También quiero hacerla sin necesidad de utilizar metodos alternativos donde almacenar un estado como pueden ser: sesiones, cookies, ficheros, localstorage etc...
Espero vuestra respuesta, saludos!
¿Y donde pretendes guardar la flag? El código de drvy tecnicamente escribe la flag en el nombre del archivo que no se escribe en el archivo per se (dependiendo del sistema de archivos) pero igual se guarda en algun lado. Incluso la Base de Datos guarda la informacion en algun lado (como te dijeron).
Puedes pasar la ultima imagen por una peticion HTTP pero es modificable:
<?php
$img = array('archivo1.jpg', 'archivo2.gif'); //array de imagenes if(isset($_GET["last"]) && is_numeric($_GET["last"]) && $_GET["last"] < $max){ $last = $_GET["last"];
} else {
$last = -1; //Cualquier valor de rand vale.
}
do {
} while($rand == $last);
$img[$rand]; //imagen a desplegar
Tambien puedes hacer un desplegado en base al tiempo, pero no hay garantía que no se repita la imagen.
<?php
$img = array('archivo1.jpg', 'archivo2.gif'); //array de imagenes $step = '10'; //10 segundos.
$ip = ip2long($_SERVER["REMOTE_ADDR"]);
$seed = $time + $ip;
$hash = floor($seed % ($step * $max) / $step); $img[$hash]; //imagen a desplegar;
?>
Lo único es que si la persona hace el refresco de la pagina antes de lo que hayas puesto en $step, se muetra la misma imagen.