Code des fichiers sources

Ces fichiers sont utilisés sur chaque page, ils contiennent les menus, et certains scripts succeptibles d'être utilisés partout.
Il y a deux fichiers qui servent à cela : un fichier "source-haut.php" et un autre "source-bas.php".

source-haut.php

<?php
$TempsDebutExecutionScript=array_sum(explode(' ',microtime()));
$NombreDeRequetes=0;
$TempsTotalSQL=0;

/***************************************
     A utiliser pour les requêtes
***************************************/
function RequeteSQL($requete,$erreur='',$Action='Recuperation')
{
  //infos SQL (nombre de requêtes et temps)
    global $NombreDeRequetes,$TempsTotalSQL;
    $NombreDeRequetes++;
  //message d'erreur possible
    $MsgErrStandard='<p>Une erreur est survenue durant la requête :<br />'.
      $erreur.'</p>'."\n".'<p>Requête :<br />'.$requete.'</p>'."\n".'<p>Erreur (numéro ';
  //pour la durée de la requête
    $TempsDebutSQL=array_sum(explode(' ',microtime()));
  //on envoie la requête
    if($Action==='Recuperation')
      $Resultat=mysql_query($requete)or die($MsgErrStandard.mysql_errno().') :'.mysql_error().'</p></body></html>');
    elseif($Action==='Insertion'or $Action==='Modification')
      $Resultat=mysql_unbuffered_query($requete)or die($MsgErrStandard.mysql_errno().') :'.mysql_error().'</p></body></html>');
  //temps de fin d'exécution SQL
    $TempsTotalSQL+=array_sum(explode(' ',microtime()))-$TempsDebutSQL;
  return $Resultat;
}

if(!isset($charset))
  $charset='iso-8859-1';

//si on veut voir ce fichier
if($_SERVER['SCRIPT_NAME']==='/autres/source-haut.php')
{
  $_GET['source']='';
  $titre='Page m&egrave;re';
}

//pour la BDD
  $SQL['TitrePage']=$titre;

require'confidentiel.php';
/*si on a demandé à voir la source, on modifie le titre
  et on empêche les moteurs de recherche d'indexer
  (sinon mon site est "référencé en double" dans google...)*/
    if(isset($_GET['source']))
    {
      $titre='Code de la page : &laquo;'.$titre.'&raquo;';
      if($_SERVER['SCRIPT_NAME']!=='/autres/source-haut.php')
        $head='<!--Pour ne pas indexer les sources-->'."\n\t".
              '<meta http-equiv="robots" content="noindex" />'."\n\t";
      $head.='<!--La feuille de style pour le code html-->'."\n\t".
             '<link rel="stylesheet" type="text/css" href="/autres/css/code.css" />';
    }
/*servir le bon type MIME
    if(!function_exists('htmlspecialchars_decode'))
    {
      function htmlspecialchars_decode($str)
      {
        return str_replace(array('&lt;','&gt;','&amp;'),array('<','>','&'),$str);
      }
    }*/
    if(false!==strpos($_SERVER['HTTP_ACCEPT'],'application/xhtml+xml')or $type_user_agent=='validateur'){
       $ContentType='application/xhtml+xml';
       $Doctype='<?xml version="1.0" encoding="'.$charset.'"?'.">\n".
                '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">';
       ob_start();
      }
    else{
      $ContentType='text/html';
      $Doctype='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">';
      function callback($texte)
      {
        $in=array(' xml:lang="','xmlns="http://www.w3.org/1999/xhtml"',' />');
        $out=array(' lang="','','>');
        return /*htmlspecialchars_decode(html_entities(*/str_replace($in,$out,$texte);//,ENT_NOQUOTES),ENT_NOQUOTES);
      }
      ob_start('callback');
      }
    header('Content-Type:'.$ContentType.';charset=',$charset);
