Affichage d'une page d'alerte format html (temporaire et une seule fois) et remplacement par la page principale.

Contenu du snippet

Permet de faire passer une page d'alerte avant l'affichage de votre page principale.
Avec la possibilité de filtrer les utilisateurs à prevenir et d'avertir l'administrateur que le message a bien été lu (par mail).
Ce code nécéssite une base de donnée de type MySql. Cette partie peut être remplacée par des cookies mais dans ce cas on ne peux être sur que le message ne sera vu qu'une seule fois.

Source / Exemple :


<?php

/* 
ce php necessite la creation d'un table dans une base de donnée pour savoir si c'est lu et par qui
et pour être sur que le messsage ne sera lu qu'une fois, l'adminstrateur est prevenu par mail de la lecture du message.

  • /
/* le SQL de creation de la table*/ /* SQLyog - Free MySQL GUI v5.19 Host - 3.23.43-nt : Database - votreDataBase
Server version : 3.23.43-nt Table structure for table `trace` DROP TABLE IF EXISTS `trace`; CREATE TABLE `trace` ( `machine` varchar(20) default NULL, `lu` varchar(11) binary default NULL, `date` date default NULL, `time` time default NULL ) TYPE=MyISAM;
  • /
function Connexion ($pNom, $pMotPasse, $pBase, $pServeur) { $connexion = mysql_pconnect ($pServeur, $pNom, $pMotPasse); if (!$connexion) { echo "Désolé, connexion au serveur $pServeur impossible\n"; exit; } if (!mysql_select_db ($pBase, $connexion)) { echo "Désolé, accès à la base $pBase impossible\n"; echo "<B>Message de MySQL :</B> " . mysql_error($connexion); exit; } return $connexion; } $date = date("Y-m-d"); $time = date("H:i:s"); $hostaddr = gethostbyaddr($_SERVER['REMOTE_ADDR']); //echo "<br>$hostaddr<br>"; $machine = explode(".", $hostaddr); //echo "<br>machine : $machine[0] date : $date time : $time<br>"; $str = strtoupper($machine[0]); /* si l'on ne veux que seuls certain hostname puisse voir le message sinon on enleve la partie switch ou on place un default :
  • /
switch ($str) { case 'host1' : case 'host2' : case 'host3' : $SQLuser="votre_user"; $SQLpassword="votre_password"; $SQLdb = "votre_basededonnée"; $SQLServer ="votreserverpourlabase de donnée"; $SQLcnx = Connexion ($SQLuser, $SQLpassword, $SQLdb, $SQLServer); mysql_select_db($SQLdb , $SQLcnx) or die("Select DB Error: ".mysql_error()); $query = "select machine from trace where machine='".$machine[0]."'"; //print("<h3>$query</h3>"); $result = mysql_query($query, $SQLcnx) or die("insert DB Error: ".mysql_error()); $numrow = mysql_num_rows($result); if ($numrow == 0) { //echo "not exist"; $query = "INSERT INTO trace (machine,lu,date,time ) VALUES ( '$machine[0]',1,'$date','$time');"; //print("<h3>$query</h3>"); $result = mysql_query($query, $SQLcnx) or die("insert DB Error: ".mysql_error()); /* partie envoi du mail */ $nom="mon_server"; // pas vraiment d'importance c'est pour que l'admin le repere $mail="celui_qui_envoie_le_mail@yahoo.fr"; $objet="page lue par ".$str; $message="lu"; $dest = "vous@votre_adresse.fr"; // administrateur address /////voici la version Mine $headers = "MIME-Version: 1.0\r\n"; //////ici on détermine le mail en format text $headers .= "Content-type: text/plain; charset=iso-8859-1\r\n"; ////ici on détermine l'expediteur et l'adresse de réponse $headers .= "From: $nom <$mail>\r\nReply-to : $nom <$mail>\nX-Mailer:PHP"; $subject="$objet"; $destinataire=$dest; $body="$message"; mail($destinataire,$subject,$body,$headers) ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>Message</title> <script language="JavaScript"> function ShowT(){ //alert ("start timer"); setTimeout("exitview()",8000); //on affiche 8 secondes et c'est fini } function exitview(){ //alert("exit"); var url = "http://votresite.fr"; // changez ici le lien et redirigez votre visiteur où vous voulez window.location.replace(url); } </script> <style> </head> <body onload="ShowT()"> <h3> Votre texte html qui va apparaitre 8 secondes et être remplacé par l'autre page sans possibilité de marche arriere (back)</h3> </body> </html> <? exit; } else { ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>Message</title> <script language="JavaScript"> function ShowT(){ var url = "http://votresite.fr"; // votre site par defaut window.location.replace(url); } </script> <style> </head> <body onload="ShowT()"> </body> </html> <? } } //switch ?>

Conclusion :


c'est la fonction timer du javascript qui nous redirige et c'est le php qui assure que la page n'est vue qu'une seule fois.

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.