Si on a un processus long (analyse anti-virus, analyse de dictionnaire), on veut afficher un message à l'utilisateur pour lui dire que le serveur travaille. Une fois le travail terminé, ce message doit disparaitre au profit de la page de conclusion. On peut proposer le code suivant :
<?php
echo "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n";
echo "<HTML>\n";
echo "  <head>\n";
echo "    <style type=\"text/css\">\n";
// Definiton du style de message temporaire (pour les navigateurs ne supportant
// pas le javascript : On cache !
echo "       span.messagetmp { display:none;}\n";
echo "    </style>\n";
echo "    <title>test</title>\n";
echo "  </head>\n";
echo "  <body>\n";
echo "Toujours affiche<br/>";
echo "<span id='messagetmp' class='messagetmp'>\n";
// Debut du message qui  ne sera affiche que temporairement
echo "Debut<br>\n";
echo "Procedure qui prend du temps en cours. Veuillez patienter...<br/>\n";
// Fin du message affiche temporairement
echo "</span>\n";
echo "<script type='text/javascript'>\n";
// On affiche le message si on supporte le javascript
echo "if(document.getElementById)\n";
echo "  document.getElementById('messagetmp').style.display = 'block';\n";
echo "</script>\n";
ob_flush();
flush();

// Mettre ici le processus long (pour essai, on attend 5 secondes)
sleep(5);

echo "<script type='text/javascript'>\n";
// On cache le message une fois le traitement termine
echo "if(document.getElementById)\n";
echo "  document.getElementById('messagetmp').style.display = 'none';\n";
echo "</script>\n";
echo "Fin<br>\n";
echo "</body>\n";
echo "</html>\n";
?>
Les navigateurs ne supportant pas le javascript ne voient rien du message (il est caché par le style). Les navigateurs ne supportant ni les styles ni le javascript (navigateurs texte) verront le message.
Des cookies d'analyse d'audience sont utilisés sur ce site