/************
//affichage de la page*/
  echo $Doctype,"\n",'<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">',"\n",'<head>',"\n\t",
      '<!--metas de contenu-->',"\n\t",
      '<meta http-equiv="Content-type" content="',$ContentType,';charset=',$charset,'" />',"\n\t",
      '<meta http-equiv="Content-Script-Type" content="text/javascript" />',"\n\t",
      '<meta http-equiv="Content-Style-Type" content="text/css" />',"\n\t",
      '<meta http-equiv="imagetoolbar" content="no" />',"\n\n\t",
      '<title>',$titre,' - Sylvain.sab</title>';?>
    <!--links css, rss-->
    <link rel="alternate" type="application/rss+xml" title="Sylvain.sab - Flux RSS' href='/rss/rss.xml" />
    <link rel="stylesheet" type="text/css" href="/autres/css/styledefaut.css" />

    <!--links aide a la navigation-->
    <link rel="home"  href="/" title="Page d'accueil du site" />
    <link rel="help" title="Liste des Accesskeys de ce site" href="/apropos/accesskeys.php" />
    <link rel="author" title="Contacter l'auteur" href="/mail/" />
    <!--link rel="contents" href="/apropos/plan.php" /-->

    <!--autres balises link-->
    <link rel="copyright" href="/apropos/licence.php" title="Le contenu de ce site est sous licence Creative Common :-)" />
    <link rel="icon" type="image/png" href="/img/mini/favicon.png" />
<?php
if(isset($head))
{
  echo"\n\t",'<!--les autres balises selon les pages-->',"\n\t";
  if(is_array($head))
  {
    if(is_array($head['css']))
      foreach($head['css']as $numero_css=>$donnees)
      {
        if(empty($donnees['media']))
          $donnees['media']='all';
        echo'<link rel="stylesheet" type="text/css" media="',$donnees['media'],'" href="/autres/css/',$donnees['filename'],'.css" />',"\n\t";
      }
    if(is_array($head['access']))
      foreach($head['access']as $numero_linkaccess=>$attributs_et_valeurs)
      {
        echo'<link ';
        foreach($attributs_et_valeurs as $attr=>$val)
          echo $attr,'="',$val,'" ';
        echo'/>',"\n\t";
      }
    if(!empty($head['autres']))
      echo $head['autres'];
  }
  else
    echo $head;
  echo"\n";
}
echo'</head><body>',"\n";
/************
/menu
/***********/
echo'<div id="menu"><a tabindex="10" accesskey="1" href="/index.php" title="Accesskey:1">',
 '<img class="m" alt="Accueil" src="/img/boutons/btaccueil.gif" /></a>',
 '<a tabindex="20" accesskey="2" href="/news.php" title="Les News du site (Accesskey:2)">',
 '<img class="m" alt="News" src="/img/boutons/btnews.gif" /></a>',
 '<a tabindex="30" accesskey="3" href="/logiciels/" title="Plusieurs logiciels utiles (Accesskey:3)">',
 '<img class="m" alt="Logiciels" src="/img/boutons/btlogiciels.gif" /></a><span class="d">',
 '<a tabindex="30" accesskey="4" href="/configurer/" title="Configurer et optimiser Windows et des logiciels',
 ' (Accesskey:4)"><img class="m" alt="Configurer" src="/img/boutons/btconfigurer.gif" /></a></span>',
 '<a tabindex="50" accesskey="5" href="/cestquoi/" title="L\'informatique, c\'est pas compliqu&eacute; !">',
 '<img class="m" alt="C\'est Quoi ?" src="/img/boutons/btcestquoi.gif" /></a><a tabindex="60" href="/html.php"',
 ' title="Des conseils et astuces pour vos sites."><img class="m" alt="HTML" src="/img/boutons/bthtml.gif" /></a>',
 '<a tabindex="70" href="/logos/"><img class="m" alt="Logos" src="/img/boutons/btlogos.gif" /></a><span class="d">',
 '<a tabindex="80" href="/liens.php"><img class="m" alt="Liens" src="/img/boutons/btliens.gif" /></a></span><br />',
 '<span class="r"><a tabindex="90" href="/rss/" title="Le flux RSS de ce site"><img alt="Flux RSS"',
 ' src="/img/rect/rectrss.png" /></a></span><span class="r"><a tabindex="100" href="/temp/"',
 ' title="Plusieurs vid&eacute;os de d&eacute;monstration"><img alt="Vid&eacute;os" src="/img/rect/temp.png" /></a>',
 '</span><span class="r"><a tabindex="110" href="/mail/" title="Me contacter"><img alt=" @ Contact @ "',
 ' src="/img/rect/contact.png" /></a></span><span class="r"><a href="/apropos/" accesskey="6" tabindex="120">',
 '<img alt="A propos" src="/img/rect/apropos.png" /></a></span></div><hr id="barmen" />',"\n";
