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".
<?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è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 : «'.$titre.'»';
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('<','>','&'),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é !">',
'<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éos de démonstration"><img alt="Vidé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 />',' ','<<guillemet>>','<span style="color:#000000">','</span>'."\n".'</pre>',"\n".'</span></pre>','class="xhtml">'."\n");
$out=array('"',''','<pre id="view-source" class="xhtml">','</pre>', '</span>',"\n", ' ','"', '', '</pre>', '</pre>', 'class="xhtml">');
$page=str_replace($in,$out,$page);
$page=preg_replace_callback('#\?>(.+)<\?php#sU','ColorerCodeHTML',$page);
return $page;
}
function ColorerCodeHTML($Code)
{
//les entités
$Code[0]=preg_replace('`&(#x?[a-z0-9]+|[a-z]+)`i','<span class="ent">$0</span>',$Code[0]);
//les commentaires
$Code[0]=preg_replace('#<!--.*-->#sU','<span class="com">$0</span>',$Code[0]);
//les balises et attributs
$SyntaxeBalise='#<(/?[a-z0-9]+)( (.*))?( /)?>#sU';
$Code[0]=preg_replace_callback($SyntaxeBalise,'ColorerBalise',$Code[0]);
return $Code[0];
}
function ColorerBalise($Balise)
{
//balise (pas les attributs)
$Balise[0]=str_replace('<'.$Balise[1],'<<span class="bal">'.$Balise[1].'</span>',$Balise[0]);
//attributs
$Balise[0]=preg_replace('#([a-z]+)=((&\#039;|")([^\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és sur chaque page, ils contiennent les menus, ',
'et certains scripts succeptibles d\'être utilisés partout.<br />',"\n\t",
'Il y a deux fichiers qui servent à 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('"','''),$page);
$page=str_replace(array('<code>','</code>','</font>','<br />',' '),
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);
*/
?>
<?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('#(\?|&)(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ête';
else
$InfoRequete='<span>'.$NombreDeRequetes.'</span> requê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é 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écution : <span>',round(array_sum(explode(' ',microtime()))-$TempsDebutExecutionScript,4),
'</span> secondes, dont <span>',round($TempsTotalSQL,4),'</span> secondes de requêtes SQL.</p>',
'<p id="footer-liens"><span class="lien"><a href="#barmen">Haut</a></span><span class="lien">Source PHP : ',
'<a href="?source">De cette page</a> / <a href="/autres/source-haut.php">De la page mè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é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);
//*/
?>