//************
//pour voir la source*/
if(isset($_GET['source']))
{
  $SQL['TypePage']=4;
  /***************************************
    Pour générer les codes
  ***************************************/
    function GenererCodeSourcePHP($adresseFichier)
    {
      $page=highlight_file($adresseFichier,true);
      $page=preg_replace('`<font color="(#[a-z0-9]+)">`i','<span style=<<guillemet>>color:$1<<guillemet>>>',$page);
    
      $in =array('"',     '\'',    '<code>',                              '</code>','</font>','<br />','&nbsp;','<<guillemet>>','<span style="color:#000000">','</span>'."\n".'</pre>',"\n".'</span></pre>','class="xhtml">'."\n");
      $out=array('&quot;','&#039;','<pre id="view-source" class="xhtml">','</pre>', '</span>',"\n",    ' ','"',                 '',                            '</pre>',               '</pre>',            'class="xhtml">');
      $page=str_replace($in,$out,$page);
    
      $page=preg_replace_callback('#\?&gt;(.+)&lt;\?php#sU','ColorerCodeHTML',$page);
  
      return $page;
    }
    function ColorerCodeHTML($Code)
    {
      //les entités
      $Code[0]=preg_replace('`&amp;(#x?[a-z0-9]+|[a-z]+)`i','<span class="ent">$0</span>',$Code[0]);
      //les commentaires
      $Code[0]=preg_replace('#&lt;!--.*--&gt;#sU','<span class="com">$0</span>',$Code[0]);
      //les balises et attributs
      $SyntaxeBalise='#&lt;(/?[a-z0-9]+)( (.*))?( /)?&gt;#sU';
      $Code[0]=preg_replace_callback($SyntaxeBalise,'ColorerBalise',$Code[0]);
    
      return $Code[0];
    }
    function ColorerBalise($Balise)
    {
      //balise (pas les attributs)
      $Balise[0]=str_replace('&lt;'.$Balise[1],'&lt;<span class="bal">'.$Balise[1].'</span>',$Balise[0]);
      //attributs
      $Balise[0]=preg_replace('#([a-z]+)=((&\#039;|&quot;)([^\3]*)\3)#U','<span class="attr">$1</span>=<span class="val">$2</span>',$Balise[0]);
    
      return $Balise[0];
    }
  if($_SERVER['SCRIPT_NAME']==='/autres/source-haut.php')
  {
    echo'<h1>Code des fichiers sources</h1>',"\n\n",
        '<p>Ces fichiers sont utilis&eacute;s sur chaque page, ils contiennent les menus, ',
        'et certains scripts succeptibles d\'&ecirc;tre utilis&eacute;s partout.<br />',"\n\t",
        'Il y a deux fichiers qui servent &agrave; cela : un fichier "source-haut.php" et un autre "source-bas.php".</p>',"\n\n";
    echo'<h2>source-haut.php</h2>',GenererCodeSourcePHP('source-haut.php'),"\n\n\n",
        '<h2>source-bas.php</h2>',"\n",GenererCodeSourcePHP('source-bas.php');
  }
  else
  {
    echo'<h1>',$titre,'</h1>',"\n",'<p><a href="',$_SERVER['PHP_SELF'],'">Retour</a></p>',"\n",
        '<p>Ceci est le code php du fichier :</p>',"\n",GenererCodeSourcePHP($_SERVER['SCRIPT_FILENAME']),"\n",
        '<p><a href="',$_SERVER['PHP_SELF'],'">Retour</a></p>';
  }
  require $_SERVER['DOCUMENT_ROOT'].'/autres/source-bas.php';
  exit;
}
  /*
  $page=str_replace(array('"','\''),array('&quot;','&#039;'),$page);
  $page=str_replace(array('<code>','</code>','</font>','<br />','&nbsp;'),
                    array('<pre id="view-source" class="xhtml">','</pre>','</span>',"\n",' '),$page);
  $page=str_replace(array('<<guillemet>>','<span style="color:#000000">','</span>'."\n".'</pre>',"\n".'</span></pre>','class="xhtml">'."\n"),
                    array('"','','</pre>','</pre>','class="xhtml">'),$page);
  */
?>

source-bas.php

<?php
if($_SERVER['SCRIPT_NAME']==='/autres/source-bas.php')
  die(header('Location:source-haut.php'));
/*************************************************/
/*                 Fonction bas                 */
/*************************************************/
//quelques variables qui vont servir
  $nomServeur=$_SERVER['SERVER_NAME'];
  $SQL['AdressePage']=htmlspecialchars($_SERVER['REQUEST_URI'],ENT_NOQUOTES);
  $AdresseComplete=$nomServeur.$SQL['AdressePage'];


/*MAJ des statistiques dans la Base de données
//NOTE : INTERDIT PAR FREE, donc tout ceci est commenté
if(!$non_visiteur)
{
  //si on ne s'est pas connecté avant
    if(!isset($Connection))
    {
      $Connection=mysql_connect('localhost',$SQL['Identifiant'],$SQL['MotDePasse']);
      mysql_select_db($SQL['NomDeLaBase'],$Connection);
    }
  //on définir quelques variables pour les insérer dans la BDD
    if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
      $SQL['AdresseIP']=$_SERVER['HTTP_X_FORWARDED_FOR'];
    elseif(isset($_SERVER['HTTP_CLIENT_IP']))
      $SQL['AdresseIP']=$_SERVER['HTTP_CLIENT_IP'];
    else
      $SQL['AdresseIP']=$_SERVER['REMOTE_ADDR'];
    if(isset($_SERVER['HTTP_REFERER']))
      $SQL['Referer']=mysql_real_escape_string(
                      preg_replace('#(\?|&amp;)(php)?s(es)?s?id=([^&]*)#i','',
                      str_replace('http://'.$nomServeur,'',
                      htmlspecialchars($_SERVER['HTTP_REFERER'],ENT_NOQUOTES))));
    else
      $SQL['Referer']='';
    if(!isset($SQL['TypePage']))
      $SQL['TypePage']=1;
  /*si il n'y a aucune erreur :
   (l'url demandée contient le chemin du fichier d'erreur
    ou l'url ne le contient pas et le chemin du fichier exécuté non plus
    et ce n'est pas un robot qui regarde robots.txt)* /
  if(!isset($PageIntrouvable))
   {
    $AjoutStat='INSERT INTO Statistiques(TitrePage,AdressePage,DateTime,AdresseIP,Referer,TypePage)  VALUES(\''.
      mysql_real_escape_string($SQL['TitrePage'])."','".mysql_real_escape_string($SQL['AdressePage'])."',NOW(),'".
      sha1($SQL['AdresseIP']).'\',\''.$SQL['Referer'].'\',\''.$SQL['TypePage'].'\')';
    RequeteSQL($AjoutStat,'La mise à jour des statistiques concernant le site a rencontré un problème.','Insertion');
   }
}
*/
if(isset($Connection))
  mysql_close($Connection);
if($NombreDeRequetes===1)
  $InfoRequete='<span>1</span> requ&ecirc;te';
else
  $InfoRequete='<span>'.$NombreDeRequetes.'</span> requ&ecirc;tes';
echo '<hr style="clear:both;" /><div id="footer"><p id="mini-ban">',
 '<span class="f"><a href="http://validateur.ca/?q=http://',$nomServeur,'" tabindex="200">',
 '<img src="/img/valide/xhtml.gif" alt="Xhtml 1.1" title="Valider toutes les pages du site" /></a></span>',
 '<span class="f"><a tabindex="210" href="http://www.validome.org/validate/?uri=http://',$AdresseComplete,'">',
 '<img title="Ce site est valide Xhtml 1.1" alt="Xhtml 1.1" src="/img/valide/validomexhtml.gif" /></a></span>',
 '<span class="f"><a tabindex="220" href="http://jigsaw.w3.org/css-validator/validator?uri=http://',$AdresseComplete,'">',
 '<img alt="W3C | CSS 2.0" title="Ce site est valide CSS 2.0" src="/img/valide/w3ccss.gif" /></a></span>',
 '<span class="f"><a tabindex="230" href="http://validateur-accessibilite.apinc.org/index.php?urlAVerif=http://',$AdresseComplete,
 '"><img alt="W3C WAI - AAA" title="Tester l\'accessiblilit&eacute; du site" src="/img/valide/w3cwai.gif" /></a></span>',
 '<span class="f"><a tabindex="240" href="/apropos/licence.php" title="Le contenu de ce site est sous licence Creative Commons">',
 '<img src="/img/rect/cclicence.png" alt="CC License" /></a></span></p>',
 '<p id="statScript">',$InfoRequete,'. Temps d\'ex&eacute;cution : <span>',round(array_sum(explode(' ',microtime()))-$TempsDebutExecutionScript,4),
 '</span> secondes, dont <span>',round($TempsTotalSQL,4),'</span> secondes de requ&ecirc;tes SQL.</p>',
 '<p id="footer-liens"><span class="lien"><a href="#barmen">Haut</a></span><span class="lien">Source&nbsp;PHP&nbsp;:&nbsp;',
 '<a href="?source">De&nbsp;cette&nbsp;page</a>&nbsp;/&nbsp;<a href="/autres/source-haut.php">De&nbsp;la&nbsp;page&nbsp;m&egrave;re</a></span></p></div>'
 //licence CC et fin de page
 ?>
<!--
<rdf:RDF xmlns="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
 <Work rdf:about="">
    <license rdf:resource="http://creativecommons.org/licenses/by-nc-sa/2.0/fr/" />
    <dc:date>2006</dc:date>
    <dc:description>Tous les produits cr&eacute;es pour le site de Sylvain SABOUA.
                  Pages (code source et contenu), animations, articles, etc...</dc:description>
    <dc:creator><Agent><dc:title>Sylvain SABOUA</dc:title></Agent></dc:creator>
    <dc:rights><Agent><dc:title>Sylvain SABOUA</dc:title></Agent></dc:rights>
    <dc:source rdf:resource="http://sylvain.sab.free.fr/" />
 </Work>
 <License rdf:about="http://creativecommons.org/licenses/by-nc-sa/2.0/fr/">
  <permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
  <permits rdf:resource="http://web.resource.org/cc/Distribution"/>
  <requires rdf:resource="http://web.resource.org/cc/Notice"/>
  <requires rdf:resource="http://web.resource.org/cc/Attribution"/>
  <prohibits rdf:resource="http://web.resource.org/cc/CommercialUse"/>
  <permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
  <requires rdf:resource="http://web.resource.org/cc/ShareAlike"/>
 </License>
</rdf:RDF> -->
</body></html><?php
/*ancien compteur de pages vues, avec un fichier texte.
//je l'utilise quand la connexion a MySQL plante.
  $fichier=$_SERVER['DOCUMENT_ROOT'].'/autres/compteurvisites.txt';
  $compteur=fopen($fichier,'r');
  $nbrPagesVues=intval(fgets($compteur));
  $nbrPagesVues++;
  unlink($fichier);
  $compteur=fopen($fichier,'a');
  fwrite($compteur,$nbrPagesVues);
//*/
?>