Commit Diff


commit - /dev/null
commit + 6d65534bc58fc10be696d3e1c2c18c39ddd86430
blob - /dev/null
blob + a287d4271207dbf0788fec9a91eba04dbc28426b (mode 644)
--- /dev/null
+++ .htaccess
@@ -0,0 +1,9 @@
+ErrorDocument 404 /autres/error/index.php?erreur=404

+ErrorDocument 403 /autres/error/index.php?erreur=403

+ErrorDocument 500 "Ce site est indisponible. Vous pouvez vous rendre sur <a href="http://ssylvainsab.free.fr/">une copie du site</a>.

+#ErrorDocument 500 /autres/error/index.php?erreur=500

+Options -Indexes

+#AddDefaultCharset iso-8859-1

+AddType application/xhtml+xml .php

+php 1

+SetEnv PHP_VER 7

blob - /dev/null
blob + b9e12f43c782ea3a01fc0358f958e935def2a522 (mode 644)
--- /dev/null
+++ apropos/accesskeys.php
@@ -0,0 +1,39 @@
+<?php
+$head['css'][0]['filename']='apropos';
+$head['access'][0]=array('rel'=>'index','href'=>'./','title'=>'Index de la rubrique &#34;A propos de ce site&#34;');
+$head['access'][0]=array('rel'=>'start','href'=>'./','title'=>'Index de la rubrique &#34;A propos de ce site&#34;');
+$titre='Accesskeys';
+require'../autres/source-haut.php';
+include'menu.php';?>
+<div id="intro">
+<h1>Listes des accesskeys</h1>
+<p>Une accesskey est une combinaison de touches qui permet de  naviguer plus rapidement dans le site. C'est une sorte de "raccourci"
+  vers différentes pages.</p></div>
+<h2 style="clear:both">Comment utiliser une accesskey ?</h2>
+<p>C'est le Webmaster du site qui met ou non des accesskeys vers les différentes parties de son site. 
+   Généralement s'il y en a elles sont signalées quelquepart, ici par exemple pour ce site.<br />
+   Pour utiliser une accesskey et se rendre a la page correspondante, il faut, selon votre navigateur :</p>
+<ul><li>IE Windows : Alt et [accesskey], puis Entrée ;</li>
+    <li>Mozilla, Netscape, K-Meleon, FireFox Windows: Alt et [accesskey] ;</li>
+    <li>Opera 7 Windows, Macintosh, Linux : Esc + Shift et [accesskey] ;</li>
+    <li>MSIE Macintosh : Ctrl et [accesskey], puis Entrée ;</li>
+    <li>Safari 1.2 Macintosh : Ctrl et [accesskey] ;</li>
+    <li>Mozilla, Netscape Macintosh : Ctrl et [accesskey] ;</li>
+    <li>Galeon/Mozilla/FireFox Linux : Alt et [accesskey] ;</li>
+    <li>Konqueror 3.3+ : Ctrl, puis [accesskey] (successivement) ;</li>
+    <li>Netscape 4, Camino, Galeon, Konqueror avant la version  3.3.0,  Omniweb, Safari avant la version 1.2,
+        Opera Windows/Linux avant la version 7, ne supportent pas les accesskeys.</li></ul>
+<h2>Quelle est la liste des accesskeys de ce site ?</h2>
+<p>Voici la liste des accesskeys du site, accessible depuis  chaque page :</p>
+<table summary="Liste des Accesskeys de ce site" class='access'>
+  <tbody>
+    <tr><th>Accesskey</th><th>Page correspondante</th></tr>
+    <tr><td>1</td><td>Accueil</td></tr>
+    <tr><td>2</td><td>News</td></tr>
+    <tr><td>3</td><td>Logiciels</td></tr>
+    <tr><td>4</td><td>Configurer</td></tr>
+    <tr><td>5</td><td>C'est quoi ?</td></tr>
+    <tr><td>6</td><td>A propos de ce site</td></tr>
+  </tbody>
+</table>
+<?php require'../autres/source-bas.php'?>
blob - /dev/null
blob + 39ecc7f9d452c9bd4df35e33320c7b0891016dd3 (mode 644)
--- /dev/null
+++ apropos/index.php
@@ -0,0 +1,13 @@
+<?php
+$head['css'][0]['filename']='apropos';
+$titre='A propos du site';
+require'../autres/source-haut.php';
+?>
+<h1>A propos de ce site</h1>
+<h2 style="margin-right:20%">Sommaire</h2>
+<ul class="app">
+  <li><a href="licence.php">Licence</a> : Le contenu de ce site est sous Licence Creative commons</li>
+  <li><a href="accesskeys.php">Accessibilité</a> : Politique d'accessiblité</li>
+  <li><a href="stats.php">Statistiques</a> : Les statistiques du site</li>
+  <li><a href="/mail/">Contact</a> : Contacter l'auteur</li></ul>
+<?php require'../autres/source-bas.php';?>
blob - /dev/null
blob + 1167783ea77287ffc5de0f41a17046193f2e4af7 (mode 644)
--- /dev/null
+++ apropos/licence.php
@@ -0,0 +1,27 @@
+<?php
+$head['css'][0]['filename']='apropos';
+$head['access'][0]=array('rel'=>'index','href'=>'./','title'=>'Index de la rubrique &#34;A propos de ce site&#34;');
+$head['access'][1]=array('rel'=>'index','href'=>'./','title'=>'Index de la rubrique &#34;A propos de ce site&#34;');
+$titre='Licence';
+require'../autres/source-haut.php';
+include'menu.php';
+?>
+<div id="intro"><h1>Licence</h1>
+<p>Le contenu de ce site m'appartenant (pages, images, animations, sons et toutes autres formes de médias)
+   est sous Licence Creative Commons.</p></div>
+<div id="content">
+<p>Selon le contrat <strong>by-nc-sa 2.5</strong>, vous pouvez :</p>
+<ul class="cc">
+  <li>Reproduire ces créations, les distribuer et les communiquer au public. </li>
+  <li>Modifier ces créations.</li></ul>
+<p>A condition de :</p>
+<ul class="cc">
+  <li>Citer le nom de l'auteur original (Sylvain SABOUA).</li>
+  <li>Ne pas utiliser ces créations à des fins commerciales.</li>
+  <li>Redistribuer ces créations avec un contrat identique à celui-ci.</li></ul>
+<p><img class="t32" alt="CC" src="/img/licence/32cc.gif" /> Licence Creative Commons<br />
+   <img class="t32" alt="By" src="/img/licence/32by.gif" /> Citer l'auteur original<br />
+   <img class="t32" alt="NC" src="/img/licence/32nc.gif" /> Pas d'utilisation commerciale<br />
+   <img class="t32" alt="SA" src="/img/licence/32sa.gif" /> Redistribuer cette création avec un contrat identique à celui-ci</p>
+<p><a href="http://creativecommons.org/licenses/by-nc-sa/2.5/" class="externe">http://creativecommons.org/licenses/by-nc-sa/2.5/</a></p></div>
+<?php require'../autres/source-bas.php'?>
blob - /dev/null
blob + f82b1414aeb4391a250c5fd16e4525546cb441d3 (mode 644)
--- /dev/null
+++ apropos/menu.php
@@ -0,0 +1,10 @@
+<div id="menuapropos">

+<h3>A propos</h3>

+<ul class="app">

+  <li><a href="index.php">Sommaire</a></li>

+  <li><a href="licence.php">Licence</a></li>

+  <li><a href="stats.php">Statistiques</a></li>

+  <li><a href="accesskeys.php">Accessibilité</a></li>

+  <li><a href="/mail/">Contact</a></li>

+</ul>

+</div>

blob - /dev/null
blob + 8a796e4289e09b9f400bd27479c9127e2f0addd9 (mode 644)
--- /dev/null
+++ apropos/plan.php5
@@ -0,0 +1,4 @@
+<?php

+$sitemap=simplexml_load_file('../sitemap.rdf');

+echo'<pre>';var_dump($sitemap);echo'</pre>';

+?>

blob - /dev/null
blob + 11efd4627ac1ce777c0207487e4f05f3e9d72e88 (mode 644)
--- /dev/null
+++ apropos/stats.php
@@ -0,0 +1,160 @@
+LA MISE EN PLACE DE STATISTIQUES ETANT INTERDITE PAR L'HBERGEUR FREE, CETTE PAGE EST SUPPRIMME.

+<!--php

+$head['css'][0]['filename']='stats';

+$head['css'][1]['filename']='apropos';

+$head['access'][0]=array('rel'=>'index','href'=>'./','title'=>'Index de la rubrique &#34;A propos de ce site&#34;');

+$head['access'][1]=array('rel'=>'start','href'=>'./','title'=>'Index de la rubrique &#34;A propos de ce site&#34;');

+$titre='Statistiques du site';

+$SQL['TypePage']=2;

+require'../autres/source-haut.php';

+/*****************************

+  Toutes ce qui servira

+  … faire les statistiques

+*****************************/

+  //quelques dates

+  $NumJour=date('d');

+  $NumMois=date('m');

+  $NumAn=date('Y');

+  //*****************************************************************

+    //Le nombre de pages vues et de visiteurs

+        $stats['VisiteursPages']['DepuisCreation']=0;

+        //0:depuis cr‚ation, 1:ann‚e, 2:mois

+        $stats['Visiteurs']['IPprec'][0]='';

+        $stats['Visiteurs']['IPprec'][1]='';

+        $stats['Visiteurs']['IPprec'][2]='';

+        $stats['Visiteurs']['Jour']=0;

+        $stats['Visiteurs']['Mois']=0;

+        $stats['Visiteurs']['Annee']=0;

+        $stats['Visiteurs']['Creation']=0;

+        $stats['Pages']['NbrJour']=0;

+        $stats['Pages']['NbrMois']=0;

+        $stats['Pages']['NbrAnnee']=0;

+        $stats['Pages']['NbrCreation']=0;

+        $stats['PagesPlusVues']['Mois']='';

+        $stats['PagesPlusVues']['Annee']='';

+        $stats['PagesPlusVues']['Creation']='';

+

+        $stats['Requetes']['VisiteursPages']='SELECT DateTime,AdresseIP FROM Statistiques WHERE TypePage=1 ORDER BY AdresseIP';

+        //connection … la BDD

+          $Connection=mysql_connect('localhost',$SQL['Identifiant'],$SQL['MotDePasse']);

+          mysql_select_db($SQL['NomDeLaBase'],$Connection);

+        //Requˆte pour le nombre de visiteurs et de pages vues

+        $stats['Ressources']['VisiteursPages']=RequeteSQL($stats['Requetes']['VisiteursPages'],'Le nombre de pages vues n\'a pas pu ˆtre r‚cup‚r‚.');

+        while($stats['Arrays']['VisiteursPages']=mysql_fetch_row($stats['Ressources']['VisiteursPages']))

+        {

+          $IPactuelle=$stats['Arrays']['VisiteursPages'][1];

+          $DateTime=$stats['Arrays']['VisiteursPages'][0];

+          //une page de plus

+          ++$stats['Pages']['NbrCreation'];

+          //si l'ip actuelle est diff‚rente de la pr‚c‚dente, on ajoute un visiteur depuis le d‚but des statistiques.

+          if($IPactuelle!==$stats['Visiteurs']['IPprec'][0]){

+             ++$stats['Visiteurs']['Creation'];

+             $stats['Visiteurs']['IPprec'][0]=$IPactuelle;}

+          //pour afficher les statistiques de l'ann‚e et du mois

+          if(substr($DateTime,0,4)==$NumAn)

+          {

+            if($IPactuelle!==$stats['Visiteurs']['IPprec'][1]){

+               ++$stats['Visiteurs']['Annee'];

+               $stats['Visiteurs']['IPprec'][1]=$IPactuelle;}

+            ++$stats['Pages']['NbrAnnee'];

+            if(substr($DateTime,5,2)==$NumMois)

+            {

+              if($IPactuelle!==$stats['Visiteurs']['IPprec'][2]){

+                 ++$stats['Visiteurs']['Mois'];

+                 $stats['Visiteurs']['IPprec'][1]=$IPactuelle;}

+              ++$stats['Pages']['NbrMois'];

+              if(substr($DateTime,8,2)==$NumJour)

+                ++$stats['Pages']['NbrJour'];

+            }

+          }

+        }

+        mysql_free_result($stats['Ressources']['VisiteursPages']);

+        unset($IPactuelle,$DateTime);

+    //Les visiteurs qui ont vu le plus de pages et le nombre de pages qu'ils ont vu

+        $LigneTableauSQL=1;

+        $stats['10PlusConnectes']='';

+        $stats['Requetes']['10PlusConnectes']='SELECT DISTINCT(AdresseIP),COUNT(AdresseIP)AS NbrPagesVues FROM Statistiques '.

+          'WHERE TypePage=1 GROUP BY AdresseIP ORDER BY NbrPagesVues DESC LIMIT 10';

+        $stats['Ressources']['10PlusConnectes']=

+          RequeteSQL($stats['Requetes']['10PlusConnectes'],'Les statistiques concernant le nombre de visiteurs n\'ont pas pu ˆtre r‚cup‚r‚es');

+        while($stats['Arrays']['10PlusConnectes']=mysql_fetch_assoc($stats['Ressources']['10PlusConnectes']))

+        {

+          $stats['10PlusConnectes'].=$stats['Arrays']['10PlusConnectes']['NbrPagesVues'];

+          if(++$LigneTableauSQL<=10)

+            $stats['10PlusConnectes'].=', ';

+        }

+        mysql_free_result($stats['Ressources']['10PlusConnectes']);

+        unset($LigneTableauSQL);

+include'menu.php';

+?>

+<div id="intro">

+<h1>Statistiques</h1>

+<p class="pintro">Voici plusieurs statistiques &agrave; propos du site. Vous y trouverez :</p>

+<ul><li>Le nombre de visiteurs et de pages vues pendant le mois, l'ann&eacute;e, et depuis le d&eacute;but des statistiques.</li>

+    <li>Le nombre de pages vues dans la journ&eacute;e.</li>

+    <li>Le nombre de pages que les 10 visiteurs les plus connect&eacute;s au site ont vu.</li>

+    <li>Les 10 pages les plus vues sur le mois, l'ann&eacute;e, depuis le d&eacute;but des statistiques et

+        le nombre de fois qu'elle ont &eacute;t&eacute; vues.</li></ul>

+<p>Les statistiques n'incluent pas toutes les pages du site. Les pages qui ne sont pas prises en compte dans les statistiques sont 

+   la page d'accueil, cette page, la page de contact et le code PHP des pages.</p></div>

+

+<h2 style="clear:both;">Visiteurs</h2>

+<p>Depuis le d&eacute;but des statistiques, <!--?php echo $stats['Visiteurs']['Creation']?> visiteurs

+   ont vu un total de <!--?php echo $stats['Pages']['NbrCreation']?> pages.<br />

+   Cette ann&eacute;e, <!--?php echo $stats['Visiteurs']['Annee']?> visiteurs

+   ont vu <!--?php echo $stats['Pages']['NbrAnnee']?> pages

+   et ce mois-ci <!--?php echo $stats['Visiteurs']['Mois']?> personnes ont vu <!--?php echo $stats['Pages']['NbrMois']?> pages.<br />

+   <!--?php echo $stats['Pages']['NbrJour']?> pages ont &eacute;t&eacute; vues aujourd'hui.</p>

+<p>Depuis le d&eacute;but des statistiques, les 10 visiteurs les plus connect&eacute;s ont vu <!--?php echo $stats['10PlusConnectes']?> pages.</p>

+

+<h2>Pages</h2>

+<p>Les 10 pages les plus vues.</p>

+<!--php

+//*****************************************************************

+//Les pages les plus vues et le nombre de fois qu'elles on ‚t‚ vues.

+  //ce mois ci

+    $stats['Requetes']['PagesPlusVues']['Mois']='SELECT COUNT(*)AS NbrVisites,TitrePage,AdressePage,`DateTime` FROM Statistiques '.

+        'WHERE TypePage=1 AND EXTRACT(YEAR_MONTH FROM DateTime)='.$NumAn.$NumMois.' GROUP BY TitrePage ORDER BY NbrVisites DESC LIMIT 10';

+    $stats['Ressources']['PagesPlusVues']['Mois']=

+      RequeteSQL($stats['Requetes']['PagesPlusVues']['Mois'],'Une erreur est survenue durant la r&eacute;cup&eacute;ration des statistiques des pages les plus vues.');

+    while($stats['Arrays']['PagesPlusVues']['Mois']=mysql_fetch_assoc($stats['Ressources']['PagesPlusVues']['Mois']))

+      $stats['PagesPlusVues']['Mois'].=

+      "\n".'         <tr>'.

+      '<td><a href="'.$stats['Arrays']['PagesPlusVues']['Mois']['AdressePage'].'">'.$stats['Arrays']['PagesPlusVues']['Mois']['TitrePage'].'</a></td>'.

+      '<td class="NbrVisites">'.$stats['Arrays']['PagesPlusVues']['Mois']['NbrVisites'].'</td></tr>';

+    mysql_free_result($stats['Ressources']['PagesPlusVues']['Mois']);

+  //cette ann‚e

+    $stats['Requetes']['PagesPlusVues']['Annee']='SELECT COUNT(*)AS NbrVisites,TitrePage,AdressePage,`DateTime` FROM Statistiques '.

+        'WHERE TypePage=1 AND EXTRACT(YEAR FROM DateTime)='.$NumAn.' GROUP BY TitrePage ORDER BY NbrVisites DESC LIMIT 10';

+    $stats['Ressources']['PagesPlusVues']['Annee']=

+    RequeteSQL($stats['Requetes']['PagesPlusVues']['Annee'],'Une erreur est survenue durant la r&eacute;cup&eacute;ration des statistiques des pages les plus vues.');

+    while($stats['Arrays']['PagesPlusVues']['Annee']=mysql_fetch_assoc($stats['Ressources']['PagesPlusVues']['Annee']))

+      $stats['PagesPlusVues']['Annee'].=

+      "\n".'         <tr>'.

+      '<td><a href="'.$stats['Arrays']['PagesPlusVues']['Annee']['AdressePage'].'">'.$stats['Arrays']['PagesPlusVues']['Annee']['TitrePage'].'</a></td>'.

+      '<td class="NbrVisites">'.$stats['Arrays']['PagesPlusVues']['Annee']['NbrVisites'].'</td></tr>';

+    mysql_free_result($stats['Ressources']['PagesPlusVues']['Annee']);

+  //depuis le d‚but des statistiques

+    $stats['Requetes']['PagesPlusVues']['Creation']='SELECT COUNT(*)AS NbrVisites,TitrePage,AdressePage,`DateTime` FROM Statistiques '.

+        'WHERE TypePage=1 GROUP BY TitrePage ORDER BY NbrVisites DESC LIMIT 10';

+  $stats['Ressources']['PagesPlusVues']['Creation']=

+  RequeteSQL($stats['Requetes']['PagesPlusVues']['Creation'],'Une erreur est survenue durant la r&eacute;cup&eacute;ration des statistiques des pages les plus vues.');

+    while($stats['Arrays']['PagesPlusVues']['Creation']=mysql_fetch_assoc($stats['Ressources']['PagesPlusVues']['Creation']))

+     $stats['PagesPlusVues']['Creation'].=

+     "\n".'         <tr><td>'.

+     '<a href="'.$stats['Arrays']['PagesPlusVues']['Creation']['AdressePage'].'">'.$stats['Arrays']['PagesPlusVues']['Creation']['TitrePage'].'</a>'.

+     '</td><td class="NbrVisites">'.$stats['Arrays']['PagesPlusVues']['Creation']['NbrVisites'].'</td></tr>';

+//affichage des 3 tableaux

+?>

+<table id="PagesPlusVuesMois">

+  <caption>Ce mois-ci</caption>

+  <tbody><tr><th>Page</th><th>Nombre de visites</th></tr><!--?php echo $stats['PagesPlusVues']['Mois']?></tbody></table>

+

+<table id="PagesPlusVuesAnnee">

+  <caption>Cette ann&eacute;e</caption>

+  <tbody><tr><th>Page</th><th>Nombre de visites</th></tr><!--?php echo $stats['PagesPlusVues']['Annee']?></tbody></table>

+

+<table id="PagesPlusVues">

+  <caption>Depuis le d&eacute;but des statistiques</caption>

+  <tbody><tr><th>Page</th><th>Nombre de visites</th></tr><!--?php echo $stats['PagesPlusVues']['Creation']?></tbody></table>

+<!--?php require'../autres/source-bas.php'?-->

blob - /dev/null
blob + 18748286e5b8b4de5db905f87cdfed1a7d48fe60 (mode 644)
--- /dev/null
+++ autres/compteurvisites.txt
@@ -0,0 +1 @@
+0

blob - /dev/null
blob + a66bdd00ce7b8cec6ed009aecf238ed0cb987d27 (mode 644)
--- /dev/null
+++ autres/confidentiel.php
@@ -0,0 +1,34 @@
+<?php

+$AdresseIP=$_SERVER['REMOTE_ADDR'];

+$Navigateur=$_SERVER['HTTP_USER_AGENT'];

+//les arrays qui correspondent a des user-agent spéciaux

+$robots=array('Googlebot','Yahoo!','msnbot','VoilaBot','Exabot','ia_archiver','findlinks','psbot','Ask Jeeves/Teoma','nutchbot','ichiro','NGbot');

+$validateurs=array('W3C_Validator','Validateur_W3C','W3C_CSS_Validator');

+$sniffers=array('Xenu Link Sleuth','Web-Sniffer','HTTrack');

+//on vérifie si l'user-agent est dans un array

+foreach($robots as $num=>$nom_robot)

+  if(strpos($Navigateur,$nom_robot)!==false)

+  {

+    $type_user_agent='bot';

+    break;

+  }

+foreach($validateurs as $num=>$nom_validateur)

+  if(strpos($Navigateur,$nom_validateur))

+  {

+    $type_user_agent='validateur';

+    break;

+  }

+foreach($sniffers as $num=>$nom_sniffer)

+  if(strpos($Navigateur,$nom_robot))

+  {

+    $type_user_agent='sniffer';

+    break;

+  }

+if($AdresseIP==='212.162.14.235'or $AdresseIP==='88.191.250.14')

+  $type_user_agent='validateur';

+//de cette facon on sait si c'est un visiteur ordinaire ou pas

+$non_visiteur=isset($type_user_agent);

+$SQL['MotDePasse']='$[bim]=8';

+$SQL['Identifiant']='sylvain.sab';

+$SQL['NomDeLaBase']='sylvain_sab';

+?>

blob - /dev/null
blob + fe92d9654824236ce80fe6712cd8933f63121207 (mode 644)
--- /dev/null
+++ autres/css/accueil.css
@@ -0,0 +1,8 @@
+h1{margin:0}

+h1 img{height:33px;padding:5px 10px 10px 10px;width:123px}

+#accueil{margin:2em 3em}

+#menu_accueil{float:left;margin-bottom:0.5em}

+#menu_accueil img{margin:0.2em 0.2em 0.2em 0;width:110px;height:36px}

+#rect{text-align:center;height:36px;width:200px;float:right}

+#rect img{height:15px;display:block;margin:0.5em 0.5em 0.5em -4em;width:80px}

+#addr{clear:both;margin-left:10px}

blob - /dev/null
blob + 5a5457df2d03f4ddf00d0ef7087cab9eb10764fe (mode 644)
--- /dev/null
+++ autres/css/apropos.css
@@ -0,0 +1,10 @@
+body{background-color:yellow;color:inherit}
+#menuapropos{float:left;width:15%;border:2px solid blue;padding:1px}
+#menuapropos h3{margin:0;padding:1px;text-indent:0}
+ul.app{margin:0;padding-left:20px}
+#intro{margin-left:17.5%}
+h1{margin:0}
+#content{margin:auto;width:70%;text-align:center}
+.access,.access td,.access th{text-align:center;border:1px solid black}
+ul.cc{list-style:url(/img/licence/ccmini.gif)}
+ul.app{list-style:url(/img/mini/apropos.gif)}
blob - /dev/null
blob + b6b0f8d5f4c21d45b5ffdf26378212bb306961f7 (mode 644)
--- /dev/null
+++ autres/css/cestquoi.css
@@ -0,0 +1,2 @@
+p#next{background:gray;border:1px solid #000;color:inherit;line-height:1.2em;padding:10px}
+p#next a{margin:5px 0}
blob - /dev/null
blob + 575fe4c4e6e94678393f8c3d019f850aea66de7a (mode 644)
--- /dev/null
+++ autres/css/code.css
@@ -0,0 +1,47 @@
+/*xHTML*/

+code.xhtml span.dxml{color:purple;font-style:italic}

+code.xhtml span.doctype{color:#04b;font-style:italic}

+.xhtml span.bal,.html_bal{color:purple;font-weight:700}

+.xhtml span.attr,.html_attr{font-weight:700}

+.xhtml span.val,.html_val{color:blue}

+.xhtml span.com,.html_com{color:green}

+/*CSS*/

+code.css span.com{color:gray}

+code.css span.elm{color:maroon;font-weight:700}

+code.css span.class{color:#b8860b}

+code.css span.id{color:#ff1493}

+code.css span.pc{color:red}

+code.css span.ppt,code.xhtml span.style span.ppt{color:maroon}

+code.css span.val,code.xhtml span.style span.val{color:#ec7600}

+/*JS*/

+.js_reserv{font-weight:700}

+.js_synt{color:green}

+.js_obj{color:red}

+.js_str{color:blue}

+.js_com{color:gray}

+.js_num{color:pink}

+/*PHP*/

+code.php span.fonction{font-weight:700}

+code.php span.synt{background-color:#0ff}

+.php_tag{background-color:gray}

+.php_reserv{font-weight:700}

+.php_synt{color:green}

+.php_str{color:olive}

+.php_com{color:gray}

+.php_num{color:purple}

+.php_func{color:brown;border-bottom:1px dotted brown;font-weight:700}

+.php_const{font-weight:700}

+.php_var{color:blue}

+/*PYTHON*/

+.py_com{color:gray}

+.py_func{color:orange}

+.py_reserv{font-weight:bold}

+.py_num{color:purple}

+.py_synt{color:green}

+.py_str{color:olive}

+/*AUTRES ou TOUS*/

+code.xhtml span.attr,code.php span.fonction{font-weight:700}

+pre{margin:0.5em 0 0 2.5em;padding:0.25em}

+.view-source{margin:0.25em;overflow:auto}

+code,pre{background:#ebebeb;color:inherit;font-family:'dejavu sans mono','bitstream vera sans mono',monospace}

+pre#view-source,pre.view-source{padding:1em;border:2px solid black;overflow:auto}

blob - /dev/null
blob + d9765fca759c758d3849be0f1626b086718b750d (mode 644)
--- /dev/null
+++ autres/css/configwindows.css
@@ -0,0 +1,10 @@
+.som{background:#ccc;border:2px solid #000;color:inherit;font:700 1em arial,sans-serif,serif;width:100%}
+.som a{background:inherit;color:#000}
+.g,.c,.d{width:33%}
+.g{text-align:left}
+.c{text-align:center}
+.d{text-align:right}
+.ex{background:#ffc;border:2px solid #000;color:#000;font-weight:700;padding:10px}
+table.service{text-transform:capitalize}
+table.service thead,.service tfoot{background:#ffc;color:inherit;font-weight:700;text-align:center}
+table.service td{padding-left:10px;padding-right:10px}
blob - /dev/null
blob + 47b2a919b53dae256fb3f0bfd2d2805e13d749af (mode 644)
--- /dev/null
+++ autres/css/exemplecss.css
@@ -0,0 +1,8 @@
+.rouge{background:inherit;color:red}

+.bleu{background:inherit;color:blue}

+.nomargin{margin-bottom:0}

+.nomargintop{margin-top:0}

+p#exemplelorem,p#exemple1{background:#000;border-width:4px 4px 4px 8px;border:solid #66c;color:#fff;margin-left:20%}

+p#exemplelorem{padding:10px}

+p#exemplelorem:first-letter{background:gray;border:2px green solid;color:red;float:left;font:2em 'comic sans ms',serif;

+height:4em;margin-right:2px;padding:10px}

blob - /dev/null
blob + 3265d398bc794771c6338be0d90687bc520c0a12 (mode 644)
--- /dev/null
+++ autres/css/index.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/2000/REC-xhtml1-20000126/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
+ <head>
+  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
+    <title>Valider les CSS</title>
+    <link rel="stylesheet" type="text/css" href="accueil.css" />
+    <link rel="stylesheet" type="text/css" href="apropos.css" />
+    <link rel="stylesheet" type="text/css" href="cestquoi.css" />
+    <link rel="stylesheet" type="text/css" href="configwindows.css" />
+    <link rel="stylesheet" type="text/css" href="erreur.css" />
+    <link rel="stylesheet" type="text/css" href="exemplecss.css" />
+    <link rel="stylesheet" type="text/css" href="liens.css" />
+    <link rel="stylesheet" type="text/css" href="logiciels.css" />
+    <link rel="stylesheet" type="text/css" href="logos.css" />
+    <link rel="stylesheet" type="text/css" href="logwinamp.css" />
+    <link rel="stylesheet" type="text/css" href="news.css" />
+    <link rel="stylesheet" type="text/css" href="notie.css" />
+    <link rel="stylesheet" type="text/css" href="rss.css" />
+    <link rel="stylesheet" type="text/css" href="styledefaut.css" />
+    <link rel="stylesheet" type="text/css" href="styledefautie.css" />
+    <link rel="stylesheet" type="text/css" href="stylefavs.css" />
+    <link rel="stylesheet" type="text/css" href="stylemotcle.css" />
+    <link rel="stylesheet" type="text/css" href="styletemp.css" />
+    <link rel="stylesheet" type="text/css" href="temp.css" />
+   </head>
+ <body>
+<p>
+  Cette page comporte une balise link par fichier CSS présent sur le site.<br />
+  Pour valider tous les CSS d'un coup, il suffit de vous rendre sur la page suivante :<br />
+  <a href='http://jigsaw.w3.org/css-validator/validator?uri=http://sylvain.sab.free.fr/autres/css/index.html'>
+  http://jigsaw.w3.org/css-validator/validator?uri=http://sylvain.sab.free.fr/autres/css/index.html</a><br /><br />
+  
+  Cependant, le fichier "mail.css" est volontairement ommis de cette liste, car il comprend quelques propriétés CSS 3
+  qui le rendent invalides.
+</p>
+ </body>
+</html>
blob - /dev/null
blob + d3281f7ccc4be2492db612218826c84354025557 (mode 644)
--- /dev/null
+++ autres/css/liens.css
@@ -0,0 +1,6 @@
+div{margin:0 3em}

+div h2{margin:1em -1.5em}

+div h6{margin:0}

+p.liste{padding-left:2em;border:1px solid black;margin-left:-2em}

+em{display:list-item;font-style:normal;margin-top:10px;text-transform:capitalize}

+em a{background:inherit;color:#000}

blob - /dev/null
blob + 956fcbb106808a58c6b320bb6f923b29045d933f (mode 644)
--- /dev/null
+++ autres/css/logiciels.css
@@ -0,0 +1,6 @@
+div.log{margin-left:2%;margin-top:1em;border:1px solid gray;padding:1%}

+div.log h6{margin-bottom:0.5em;margin-top:0}

+div.log h6 a{background:inherit;color:#000}

+div.log span.log2,div.log span.log2 a{background:inherit;color:#999}

+div.log p{margin:0}

+div.log img{margin-right:0.5em}

blob - /dev/null
blob + 5ac67d5f5d124e9d222c68ba0b419a9a8dbe76b6 (mode 644)
--- /dev/null
+++ autres/css/logos.css
@@ -0,0 +1,27 @@
+div.liens,div.img{color:inherit;padding:1em;background:inherit;border:2px solid #000;max-width:95%;width:auto}
+div.liens{margin-top:1em}
+p.note{background:#ff9;border:2px dashed red;color:inherit;height:20%;padding:10px;width:25%}
+div,p.note{font:1em 'comic sans ms',serif;text-align:center;margin:auto}
+hr.t20{width:20%}
+
+img.t512{width:512px;height:512px}
+img.t250{width:250px;height:250px}
+img.w200{width:200px}
+img.w196{width:196px}
+img.w192{width:192px}
+img.w180{width:180px}
+img.w158{width:158px}
+img.w128{width:128px}
+img.w120{width:120px}
+img.w110{width:110px}
+img.w88{width:88px}
+img.w80{width:80px}
+
+img.h200{height:200px}
+img.h196{height:196px}
+img.h192{height:192px}
+img.h128{height:128px}
+img.h80{width:80px}
+img.h60{height:60px}
+img.h48{height:48px}
+img.h32{height:32px}
blob - /dev/null
blob + e9cf7a2751b665d76e9298b82c8ec14c5489e9cb (mode 644)
--- /dev/null
+++ autres/css/logwinamp.css
@@ -0,0 +1,4 @@
+table.dl{text-transform:capitalize;width:100%;border-collapse:collapse;margin-top:0.5em}
+table.dl th,table.dl td{border:1px solid}
+.dl th{background:#ff0;color:inherit;font-size:1.05em;text-align:center}
+.dl caption{font-size:1.2em;text-align:left}
blob - /dev/null
blob + 2d310c533c6604485b2310fd02cc336cf925c270 (mode 644)
--- /dev/null
+++ autres/css/mail.css
@@ -0,0 +1,12 @@
+/*Il y a quelques propriétés CSS 3 dans ce fichier,
+d'ou son invalidité.
+-moz-border-radius rend les bordures arrondies
+dans les navigateurs qui utilisent le moteur de rendu gecko,
+entre autres Firefox, mozilla, seamonkeys et camino*/
+form{border:2px solid #000;width:90%}
+p#msg,p#adr,p#radio{-moz-border-radius:10px;border:2px solid #ccc;margin-right:10%;padding:10px}
+p#msg textarea{border:1px solid #000;height:30em;width:80%}
+p#adr input{border:1px solid #000}
+p.bt{text-align:center}
+p.bt input{-moz-border-radius:5px;border:1px red solid;width:50%}
+input:focus,textarea:focus{background:#efefef;color:#000}
blob - /dev/null
blob + edeb545d5fe470818ac171b8328f36199e0d70f6 (mode 644)
--- /dev/null
+++ autres/css/news.css
@@ -0,0 +1,2 @@
+p{display:list-item}

+div#footer p{display:block}

blob - /dev/null
blob + fe96fc9db4cdb5de9706068720a995bcb1a68cc7 (mode 644)
--- /dev/null
+++ autres/css/rss.css
@@ -0,0 +1,5 @@
+div#parent{margin:20px auto;width:80%}
+strong#titresite{font-size:1.4em;font-style:normal;font-weight:700}
+strong#description{font-size:1.2em;font-style:normal;font-weight:700}
+div.item{border:1px #c8c8c8 solid;clear:both;margin:3px auto;padding:6px 10px;width:90%}
+a.nomitem{font-weight:700}
blob - /dev/null
blob + 19d2a7e6cb229dfcb9ed0efc6387a5969eefbf95 (mode 644)
--- /dev/null
+++ autres/css/stats.css
@@ -0,0 +1,5 @@
+table,caption{margin-right:60%}

+caption{color:red;font-weight:bold;text-align:left;margin-top:1em}

+table,th{border:2px solid black}

+td{border:1px solid black}

+.NbrVisites{text-align:right}

blob - /dev/null
blob + 8aca70b449c1a861ddb2a74f8ddf179672f079a2 (mode 644)
--- /dev/null
+++ autres/css/styledefaut.css
@@ -0,0 +1,67 @@
+html{height:100%;overflow:scroll;direction:ltr;font-size:0.8em}

+body{font-family:'Trebuchet ms',Verdana,Arial,Helvetica,sans-serif;padding:10px;border:1px dotted}

+/*menu footer*/

+#menu img{padding:1px 0 0 1px}

+#menu .m{width:110px;height:36px;}

+#menu .d{padding-right:1px;}

+#menu .r{padding:0 14px 0 15px;}

+#menu .r img, .footer img{width:80px;height:15px;}

+#menu{border:2px solid #000;height:99px;margin:auto;text-align:center;width:445px}

+#barmen{border:1px solid #000;height:0}

+#footer{clear:both;background:gray;border:1px solid #000;color:inherit;margin:auto;text-align:center}

+#footer .f{margin:auto 3%}

+#footer a:link,#footer a:visited{background:inherit;color:blue}

+#footer .lien{margin:4em}

+#footer p{margin:1em;padding:0}

+#footer #statScript:hover span{color:red}

+/*titres*/

+h1{background:url(/img/gradient/rouge.jpg) #9b0020;font-size:1.5em;padding-left:0.5em;text-transform:uppercase}

+h2{background:url(/img/gradient/orange.jpg) #ff0500;font-size:1.4em;text-transform:uppercase;padding-left:0.7em;}

+h3{background:url(/img/gradient/vert.jpg) #00ac00;font-weight:400;font-size:1.3em;text-indent:1em;text-transform:capitalize}

+h4{background:url(/img/gradient/bleu.jpg) #0205cc;font-weight:700;text-indent:1.2em;text-transform:capitalize}

+h5{background:url(/img/gradient/gris.jpg) bottom #feffed;font-variant:small-caps;text-transform:capitalize;text-indent:1.5em;color:#fff}

+h5:first-letter{font-weight:400;text-transform:uppercase}

+h6{font-family:'times new roman',serif;text-transform:capitalize;text-indent:2.5em;

+   background:url(/img/gradient/jaune.jpg) #feff37;width:auto;}

+h1,h2,h3,h4,h5,h6{background-repeat:repeat-x}

+h1,h2,h3{border:2px solid #000;font-family:'Comic sans MS',sans-serif}

+h4,h5,h6{border:2px solid gray;font-family:Arial,sans-serif}

+h1,h2{border:2px solid #000}

+/*quevoir*/

+table.quevoir caption{font-size:1.2em;text-align:left;text-transform:capitalize}

+table.quevoir,table.quevoir caption{margin-left:2em}

+table.quevoir tfoot,table.quevoir thead{background:#3cf;color:#000;font-size:1.1em;text-align:center;text-transform:capitalize}

+table.quevoir tbody{text-align:center;text-transform:capitalize}

+/*paragraphes*/

+p{margin:2.5%}

+p:hover:first-letter{color:red}

+p:first-letter,p.pintro:first-letter{font:700 0.9em 'Comic Sans MS',serif;text-transform:uppercase}

+.pintro{margin:0 5%;text-indent:10px}

+/*liens*/

+a:link{text-decoration:none}

+a:hover{background:inherit;color:#000;text-decoration:underline overline}

+a:active,a:focus,a:visited:active;a:visited:focus{background:#000;color:#3f3;text-decoration:underline overline}

+a:active img,a:focus:img,a:visited:focus img,a:visited:active img{border:1px dotted GRAY}

+a:visited{background:inherit;color:#666;text-decoration:none}

+.fr:before,a.externe:lang(fr):before,[hreflang|=fr]:before{content:url(/img/mini/flagfr.png)' [fr] '}

+.en:before,a.externe:lang(en):before,[hreflang|=en]:before{content:url(/img/mini/flaguk.png)' [en] '}

+.de:before,a.externe:lang(de):before,[hreflang|=de]:before{content:url(/img/mini/flagde.png)' [de] '}

+.ru:before,a.externe:lang(ru):before,[hreflang|=ru]:before{content:url(/img/mini/flagru.png)' [ru] '}

+.externe:after{content:' 'url(/img/mini/externe.png)}

+/*images*/

+img{border:0;vertical-align:middle}

+img.w80{width:80px}

+img.h15{height:15px}

+img.t16{width:16px;height:16px}

+img.t32{width:32px;height:32px}

+img.t48{width:48px;height:48px}

+img.t64{width:64px;height:64px}

+img.t128{width:128px;height:128px}

+img.t256{width:256px;height:256px}

+/*autres (corrections)*/

+h1 img{margin:0.3em}

+dt{margin-left:2.5%;text-decoration:underline}

+hr.barquoi{clear:both;margin-right:50%}

+abbr,acronym{cursor:help}

+.motcle,strong,em{font-family:Arial,sans-serif}

+.motcle{font-weight:700}

blob - /dev/null
blob + 76046f107e222cbda54d699efd71617143cf89e7 (mode 644)
--- /dev/null
+++ autres/css/stylefavs.css
@@ -0,0 +1,6 @@
+body{font:1em 'Trebuchet MS',Verdana,Arial,Helvetica,sans-serif}
+a.d{font-weight:700}
+span.l{font-size:0.8em}
+span.n{margin-left:3%}
+hr.fb{margin:auto;width:80%}
+p.note{background:gray;border:1px solid #000;color:inherit;text-align:center}
blob - /dev/null
blob + 44e7f4f82e2a15a2225f1ef21c1542b41f1136b2 (mode 644)
--- /dev/null
+++ autres/css/stylemotcle.css
@@ -0,0 +1,9 @@
+.code{background:#ccc;border:1px solid #000;color:inherit}
+.code1{color:#939;font-weight:700}
+.code2{color:#33f}
+.codexml{background:#ccc;border:2px solid;color:inherit}
+.xml1{color:#c3c;font-style:normal;font-weight:700}
+.xml2{color:#939}
+.xml3{color:#990}
+.xml4{color:#63f}
+.code1,.code2,.xml1,.xml2,.xml3,.xml4{background:inherit}
blob - /dev/null
blob + b576fdc3c25a36e8b1b6472421b04860ae221807 (mode 644)
--- /dev/null
+++ autres/css/temp.css
@@ -0,0 +1,5 @@
+.entete{font:1.1em Arial,serif;text-align:center;text-transform:capitalize;background:#ffc;color:#000}
+.taille{text-align:right}
+table{text-transform:capitalize;width:100%}
+td{padding:2px}
+div#animation{text-align:center}
blob - /dev/null
blob + 0294f0c87b35159ad4f9d6cc1c1d934fa8da96c7 (mode 644)
--- /dev/null
+++ autres/error/index.php
@@ -0,0 +1,76 @@
+<?php

+$SQL['TypePage']=2;

+if(isset($_GET['erreur']))

+{

+  switch($_GET['erreur'])

+  {

+    case'403':

+      $titre='Erreur 403 : Accès Interdit';

+      $Erreur='Vous n\'êtes pas autorisé à accéder à ce fichier.';

+      break;

+    case'500':

+      $titre='Erreur 500 : Erreur du serveur';

+      $Erreur='Le serveur à rencontré une erreur. Si ce site n\'est pas accessible, vous pouvez vous rendre sur '."\n\t".

+            '<a href="http://ssylvainsab.free.fr/">une copie que je place en cas de problème</a>.';

+      break;

+    default:

+      $titre='Erreur 404 : Fichier Introuvable';

+      $Erreur='Ce fichier est introuvable. Vérifiez l\'url que vous avez entré.<br />'."\n\t".

+              'Le lien est peut-être mort. L\'erreur à été enregistrée dans la base de données afin que je puisse y remédier.';

+      break;

+  }

+  $head['css'][0]['filename']='erreur';

+  require'../source-haut.php';

+  echo'<div style="width:70%">',"\n",

+      ' <h1>',$titre,'</h1>',"\n",

+      '  <p>',$Erreur,"\n",

+      '     <br />',"\n",

+      '     Retour à l\'accueil : ',"\n",

+      '     <a href="/index.php"><img src="/img/boutons/btssylvainsab.gif"',

+      ' style="width:123px;height:33px;" alt="Sylvain.sab" /></a>',"\n",

+      '  </p>',"\n",

+      '</div>',"\n";

+}

+else

+{

+  $titre='Voir les erreurs';

+  require'../source-haut.php';?>

+

+<h1>Les erreurs du site</h1>

+<p>Quelle erreur voulez-vous voir ?</p>

+<ul><li><a href="?erreur=404">Erreur 404 (Fichier introuvable)</a></li>

+    <li><a href="?erreur=403">Erreur 403 (Accès interdit)</a></li>

+    <li><a href="?erreur=500">Erreur 500 (Erreur du serveur)</a></li></ul>

+<?php

+}

+$Connection=mysql_connect('localhost',$SQL['Identifiant'],$SQL['MotDePasse']);

+mysql_select_db($SQL['NomDeLaBase'],$Connection);

+$SQL['AdressePage']=mysql_real_escape_string(htmlspecialchars($_SERVER['REQUEST_URI'],ENT_NOQUOTES));

+$SQL['Referer']=htmlspecialchars($_SERVER['HTTP_REFERER'],ENT_QUOTES);

+//si on a voulu voir le fichier robots.txt, c'est un bot

+if($SQL['AdressePage']==='/robots.txt')

+{

+  $PageIntrouvable=true;

+  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'];

+  $RQAjoutRobot='INSERT INTO Robots(DateTime,UserAgent,AdresseIP) '.

+      'VALUES(NOW(),\''.$_SERVER['HTTP_USER_AGENT'].'\',\''.$SQL['AdresseIP'].'\')';

+  RequeteSQL($RQAjoutRobot,'Les données concernant le Bot n\'ont pas pu être ajoutées.','Insertion');

+}

+/*si il y a une erreur :

+ l'url demandée ne contient pas le chemin du fichier d'erreur

+ et ce n'est pas un robot qui regarde robots.txt*/

+elseif(!strpos($SQL['AdressePage'],'/autres/error/'))

+{

+  $PageIntrouvable=true;

+  $AjoutErreur='INSERT INTO erreursPages(PageDemandee,DateTime,Referer) '.

+      'VALUES(\''.$SQL['AdressePage'].'\',NOW(),\''.$SQL['Referer'].'\')';

+  $Erreur='J\'enregistre les erreurs de fichiers non trouvés pour y remédier.<br />Il y a eu un problème durant la classification de cette erreur.';

+  RequeteSQL($AjoutErreur,$Erreur,'Insertion');

+}

+require'../source-bas.php';

+?>

blob - /dev/null
blob + 54ce6539e1f5ce5b2d03d4efbae441bab15b3681 (mode 644)
--- /dev/null
+++ autres/redir.php
@@ -0,0 +1,52 @@
+<?php

+//Si on a demandé une redirection (variable get), on prend la variable de redirection

+if(isset($_GET['redir']))

+  $page=$_GET['redir'];

+//sinon on fait une variable vide

+else

+  $page='';

+//******************************

+//toutes les redirections

+$redirections=array(

+  'Winamp'          =>'http://download.nullsoft.com/winamp/client/winamp524_full_bundle_emusic-7plus.exe',

+  'TraductionWinamp'=>'http://download.nullsoft.com/customize/component/2006/6/14/P/winamp_in_FR_.exe',

+  'OGGWinamp'       =>'http://download.nullsoft.com/customize/component/2005/1/11/P/Ogg-Vorbis_encoder_v1-1.exe',

+  'SkinWMP'         =>'http://www.winamp.com/skins/details.php?id=143975');

+//Si la redirection demandée existe

+if(array_key_exists($page,$redirections))

+{

+  //titre et meta de redirection, puis la page (explications)

+  $head='  <title>Redirection</title>'."\n".'  <meta http-equiv="refresh" content="5;url='.$redirections[$page].'">'."\n";

+  $page='  <p>Vous allez être redirig&eacute; dans 5 secondes vers <a href="'.$redirections[$page].'">le téléchargement</a>.</p>

+  <p><a href="/logiciels/winampnotice.php">Retour &agrave; la notice de winamp</a></p>';

+  //on affiche la page avec la redirection

+?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

+<html lang="fr">

+<head>

+<?php echo $head;?>

+  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+</head>

+<body>

+<?php echo $page;?>

+</body>

+</html><?php

+}

+//******************************

+//Si on n'a pas demandé de redirection ou que le nom est mauvais

+else

+{

+  $titre='Redirections';

+  $SQL['TypePage']=2;

+  require'source-haut.php';?>

+  <p>Cette page comporte des liens vers des urls longues, vers lesquelles je redirige au lieu de donner le lien directement.

+     Ce sont surtout des liens vers des fichiers à télécharger.</p>

+  <p><?php

+  //on affiche les redirections possibles

+  $descriptionUrl=array('Winamp','la traduction en français','le plug-in pour enregistrer les musiques en OGG','le skin Windows Media Player');

+  $compte=0;

+  foreach($redirections as $url)

+    echo'Télécharger <a href="'.$url.'">'.$descriptionUrl[$compte++].'</a><br />'."\n".'  ';

+  echo '</p>';

+  require'source-bas.php';

+}

+?>

blob - /dev/null
blob + cf98e0e57f340d7c457d94b3f5d43dde398c4b20 (mode 644)
--- /dev/null
+++ autres/source-bas.php
@@ -0,0 +1,107 @@
+<?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);

+//*/

+?>

blob - /dev/null
blob + 24d2a2d74aa817db092f91b11c0d5697a7f8747a (mode 644)
--- /dev/null
+++ autres/source-haut.php
@@ -0,0 +1,225 @@
+<?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",
+      /*Balise pour empêcher l'indexation par les moteurs de recherche
+        ajoutée le 27/6/2015 en vue d'une nouvelle utilisation du domaine,
+        celui sur l'informatique étant largement obsolète*/
+      '<meta http-equiv="robots" content="noindex, follow" />',"\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);
+  */
+?>
blob - /dev/null
blob + c114f667fb1ba1c9cf75a37b0ed5bcf043242a20 (mode 644)
--- /dev/null
+++ autres/source.php
@@ -0,0 +1,14 @@
+<p>

+  Cette page est maintenant obsol&egrave;te.<br>

+  La page qui correspond est <a href="source-haut.php">source-haut.php</a>.

+</p>

+<p>

+  Un mail m'a &eacute;t&eacute; envoy&eacute; pour que je mette &agrave;jour les mauvais liens.</a>

+</p>

+<p>

+  Voici le code de la page :

+</p>

+<?php

+mail('sylvain.sab@free.fr','Page source obsolete',$_SERVER['REQUEST_URI']."\n".$_SERVER['HTTP_REFERER']);

+highlight_file(__FILE__);

+?>

blob - /dev/null
blob + 2043ad41f3dd311a26d38302970a1623d1ae4102 (mode 644)
--- /dev/null
+++ cestquoi/index.php
@@ -0,0 +1,96 @@
+<?php
+$head['css'][0]['filename']='cestquoi';
+$titre='Qu\'est-ce que Linux ?';
+$charset='utf8';
+require'../../autres/source-haut.php'?>
+<h1><img src="/img/cestquoi/tux-mini.png" alt="Tux" style="width:45px;height:53px" />C'est quoi GNU/Linux ?</h1>
+<h2>GNU/Linux</h2>
+   <p>Linux appartient au monde du <a href="/cestquoi/libre/">logiciel libre et open source</a>.
+      C'est un <em>syst&#232;me d'exploitation</em>, comme Windows XP, Windows Vista, ou encore Mac OS, qui permet comme le nom l'indique d'<em>exploiter</em> son ordinateur. Tout syst&#232;me d'exploitation est compos&#233; d'un noyau, qui s'occupe des tâches &#233;l&#233;mentaires (Gestion de la m&#233;moire, dialogues entre les logiciels et le mat&#233;riel...) et d'un ensemble de logiciels. Le noyau de Linux est... Linux. L'ensemble de logiciels se nomme GNU (A l'&#233;poque ou il fut d&#233;vellop&#233;, les principaux syst&#232;mes d'exploitations &#233;taient des syst&#232;mes non-libres d&#233;riv&#233;s d'UNIX, et tr&#232;s chers. Le nom GNU fut donc donn&#233; &#224; cet ensemble, pour signifier "GNU is Not Unix" (c'est un acronyme r&#233;cursif), soit "GNU n'est pas Unix"). Le syst&#232;me d'exploitation est donc GNU/Linux, mais on dit souvent Linux.</p>
+<h2>Distributions</h2>
+   <p>Linux est libre, chacun est donc libre de voir le code, le modifier et le redistribuer.
+      Cette libert&#233; est la la base de la vari&#233;t&#233; des distributions.</p>
+   <p>Chaque distribution utilise le m&#234;me noyau Linux, mais les logiciels fournis par d&#233;faut (s'il y en a)
+      ne seront pas les m&#234;mes. Les distributions diff&#232;rent &#233;galement selon leur orientation : certaines comme Red Hat sont plus indiqu&#233;es pour &#234;tre utilis&#233;es comme <a href="/cestquoi/web/serveur.php">serveur</a>, d'autres comme Ubuntu ou Mandriva sont plus destin&#233;es &#224; un syst&#232;me d'exploitation complet. La fa&#231;on dont elles sont fabriqu&#233;es et maintenues &#224; jour diff&#232;re &#233;galement : Suse est g&#233;r&#233;e par une entreprise, alors que Debian et ses d&#233;riv&#233;s sont fabriqu&#233;es par les utilisateurs. Enfin, le prix s&#233;pare les distributions : la majorit&#233; sont gratuites, mais certaines comme mandriva (Pour avoir un plus grand nombre de logiciels) sont payantes.</p>
+<h2>Principales diff&#233;rences avec Windows</h2>
+   <p>(Note : ici, je n'aborde que les diff&#233;rences directement visibles par l'utilisateur)</p>
+   <h3>Gestion des fichiers, dossiers, et p&#233;riph&#233;riques</h3>
+      <p>Sous Windows, l'antislash "\" est utilis&#233; pour d&#233;limiter des fichiers/dossiers, et
+         Linux utilise le slash "/".<br />Sous Linux, lorsque l'on utilise le gestionnaire de fichiers (l'&#233;quivalent de l'explorateur Windows), on ne voit pas les lecteurs CD/DVD, les disques durs, les cl&#233;s USB, et tout ce qui peut servir &#224; stocker des donn&#233;es. Chacun de ces &#233;l&#233;ments est accessible via un dossier, comme s'il n'y avait qu'un seul disque dur. Ce dossier est appel&#233; "point de montage" : par exemple, les CDs et DVDs sont souvent <em>mont&#233;s</em> (c'est &#224; dire accessibles via) dans le dossier /media/cdrom1, /media/cdrom2, etc. Il est possible de changer les points de montage des p&#233;riph&#233;riques, et de configurer Linux pour monter un p&#233;riph&#233;rique &#224; un certain endroit.<br /> Le dossier le plus haut dans l'arborescence est donc "/".</p>
+   <h3>Gestion des logiciels</h3>
+      <p>Sous Windows, pour installer un logiciel, il faut le chercher sur internet,
+         le t&#233;l&#233;charger et l'installer quelquepart dans un dossier. Pour le mettre &#224; jour, il faut v&#233;rifier soit-m&#234;me, via le logiciel si cela est possible ou bien sur Internet. C'est assez chaotique.<br />
+         Sous Linux, il y a des serveurs qui fournissent la liste de la majorit&#233; des logiciels disponibles, et les mises &#224; jour quand il y en a. Il est possible de choisir diff&#233;rentes sources de logiciels : g&#233;r&#233;s par la soci&#233;t&#233;, g&#233;r&#233;s par la communaut&#233;, open-source ou non. Les mises &#224; jour sont class&#233;es par cat&#233;gories : mises &#224; jour importantes de s&#233;curit&#233;, mises &#224; jour recommand&#233;es, etc. Pour installer un logiciel, il suffit de regarder dans la liste disponible, puis de l'installer. Les mises &#224; jour de tout le syst&#232;me (noyau et logiciels) sont v&#233;rifi&#233;es r&#233;guli&#232;rement. Il n'y a donc pas besoin de s'en occupper.</p>
+      <p>Les adresses des sources ou sont disponibles les logiciels sont apell&#233;s les d&#233;p&#244;ts.
+         Les logiciels sont en fait des paquets. Par exemple, le paquet correspondant &#224; Firefox se nomme... firefox. Mais un logiciel peut n&#233;c&#233;ssiter plusieurs paquets. Par exemple, il est n&#233;c&#233;ssaire d'installer un paquet de traduction pour avoir firefox en fran&#231;ais.</p>
+   <h3>Interfaces graphiques</h3>
+      <p>Sous Windows, il n'y a qu'une seule interface graphique : il y a forc&#233;ment une barre des tâches,
+         un menu d&#233;marrer, la liste des applications ouvertes. Un seule th&#232;me de fen&#234;tres est disponible, et vous pouvez choisir entre trois couleurs. A moins d'installer encore et encore des logiciels, il n'est pas vraiment possible de personaliser l'interface.<br />
+         Avec Linux, l'interface graphique est <em>un logiciel &#224; part enti&#232;re</em>. Il est donc possible d'en installer plusieurs, et des les configurer &#224; loisir.</p>
+      <p>Voici une capture de chacune des trois interfaces graphiques principales :</p>
+      <div style="margin:0;padding:0;text-align:center">
+         <p>KDE (Voir <a href="http://fr.wikipedia.org/KDE" hreflang="fr" class="wiki">KDE sur wikip&#233;dia</a>)<br />
+            <a href="/img/cestquoi/linux-capture-ecran-kde.png">
+            <img src="/img/cestquoi/linux-capture-ecran-kde.png" style="width:512px;height:384px" /></a>
+            </p>
+         <p>Gnome (Voir <a href="http://fr.wikipedia.org/GNOME" hreflang="fr" class="wiki">Gnome sur wikip&#233;dia</a>)<br />
+            <a href="/img/cestquoi/linux-capture-ecran-gnome.png">
+            <img src="/img/cestquoi/linux-capture-ecran-gnome.png" style="width:512px;height:384px" /></a>
+            </p>
+         <p>Xfce (Voir <a href="http://fr.wikipedia.org/Xfce" hreflang="fr" class="wiki">Xfce sur wikip&#233;dia</a>)<br />
+            <a href="/img/cestquoi/linux-capture-ecran-xfce.png">
+            <img src="/img/cestquoi/linux-capture-ecran-xfce.png" style="width:512px;height:384px" /></a></p></div>
+   <h3>Console</h3>
+      <p>Sous linux, tout est faisable via une interface graphique (c'est &#224; dire
+         en utilisant des logiciels sp&#233;cifiques, en cliquant sur des boutons, etc...). Mais il est &#233;galement possible de faire ce que l'on veut (lister des r&#233;pertoires et des fichiers, installer et g&#233;rer des paquets, &#233;diter des fichiers, lancer ou arr&#234;ter des programmes...). Bien sûr, il n'est pas du tout obligatoire d'utiliser la console si on pr&#233;f&#232;re passer par des logiciels ordinaires. Mais une fois que l'on est habitu&#233;, c'est beaucoup plus rapide.</p>
+      <p>Exemples de ce que l'on peut faire via une console (aussi appel&#233; terminal ou shell) :</p>
+      <dl>
+         <dt>ls -l /</dt>
+            <dd>Liste tous les fichiers et dossiers imm&#233;diatement contenus dans / en affichant le nom,
+                la date de modification, la taille, les propri&#233;taires...<br />
+                <em>ls</em> : la commande qui permet de lister des fichiers/dossiers<br />
+                <em>-l</em> : option (les options commencent par deux tirets ou un seul en abr&#233;g&#233;) qui demande d'afficher plusieurs renseignements sur les fichiers.<br />
+                <em>/</em> : l'endroit ou sont les fichiers/dossiers &#224; lister. Ici, je choisis de lister le dossier racine.</dd>
+         <dt>apt-cache search office</dt>
+            <dd>Permet de rechercher un paquet dont le nom contient "office".<br />
+                <em>apt-cache</em> : pour manipuler la liste des paquets existants<br />
+                <em>search</em> : pour indiquer &#224; la commande apt-cahce que l'on veut chercher un paquet<br />
+                <em>office</em> : on recherche un paquet qui contient "office". dans cette exemple, on cherche une suite qui peut ressembler &#224; Microsoft office (word), OpenOffice.org, ou autre, mais on peut chercher n'importe quoi.</dd>
+         <dt>sudo aptitude install firefox</dt>
+            <dd>Pour installer le paquet firefox<br />
+                <em>sudo</em> : Commande pour demander les droits d'administrateur (n&#233;c&#233;ssaires pour installer un paquet)<br />
+                <em>aptitude</em> : commande qui permet de manipuler les paquets<br />
+                <em>install</em> : pour indiquer &#224; aptitude que l'on veut installer un paquet<br />
+                <em>firefox</em> : le nom du paquet &#224; installer</dd>
+         <dt>man ls</dt>
+            <dd>Pour avoir les informations du manuel sur la commande "ls"<br />
+                <em>man</em> : utiliser le manuel, pour avoir des informations sur les commandes<br />
+                <em>ls</em> : la commande que l'on veut apprendre</dd></dl>
+      <p>Il est possible de lancer une console en interface graphique, en utilisant
+         la console fournie par d&#233;faut avec son interface, et c'est ce que l'on fait le plus souvent pour utiliser une console, mais la vraie console est en mode texte, c'est &#224; dire que tout l'&#233;cran est occup&#233;. Sous Linux, sept consoles peuvent tourner en m&#234;me temps, ind&#233;pendemment de l'interface graphique (peut importe qu'elle fonctionne ou non). C'est tr&#232;s utile lorsque l'interface graphique plante par exemple.</p>
+      <p>Note : Windows dispose &#233;galement d'une console, via le menu D&#233;marrer>Accessoires,
+         mais il ne s'agit que d'une console DOS, et elle est beaucoup moins utilis&#233;e que sous Linux.</p>
+<hr />
+<p id="next">Voir &#233;galement :<br /><br />
+   Pages de ce site :
+   <a href="/cestquoi/libre/">C'est quoi le libre, l'open-source ?</a><br />
+   <!--a href="rien pour le moment">Mon exp&#233;rience avec GNU/Linux :
+      Tutoriel complet pour installer et configurer Linux et ses trois interfaces, ainsi que tous les logiciels par d&#233;faut et les p&#233;riph&#233;riques (imprimantes, scanners, son...)</a><br /--><br />
+   Comprendre Linux :<br />
+   <a href="http://sebsauvage.net/comprendre/linux/" hreflang="fr">Sebsauvage : C'est quoi Linux ?</a><br />
+   <a href="http://fr.wikipedia.org/wiki/Linux" hreflang="fr" class="wiki">Wikip&#233;dia : Linux</a><br />
+   <a href="http://www.commentcamarche.net/linux/linintro.php3" hreflang="fr">CCM : Linux</a><br /><br />
+   Plus d'informations sur Linux :<br />
+   <a href="http://www.commentcamarche.net/faq/97" hreflang="fr">CCM : Astuces Linux</a><br />
+   <a href="http://www.commentcamarche.net/faq/sujet-3360" hreflang="fr">CCM : D&#233;buter sous Linux</a><br />
+   <a href="http://www.siteduzero.com/tuto-2-96-linux.html" hreflang="fr">SDZ : Tutoriels Linux</a><br /><br />
+   Quelques sites enti&#232;rement d&#233;di&#233;s &#224; Linux :<br />
+   <a href="http://linuxfr.org/" hreflang="fr">Linuxfr.org</a><br />
+   <a href="http://lea-linux.org/" hreflang="fr">Lea Linux</a><br />
+   <a href="http://www.passeralinux.fr/" hreflang="fr">Passer &#224; GNU/Linux</a><br />
+   <a href="http://distrowatch.com/?language=FR" hreflang="fr">Distrowatch, un site sur l'actualit&#233; des distributions</a><br />
+   <a href="http://www.linux-france.org/" hreflang="fr">Linux France</a><br />
+   <a href="http://www.linux-center.org/fr/" hreflang="fr">Linux Center</a><br /><br />
+   Autres :<br />
+   <a href="http://membres.lycos.fr/cestquoiwindows/" hreflang="fr">R&#233;cit d'une exp&#233;rience (tr&#232;s subjectif) : un utilisateur de Linux a d&#233;couvert Windows</a></p>
+<?php require'../../autres/source-bas.php'?>
\ No newline at end of file
blob - /dev/null
blob + a0d7fd513a54064b48d6aec944510dab876d4fe6 (mode 644)
--- /dev/null
+++ cestquoi/libre/index.php
@@ -0,0 +1,50 @@
+<?php

+$head['css'][0]['filename']='cestquoi';

+$titre='Qu\'est-ce que le libre, l\'open-source?';

+$charset='utf-8';

+require'../../autres/source-haut.php'?>

+<h1><img src="/img/cestquoi/copyleft80.png" style="width:80px;height:80px" alt="Copyleft"/>C'est quoi les logiciels libres ? L'open source ?</h1>

+   <p>Chaque programme que vous utilisez est <em>cod&#233;</em>, c'est &#224; dire qu'il est programm&#233;

+      pour faire

+      certaines choses &#224; un moment donn&#233; (voir "<a href='/cestquoi/programmation/'>C'est quoi la programmation ?</a>"). Chaque logiciel a donc un code source, qui d&#233;finit ce que fait le programme.<br />

+      Mais g&#233;n&#233;ralement, le programme que vous utilisez est <em>compil&#233;</em>, c'est &#224; dire qu'il a &#233;t&#233; transform&#233; en fichier binaire, compos&#233; de 0 et de 1 et compr&#233;hensible uniquement par l'ordinateur. Vous ne pouvez donc pas connaitre le code que vous utilisez, ni savoir pr&#233;cis&#233;ment ce qu'il fait.</p>

+<h2>L'Open Source</h2>

+   <p>Avec les logiciels open-source, le code source est accessible (open source=source ouvert),

+      et chacun peut savoir (pour peu qu'on ait des connaissances en programmation) ce que fait le logiciel. On peut donc accorder sa confiance au logiciel.</p>

+   <p>Mais c'est loin d'&#234;tre le seul avantage de l'open source par rapport au logiciel propri&#233;taire

+      (code source non disponible) : selon les restrictions qu'a fix&#233; l'auteur du logiciel, il est &#233;galement possible de copier le logiciel pour le redistribuer, de le modifier, de le vendre, etc...</p>

+<h2>Le logiciel libre</h2>

+   <p>L'auteur d'un logiciel open-source peut imposer plusieurs restrictions quant &#224; l'utilisation de son

+      logiciel : interdiction de le modifier, interdiction de l'utiliser de fa&#231;on commerciale, etc. Avec le logiciel libre, il n'y a absolument <strong>aucune restriction</strong> : vous &#234;tes libre de le copier, de le modifier, de revendre les modifications, bref, tout ce que vous voulez.</p>

+   <p>La seule restriction possible sur un logiciel libre est le <strong>gauche d'auteur</strong>

+      (le logo dans le titre) : par opposition au droit d'auteur, cela signifie que si l'on redistribue le logiciel, il n'est pas possible de lui appliquer des restrictions.</p>

+   <p>ATTENTION, contrairement &#224; certaines id&#233;es, le logiciel libre n'est pas forc&#233;ment gratuit.

+      Il existe des versions de Mandriva payantes, et Mandriva est pourtant un logiciel libre.</p>

+<h2>Avantages du logiciel libre ou open source par rapport au logiciel propri&#233;taire</h2>

+   <p>Le logiciel libre &#233;tant g&#233;n&#233;ralement d&#233;vellop&#233; par une communaut&#233;

+      d'utilisateurs, et non une entreprise, les failles de s&#233;curit&#233; sont corrig&#233;es beaucoup plus rapidement. Et si une entreprise qui d&#233;vellopait un logiciel libre l'abandonnent, les utilisateurs peuvent le reprendre.</p>

+   <p>Avec le logiciel propri&#233;taire, lorsque l'entreprise arr&#234;te de fabriquer ce logiciel,

+      il n'y a plus de mise &#224; jour, et donc des risques de s&#233;curit&#233; sont encourus. Il n'y &#233;galement plus de support (hotline) &#224; propos de ce logiciel. Dans le monde de l'open-source, les utilisateurs eux-m&#234;mes fabriquent le logiciel. S'il y a des utilisateurs, il y a des mises &#224; jour et des nouveaut&#233;s.</p>

+   <p>Si vous avez des connaissances en programmation, il est possible de modifier le logiciel,

+      pour l'adapter &#224; vos besoins, le personaliser, etc. Ce n'est pas possible avec le logiciel propri&#233;taire.</p>

+<h2>Extensions du mot libre</h2>

+     <p>Initialement, le mot "libre" en informatique signifie "libre de droits" pour un logiciel.

+        Mais cette définition s'est étendue à plusieurs autres choses : des images, des articles...<br />

+	Par exemple, le contenu de ce site est sous License libre.</p>

+<h2>Ou est le libre ?</h2>

+  <p>Sans que vous le sachiez peut-&#234;tre, le libre vous sert tous les jours :</p>

+  <ul><li>La majorit&#233; des serveurs Internet fonctionnent gr&#226;ce &#224; <a href="/cestquoi/gnu-linux">Linux</a>,

+         un syst&#232;me libre.</li>

+      <li>Le navigateur Firefox, comme beaucoup d'autres logiciels, est libre.</li>

+      <li>Les articles de l'encyclop&#233;die mondiale traitant de tous les sujets, wikip&#233;dia, sont libres.</li>

+      <li>Internet utilise le protocole TCP/IP, libre &#233;galement.</li></ul>

+<hr />

+<p id="next">Voire &#233;galement :<br />

+<a href="http://sebsauvage.net/comprendre/licences/" hreflang="fr">Sebsauvage : Les licences logicielles</a><br />

+   <a href="http://www.sebsauvage.net/rhaa/?2006/09/08/00/00/01" hreflang="fr">Sebsauvage : Si si. L'opensource, &#231;a marche.</a><br />

+   <a href="http://biologeek.com/journal/index.php/pourquoi-contribuer-aux-logiciels-libres" hreflang="fr">Biologeek.com : Pourquoi contribuer aux logiciels libres ?</a><br />

+   <a href="http://www.siteduzero.com/news-62-6033.html?coms=0" hreflang="fr">SDZ : 2007, essor de la culture libre ?</a><br />

+   <a href="http://fr.wikipedia.org/wiki/Logiciel_Libre" hreflang="fr">Wikip&#233;dia : Logiciel Libre</a><br />

+   <a href="http://fr.wikipedia.org/wiki/Open_Source" hreflang="fr">Wikip&#233;dia : Open Source</a><br />

+   <a href="http://april.org/" hreflang="fr"><acronym title="Association Pour la Recherche et l'Internet Libre">APRIL</acronym></a></p>

+<?php require'../../autres/source-bas.php'?>
\ No newline at end of file
blob - /dev/null
blob + c50f27781b8d55b2e9aea4576eb92aa3a9267ac4 (mode 644)
--- /dev/null
+++ cestquoi/programmation/index.php
@@ -0,0 +1,124 @@
+<?php
+$head['css'][0]['filename']='cestquoi';
+$head['css'][1]['filename']='code';
+$head['access'][0]=array('rel'=>'index','href'=>'../','title'=>'Index de la rubrique &#34;C\'est quoi&#34;');
+$titre='C\'est quoi la programmation ?';
+require'../../autres/source-haut.php'?>
+<h1>
+<!--[if !IE]><--><img class='t48' alt="" src="/img/cestquoi/programmation.png" /><!--><![endif]-->
+<!--[if IE]><img class='t48' src="/img/cestquoi/programmation.gif" /><![endif]-->
+C'est quoi la programmation ?<br />Comment ça fonctionne ?
+</h1>
+<p>Tout logiciel est programm&eacute; pour faire certaines  choses a un moment donn&eacute;.
+   Par exemple, votre navigateur  ouvre une page quand vous cliquez sur un lien.
+   Cette  fonctionnalit&eacute; a &eacute;t&eacute;  programm&eacute;e  par le ou les d&eacute;veloppeurs
+   du logiciel en question. Tous  les logiciels sont programm&eacute;s de cette mani&egrave;re : 
+   ils &eacute;xecutent diff&eacute;rentes instructions selon les actions de l'utilisateur.</p>
+<p>Pour ces explications, mettons-nous dans la peau d'un "programmeur".</p>
+<p>Un logiciel est &eacute;crit avec un certain langage de  programmation.
+   Il existe plusieurs langages aux syntaxes diff&eacute;rentes. 
+   Cependant, il y a des choses que l'on retrouve dans la plupart des langages :</p>
+<dl>
+  <dt>Les fonctions</dt>
+    <dd>Elles servent à ex&eacute;cuter une actionsp&eacute;cifique.</dd>
+  <dt>Les variables</dt>
+    <dd>Elles servent à stocker diff&eacute;rentes informations.</dd>
+  <dt>Les boucles</dt>
+    <dd>Elles servent à r&eacute;p&eacute;ter une action pendant un certain temps.</dd>
+  <dt>Les conditions</dt>
+    <dd>Elles servent à ex&eacute;cuter ou pas certaines actions selon certaines condition donn&eacute;es.</dd></dl>
+<h2 id="fonctions">Les fonctions</h2>
+<p>Une fonction exécute certaines actions (des calculs par exemple) en utilisant des <em>arguments</em> (aussi apellés paramètres),
+   indiqués entre parenthèses, et séparés par des virgules, après le nom de la fonction lorsqu'on l'utilise :<br />
+   <code>nomDeLaFonction<span class="py_synt">(</span>argument1,argument2<span class="py_synt">)</span></code><br />
+   Une fonction peut avoir un ou plusieurs arguments, voire aucun, et dans ce cas il faut mettre des parenthèses vides.</p>
+<p>La fonction la plus basique est celle qui permet d'afficher du texte.
+   Pour simplifier, admettons qu'elle se nomme "affiche". Donc si l'on veut &eacute;crire "Bonjour",
+   on &eacute;crira ce code :<br />
+   <code><span class="py_func">affiche</span><span class="py_synt">(</span><span class="py_str">"Bonjour"</span><span class="py_synt">)</span></code><br />
+   Il existe des fonctions toutes pr&ecirc;tes. La fonction "affiche" en est une.</p>
+<p>On peut &eacute;galement cr&eacute;er ses propres fonctions.
+   Par exemple, je crée une fonction nommée "Saluer",
+   qui affichera "Bonjour ", puis le nom d'une personne, puis " ! bienvenue sur ",puis le nom d'un logiciel :</p>
+   <pre><span class="py_reserv">fonction</span> Saluer<span class="py_synt">(</span>Nom,Logiciel<span class="py_synt">)</span>:
+  <span class="py_func">affiche</span><span class="py_synt">(</span><span class="py_str">'Bonjour '</span>,Nom,<span class="py_str">' ! Bienvenue dans '</span>,Logiciel<span class="py_synt">)</span></pre>
+<p>Ensuite, on peut "appeler" la fonction en &eacute;crivant son nom.
+    Les instructions qui sont contenues dans cette fonction s'ex&eacute;cuteront :
+    il n'y a pas besoin de r&eacute;-&eacute;crire tout ce que fait la fonction.
+    De plus, si je change la fonction&nbsp;pour qu'elle &eacute;crive "Bienvenue" et plus "Bonjour",
+    cela se r&eacute;percutera partout ou l'on utilise cette fonction !</p>
+<p>Quand on utilise une fonction, il faut mettre à la place des arguments ce que l'on veut utiliser.
+   Par exemple, après avoir crée la fonction "Saluer", je peux faire ceci :<br />
+   <code>Saluer<span class="py_synt">(</span><span class="py_str">"Sylvain"</span>,<span class="py_str">'Firefox'</span><span class="py_synt">)</span></code><br />
+   Qui affichera : <code>"Bonjour Sylvain ! Bienvenue sur Firefox"</code>.</p>
+<h2 id='variables'>Les variables</h2>
+<p>Elles servent a stocker diff&eacute;rentes informations. Une variable peut contenir :</p>
+<dl>
+  <dt>Une &laquo;cha&icirc;ne de caract&egrave;res&raquo;, c'est a dire un groupe de lettres ou de chiffres. Par exemple :</dt>
+  <dd>"Bonjour". Ou bien : "A". Ou encore : "Il y a 6 lettres dans le mot 'lettre' ". Ou : "Azerty123456blabla()".</dd>
+  <dt>Une valeur num&eacute;rique :</dt>
+  <dd>1, ou 2, ou 123, ou encore 20.1, etc....</dd>
+  <dt>Un bool&eacute;en :</dt>
+  <dd>Ce type sp&eacute;cial de variable peut valoir Vrai ou Faux.</dd></dl>
+<p>On peut utiliser les variables pour enregistrer n'importe quelle information (du moment qu'elle correspond &agrave; un des trois types).
+   Par exemple, un nom (cha&icirc;ne de caract&egrave;res), l'&acirc;ge de quelqu'un (valeur num&eacute;rique),
+   ou s'il aime lire (bool&eacute;en).</p>
+<p>Pour cr&eacute;er (on dit aussi "d&eacute;finir") une variable, il suffit d'&eacute;crire son nom et sa valeur :<br />Par exemple :</p>
+<dl>
+  <dt><code>phrase=<span class="py_str">"Ceci est du code"</span></code></dt>
+  <dd>La variable "phrase" aura pour valeur la cha&icirc;ne de caract&egrave;res "Ceci est du code".</dd>
+  <dt><code>nombre=<span class="py_num">1</span>+<span class="py_num">4</span></code></dt>
+  <dd>La variable "nombre" aura la valeur num&eacute;rique 5.</dd>
+  <dt><code>il_aime_le_vert=<span class="py_reserv">faux</span></code></dt>
+  <dd>Le bool&eacute;en "il_aime_le_vert" vaudra faux.</dd></dl>
+<p>Il ne faut pas se tromper lorsque l'on cr&eacute;&eacute;e une variable :</p>
+<ul>
+  <li>Il faut d&eacute;limiter les cha&icirc;nes de caract&egrave;res par des guillemets (ou apostrophes)</li>
+  <li>Il ne faut pas d&eacute;limiter par des guillemets ou apostrophes les valeurs num&eacute;riques et
+      les bool&eacute;ens, car sinon ils seraient pris pour des cha&icirc;nes de caract&egrave;res.</li></ul>
+<h2 id='boucles'>Les boucles</h2>
+<p>Les boucles sont utilis&eacute;es pour r&eacute;p&eacute;ter une action pendant qu'une certaine condition est vraie.
+   Par exemple, je peux cr&eacute;er une variable "nombre", et <em>afficher la valeur de cette variable</em> (l'action a faire)
+   pendant qu'elle est inf&eacute;rieure &agrave; 20 (la condition) :</p>
+<pre>nombre=<span class="py_num">3</span>     <span class="py_com">#On cr&eacute;e d'abord la variable</span>
+<span class="py_reserv">pendant que</span> nombre &lt; <span class="py_num">20</span>:<span class="py_com">#Ceci se passera tant qu'elle sera inf&eacute;rieure (inf&eacute;rieure:"&lt;") &agrave; 20</span>
+  <span class="py_func">affiche</span>(nombre)<span class="py_com">#On &eacute;crira la valeur de la variable nombre</span>
+  nombre=nombre+<span class="py_num">1</span><span class="py_com">#il faut augmenter la valeur de la variable sinon la boucle sera infinie</span></pre>
+<h2 id="conditions">Les conditions</h2>
+<p>Les conditions servent &agrave; ex&eacute;cuter ou pas des actions selon plusieurs crit&egrave;res (g&eacute;n&eacute;ralement,
+   la valeur d'une variable) :<br />
+   <code><span class="py_reserv">si</span> condition(s):<br /> &nbsp; action(s)</code><br />
+   Par exemple, voici ce que je devrais &eacute;crire si je veux dire &agrave; une personne si elle est
+   majeure ou mineure, selon son &acirc;ge :</p>
+<pre><span class="py_reserv">si</span> age &gt; <span class="py_num">18</span>:<span class="py_com">#si la personne a plus de 18 ans (sup&eacute;rieur: "&gt;")</span>
+  <span class="py_func">affiche</span><span class="py_synt">(</span><span class="py_str">"Vous &ecirc;tes majeur"</span><span class="py_synt">)</span>
+<span class="py_reserv">si</span> age &lt; <span class="py_num">18</span>:<span class="py_com">#Si la personne a moins de 18 ans</span>
+  <span class="py_func">affiche</span><span class="py_synt">(</span><span class="py_str">"Vous &ecirc;tes mineur"</span><span class="py_synt">)</span></pre>
+<p>Mais si l'&acirc;ge est strictement &eacute;gal a 18, rien ne s'affichera. On peut utiliser une autre condition, "sinon si".</p>
+<p>Voici comment faire :</p>
+<pre><span class="py_reserv">si</span> age &gt; <span class="py_num">18</span>:<span class="py_com">#si la personne a plus de 18 ans</span>
+  <span class="py_func">affiche</span><span class="py_synt">(</span><span class="py_str">"Vous &ecirc;tes majeur"</span><span class="py_synt">)</span>
+<span class="py_reserv">sinon si</span> age == <span class="py_num">18</span>:<span class="py_com">#Si la personne <em>N'A PAS</em> plus de 18 ans (la condition pr&eacute;c&eacute;dente), mais qu'elle a exactement 18 ans (il faut mettre deux signes égal)</span>
+  <span class="py_func">affiche</span><span class="py_synt">(</span><span class="py_str">"Vous avez exactement 18 ans"</span><span class="py_synt">)</span>
+<span class="py_reserv">sinon</span>:<span class="py_com">#si aucune des conditions précédentes n'est vraie, la personne est mineure</span>
+  <span class="py_func">affiche</span><span class="py_synt">(</span><span class="py_str">"Vous &ecirc;tes mineur"</span><span class="py_synt">)</span></pre>
+<h2 id='ccl'>Conclusion</h2>
+<p>Un langage de programmation est dynamique, il agit en fonction de plusieurs &eacute;l&eacute;ments.
+  Il y a des choses que l'on retrouve dans plusieurs langages de programmation :</p>
+<dl><dt>Les fonctions</dt>
+    <dd>Elles servent a ex&eacute;cuter une action sp&eacute;cifique.</dd>
+    <dt>Les variables</dt>
+    <dd>Elles servent a stocker diff&eacute;rentes informations.</dd>
+    <dt>Les boucles</dt>
+    <dd>Elles servent a r&eacute;p&eacute;ter une action pendant un certain temps.</dd>
+    <dt>Les conditions</dt>
+    <dd>Elles servent a ex&eacute;cuter ou pas certaines actions selon certaines condition donn&eacute;es.</dd></dl>
+<p>Il existe beaucoup de langages de programmation. Ils ont une syntaxe plus ou moins diff&eacute;rente.
+  Le langage que j'ai utilis&eacute; pour ces exemples est le langage <em>Python</em> (un des plus simples à mon avis).<br />
+  Evidemment, la fonction qui permet d'afficher du texte ne s'appelle pas "affiche", et les "sinon si", etc... n'ont pas ce nom.
+  Les langages sont souvent anglais. Par exemple, le "Si" des conditions est &agrave; remplacer par "if".</p>
+<p id="next">Liens :<br />
+<a href="http://fr.wikipedia.org/wiki/Programmation" hreflang="fr" class="wiki">Wikip&eacute;dia : La programmation</a><br />
+<a href="http://fr.wikipedia.org/wiki/Langage_de_programmation" hreflang="fr" class="wiki">Wikip&eacute;dia : Les langages de programmation</a><br />
+<a hreflang="fr" href="http://www.commentcamarche.net/faq/sujet-457">Comment Ca Marche : Comment d&eacute;buter ? Quel langage ?</a></p>
+<?php require'../../autres/source-bas.php'; ?>
blob - /dev/null
blob + 9ac90fb6c6335742e99542fa0bc90a558aefaea7 (mode 644)
--- /dev/null
+++ cestquoi/starforce.php
@@ -0,0 +1,61 @@
+<?php
+$head['css'][0]['filename']='cestquoi';
+$head['access'][0]=array('rel'=>'index','href'=>'./','title'=>'Index de la rubrique &#34;C\'est quoi ?&#34;');
+$titre='C\'est quoi Starforce ?';
+require'../autres/source-haut.php'?>
+<h1>
+  <img src="../img/cestquoi/ckstarforce.jpg" style="width: 90px; height: 60px;" alt='' />C'est quoi Starforce?</h1>
+<p>Starforce est une <em>protection anti-copie</em> pr&eacute;sente dans certains jeux. 
+   Vous savez, une protection qui v&eacute;rifie si vous avez bien mis le CD dans l'ordinateur
+   au moment ou vous voulez jouer. Jusque l&agrave;, rien de plus normal.</p>
+<p>Cependant voila. Ce ne sont que des rumeurs, mais certains utilisateurs on eu des probl&egrave;mes
+   avec leurs graveurs de cd et/ou dvd.Les graveurs sont tomb&eacute;s en panne ou bugaient. 
+   Les logiciels de gravure (nero par exemple) ou d'&eacute;mulation (daemon tools par exemple)&nbsp;fonctionnent
+   parfois mal ou plus du tout.<br />
+   Il y a des erreurs de lecture des CD... En plus le processus de starforce se lance au d&eacute;marrage du Bios 
+   (c'est ce qui se lance des que vous allumez votre ordinateur, il ne peut pas fonctionner sans),
+   donc c'est difficile de l'enlever, et il ralentit le&nbsp; syst&egrave;me. 
+   &Ccedil;a ressemble a un rootkit : vous ne voyez pas ses processus dans le gestionnaire des t&acirc;ches. 
+   C'est d&eacute;j&agrave; bien une preuve du m&eacute;pris du client.
+</p>
+<p>Dans certaines d&eacute;mos (comme Splinter Cell Chaos Theory) Starforce place &eacute;galement 
+   une protection (soit disant pour <q>Empêcher les pirates d'exploiter le jeu</q>) !! 
+   C'est compl&egrave;tement d&eacute;bile, une d&eacute;mo n'a pas besoin du CD pour fonctionner 
+   et il est légal de la copier, la graver, la t&eacute;l&eacute;charger...
+</p>
+<p>
+   Mais nous arrivons au pire : Galactic  Civilizations II, un jeu &eacute;dit&eacute; par Stardock, ne contient 
+   <em>AUCUNE PROTECTION</em>. Un beau pied de nez &agrave; tous les &eacute;diteurs de jeux et/ou de protections 
+   qui cherchent des protections de plus en plus efficaces pour emp&ecirc;cher le piratage, qui, 
+   de toute fa&ccedil;on, sont contournées dans les jours qui suivent par les pirates. 
+   De plus, le jeu a &eacute;t&eacute; pendant plusieurs mois dans 
+   les dix premiers jeux les plus vendus aux Etats-Unis. 
+   Une preuve que protection  ou pas, &ccedil;a ne change rien D'autant plus les joueurs ont appr&eacute;ci&eacute;, 
+   qu'un &eacute;diteur leur fasse confiance et distribue un jeu sans protection. 
+   Jusque la rien de grave, c'est m&ecirc;me tr&egrave;s sympa (et l&eacute;gal) de la part de cet &eacute;diteur 
+   d'avoir distribu&eacute; des versions  non prot&eacute;g&eacute;es de son jeu.
+</p>
+<p>Oui, mais, respecter les joueurs, &ccedil;a ne se fait pas chez starforce, 
+   et l'attitude de Stardock ne leur a pas plus. 
+   Starforce a eu alors une tr&egrave;s bonne id&eacute;e : ils ont mis un lien sur la page d'accueil de leur site 
+   vers un t&eacute;l&eacute;chargement d'une version  pirat&eacute;e de Galactic Civilizations !! C'est honteux.
+</p>
+<p>Plusieurs personnnes boycottent Starforce, d'ailleurs, je ne sais plus sur quel forum j'ai vu 
+   une tr&egrave;s bonne description de Starforce par un internaute :
+   <q>Une protection tellement  efficace qu'elle  a tendance &agrave; ne pas faire fonctionner le jeu original.</q>
+   C'est exactement &ccedil;a.
+</p>
+<hr />
+<p id="next">
+  Sources / Liens<br />
+  <a href="http://star-force.com/" hreflang="en">Site officiel de Starforce</a><br />
+  <a href="http://www.sebsauvage.net/rhaa.html#20040713" hreflang="fr">Sebsauvage : C'est gentil de nous avoir invité</a><br />
+  <a href="http://www.glop.org/starforce/" hreflang="en">Boycott Starforce</a><br />
+  <a href="http://www.boycottstarforce.net/" hreflang="en">Boycottstarforce.net</a><br />
+  <a href="http://fr.wikipedia.org/wiki/StarForce" class="wiki" hreflang="fr">Wikipedia : Starforce</a><br />
+  <a href="http://www.boycottstarforce.net/?page_id=3" hreflang="fr">
+  Boycott Starforce.net : Une liste de jeux qui utilisent cette protection</a>
+</p>
+<hr />
+<p>Il y a bien d' autres protections, qui sont des salet&eacute;s dans le m&ecirc;me genre, comme securom.</p>
+<?php require'../autres/source-bas.php'?>
blob - /dev/null
blob + b514338fcdeda7812567ea547ada1e04c85b5e7d (mode 644)
--- /dev/null
+++ cestquoi/web/css.php
@@ -0,0 +1,228 @@
+<?php
+$titre='C\'est quoi les CSS ?';
+$head='<link rel="stylesheet" type="text/css" href="/autres/css/cestquoi.css" media="screen" />
+  <link rel="stylesheet" type="text/css" href="/autres/css/exemplecss.css" />
+  <link rel="stylesheet" type="text/css" href="/autres/css/code.css" />
+  <link rel="prev" title="C\'est quoi &quot;(x)HTML&quot; ?" href="index.php" />
+  <link rel="index" title="C\'est quoi ?" href="../" />';
+require'../../autres/source-haut.php';
+?>
+<h1><img style="border:1px solid black;width:80px;height:18px;" alt="CSS" src="/img/cestquoi/ckcss.gif" />C'est quoi les
+  <abbr title="Cascading Style Sheets, ou en fran&ccedil;ais : feuilles de style en cascades.">CSS</abbr> ?</h1>
+<h2 id='intro'>Rappel du <abbr title="eXtensible HyperText Markup Langage">XHTML</abbr></h2>
+  <p>Le <a href="index.php">xhtml</a> est utilisé pour servir le <strong>contenu</strong> d'une page : c'est avec ce langage que l'on dit :
+     ceci est un titre, ceci est un paragraphe, ceci est une image, etc...<br />
+     Mais en <strong>aucun cas</strong> il ne doit &ecirc;tre utilisé pour la mise en page.
+     On ne doit pas dire que les titres sont en rouges souligné, ou que les paragraphes sont en blanc sur fond noir.<br />
+     C'est le travail des CSS.</p>
+  <p>En xhtml, dans les balises, on voit parfois des attributs "style" :<br />
+     <code class='xhtml'>&lt;<span class='bal'>balise</span> <span class='attr'>style</span>=<span class='style'>"<span class='ppt'>propriété:</span><span class='val'>valeur</span>;"</span>&gt;</code></p>
+  <p>Le contenu de ces attributs "style" peut &ecirc;tre remplacé par des CSS.</p>
+  <p>Les CSS, appelés Cascading Style Sheets, soit "Feuilles de style en cascades" en fran&ccedil;ais,
+     permettent de créer la mise en page d'un site. Avec les CSS, on peut faire toute la mise en page :
+     Les couleurs de fond, de texte, les polices, la taille du texte, les bordures, les apparences des titres, les marges...</p>
+<hr />
+<h2 id='structure'>La Structure d'un fichier CSS</h2>
+  <p>Voici comment est fait un fichier CSS :<br />
+     <code class='css'><span class='elm'>élément</span><br />
+     &nbsp; &nbsp; {<br />
+     &nbsp; &nbsp; &nbsp; &nbsp;
+     <span class='ppt'>propriété:</span><span class='val'>valeur</span>;<br />
+     &nbsp; &nbsp; &nbsp; &nbsp;
+     <span class='ppt'>propriété:</span><span class='val'>valeur</span>;<br />
+     &nbsp; &nbsp; &nbsp; &nbsp;
+     <span class='ppt'>propriété:</span><span class='val'>etc...</span>;<br />
+     &nbsp; &nbsp; }</code></p>
+  <p>Donc, pour appliquer un style &agrave; un élément de la page, il faut :</p>
+  <ul><li>Indiquer l'élément sur lequel on travaille.</li>
+      <li>Ouvrir des <em>accolades</em> "{"pour appliquer des propriétés de style &agrave; l'élément.</li>
+      <li>Ne pas oublier de refermer les accolades "}" quand on a fini d'appliquer des propriétés &agrave; l'élément.</li>
+      <li>mettre <em>deux points</em> devant chaque propriété pour dire : <em>telle propriété prendra telle valeur</em>,</li>
+      <li>et mettre un <em>point-virgule</em> ";" devant chaque valeur pour dire : <em>on a fini de travailler sur cette propriété</em>.</li></ul>
+
+  <p>Voici un exemple de ce que l'on peut "dire" avec les CSS :<br />
+     <code class='css'><span class='elm'>paragraphes</span><br />
+     &nbsp; &nbsp; &nbsp;&nbsp; {<br />
+     &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; <span class='ppt'>couleur du texte:</span><span class='val'>rouge</span>;<br />
+     &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span class='ppt'>taille de police:</span><span class='val'>1 ligne et demie</span>;<br />
+     &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</code></p>
+  <p>On peut également faire des commentaires, qui servent &agrave; comprendre plus facilement le code plus tard :<br />
+     <code class='css'><span class='com'>/*Ceci est un Commentaire*/</span></code><br /><br />
+     On peut donc écrire les commentaires sur une ou plusieurs lignes avec "/*" et "*/".</p>
+<h2 id='creerstyle'>Créer un style avec les CSS</h2>
+  <p>Pour dire sur quelle élément de la page on veut appliquer certains style, il y a plusieurs fa&ccedil;ons :</p>
+  <ul><li class='nomargin'>Définir des styles en fonction des <em>balises xhtml</em> : par exemple, ce code CSS
+          "<code class='css'><span class='elm'>p</span>{<span class='ppt'>color:</span><span class='val'>blue</span>}</code>"
+          colorera les paragraphes en bleu :<br />
+          <span class="bleu nomargintop">Ce paragraphe est coloré en bleu.</span></li>
+      <li>Définir des styles en fonction des <em>classes</em>. Par exemple, si l'on veut que certains paragraphes soient colorés en bleu,
+          et d'autres en rouge, nous allons écrire :<br />
+          Le code xhtml :<br />
+          <code class='xhtml'><span class='com'>&lt;!--Ce paragraphe sera bleu--&gt;</span><br />
+              &lt;<span class='bal'>p</span> <span class='attr'>class</span>=<span class='val'>"bleu"</span>&gt;<br />
+              Texte de couleur bleue.<br /> &lt;<span class='bal'>/p</span>&gt;<br /><br />
+              <span class='com'>&lt;!--Celui ci sera en rouge--&gt;</span><br />
+              &lt;<span class='bal'>p</span> <span class='attr'>class</span>=<span class='val'>"rouge"</span>&gt;<br />
+              Texte de couleur rouge.<br />&lt;<span class='bal'>/p</span>&gt; </code><br />
+          Et le code CSS :<br /><code class='css'><span class='elm'>p</span>.<span class='class'>rouge</span>
+              &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
+              <span class='com'>/*ceci veut dire "Tous les paragraphes de classe "rouge"*/</span><br />
+              {<span class='ppt'>color:</span><span class='val'>red</span>; &nbsp; &nbsp;<span class='com'>/*seront colorés en rouge*/</span><br />
+              }<br />
+              <span class='elm'>p</span>.<span class='class'>bleu</span><br />
+              {<span class='ppt'>color:</span><span class='val'>blue</span>}
+              &nbsp;<span class='com'>/*et tous les paragraphes de classe "bleu" seront en bleu*/</span></code>
+             Ceci donnera :<br />
+             <span class="rouge nomargin">Ce paragraphe de classe "rouge" est coloré en rouge.</span><br />
+             <span class="bleu nomargintop">Ce paragraphe de classe "bleu" est coloré en bleu.</span></li>
+      <li>Définir un style en fonction des <em>id</em> :<br /><br />
+             Un id est presque le m&ecirc;me chose qu'une classe, &agrave; la différence pr&egrave;s qu'il ne peut
+             &ecirc;tre utilisé qu'une seule fois dans une page.<br /><br />
+             Par exemple, vous avez le droit de faire ce code :<br />
+             <code class='xhtml'>&lt;<span class='bal'>p</span> <span class='attr'>class</span>=<span class='val'>"rouge"</span>&gt;
+                Paragraphe rouge&lt;<span class='bal'>/p</span>&gt;<br />
+              &lt;<span class='bal'>p</span> <span class='attr'>class</span>=<span class='val'>"bleu"</span>&gt;
+                Paragraphe bleu&lt;<span class='bal'>/p</span>&gt;
+              &lt;<span class='bal'>p</span> <span class='attr'>class</span>=<span class='val'>"rouge"</span>&gt;
+                Un autre paragraphe rouge&lt;<span class='bal'>/p</span>&gt;</code><br /><br />
+              Mais vous n'avez pas le droit de faire ceci, car un id avec la m&ecirc;me valeur est utilisé deux fois :<br />
+              <code class='xhtml'>&lt;<span class='bal'>p</span> <span class='attr'>id</span>=<span class='val'>"rouge"</span>&gt;
+                Un paragraphe en rouge&lt;<span class='bal'>/p</span>&gt;<br />
+              &lt;<span class='bal'>p</span> <span class='attr'>id</span>=<span class='val'>"bleu"</span>
+              &gt;Puis un en bleu&lt;<span class='bal'>/p</span>&gt;<br />
+              &lt;<span class='bal'>p</span> <span class='attr'>id</span>=<span class='val'>"bleu"</span>&gt;
+              Et un autre en bleu. Mais &ccedil;a ne va pas ! On a utilisé deux fois l'id "bleu" !!&lt;<span class='bal'>/p</span>&gt;</code></li></ul>
+<h2 id='exemple'>Exemple</h2>
+  <p>Voyons maintenant comment créer un style particulier pour un bloc.
+     Par exemple, nous voulons faire ressortir un extrait de texte, comme une citation.<br />
+     Nous avons d'abord un paragraphe sans mise en forme :</p>
+  <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec fringilla justo ut dui nonummy scelerisque.
+     In dapibus diam non nisi. Cras et tellus vitae sapien tristique hendrerit. Aliquam quis eros.
+     In faucibus felis vel turpis. Aenean semper, nisl quis eleifend tempus, urna leo fringilla ipsum, vitae laoreet ante massa ac erat.
+     Aliquam nisi velit, faucibus vitae, iaculis sed, vehicula et, sem. Nulla facilisi. Donec placerat pulvinar felis. Sed ultricies leo ut elit.
+     Integer vitae tortor et neque blandit rhoncus. Quisque facilisis enim luctus quam. Vivamus hendrerit congue lacus.
+     Nulla id nunc non nibh egestas vehicula. Nullam varius. Morbi vitae ante in tortor condimentum gravida.</p>
+  <p>Et nous voulons avoir ceci :</p>
+  <p id="exemplelorem">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec fringilla justo ut dui nonummy scelerisque.
+     In dapibus diam non nisi. Cras et tellus vitae sapien tristique hendrerit. Aliquam quis eros.
+     In faucibus felis vel turpis. Aenean semper, nisl quis eleifend tempus, urna leo fringilla ipsum, vitae laoreet ante massa ac erat.
+     Aliquam nisi velit, faucibus vitae, iaculis sed, vehicula et, sem. Nulla facilisi. Donec placerat pulvinar felis. Sed ultricies leo ut elit.
+     Integer vitae tortor et neque blandit rhoncus. Quisque facilisis enim luctus quam. Vivamus hendrerit congue lacus.
+     Nulla id nunc non nibh egestas vehicula. Nullam varius. Morbi vitae ante in tortor condimentum gravida.</p>
+  <p>regardons ce qui &agrave; changé :</p>
+  <ul><li>Il y a une <em>bordure</em> bleue de quatre pixels autour du bloc, et de huit pixels a gauche. </li>
+    <li>Le bloc est écrit en <em>blanc sur fond noir</em>.</li>
+    <li>Il y a un espacement entre le texte et la bordure.</li>
+    <li>Le bloc est décalé vers la droite.</li>
+    <li>La premi&egrave;re lettre du paragraphe est une&nbsp;<em>lettrine</em>. </li>
+    <li>Elle est en <em>rouge sur fond gris</em>.</li>
+    <li>Elle a une <em>bordure</em> verte de deux pixels.</li>
+    <li>Il y a un espace entre la lettrine et sa bordure,</li>
+    <li>et un espace entre la lettrine et le reste du texte.</li>
+    <li>La lettrine est <em>plus grande</em> que le reste des lettres.</li>
+    <li>La <em>police</em> est "Comic sans MS".</li></ul>
+  <p>Maintenant, voyons comment nous allons faire ceci :<br />
+     Admettons que le paragraphe soit de classe "citation" (on aurait aussi pu utiliser la balise blockquote).
+     (<code class='xhtml'>&lt;<span class='bal'>p</span> <span class='attr'>class</span>=<span class='val'>"citation"</span>&gt;
+        Blabla...&lt;<span class='bal'>/p</span>&gt;</code>)<br />
+     Pour faire une <em>bordure</em>, nous devons mettre :<br />
+     <code class='css'><span class='elm'>p</span>.<span class='class'>citation</span> { &nbsp;&nbsp;&nbsp;
+        <span class='com'>/*le ou les paragraphes de classe "citation"*/</span><br />
+        &nbsp; &nbsp; &nbsp; &nbsp;
+        <span class='ppt'>border-style:</span> <span class='val'>solid</span>;&nbsp; &nbsp;
+        <span class='com'>/* auront une bordure solide, c'est à dire un trait continu*/</span><br />
+        &nbsp; &nbsp; &nbsp; &nbsp;
+        <span class='ppt'>border-color:</span> <span class='val'>#6666cc</span>; &nbsp;
+        <span class='com'>/*la couleur de cette bordure sera bleue*/</span><br /> &nbsp; &nbsp; &nbsp; &nbsp;
+        <span class='ppt'>border-width:</span> <span class='val'>4px 4px 4px 8px</span>;
+        <span class='com'>/*la bordure sera de 4 pixels, sauf la bordure gauche qui sera de 8 pixels !!*/</span> }</code><br />
+    "#6666cc" est une fa&ccedil;on d'écrire plus précisément les couleurs. Les deux premiers chiffres apr&egrave;s le di&egrave;se
+    indiquent le taux de rouge, les 3&deg; et 4&deg; le taux de vert et les deux derniers le taux de bleu.<br />
+    On indique les couleurs en hexadécimal, c'est a dire avec 16 caract&egrave;res :0123456789abcdef, #000000 étant noir et #ffffff étant blanc.
+    <br /><br />
+    Pour écrire le texte en <em>blanc sur fond noir</em>, il faut faire :<br />
+    <code class='css'><span class='ppt'>background-color:</span> <span class='val'>black</span>;
+        <span class='com'>/*la couleur de fond sera noire*/</span><br />
+        <span class='ppt'>color:</span><span class='val'>white</span>; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+        <span class='com'>/*la couleur du texte sera blanche*/</span></code><br /><br />
+    Pour décaler le bloc vers la droite, il faut utiliser la propriété margin, qui prend une valeur mesurable.<br />
+    On rajoute "left" &agrave; la propriété car il&nbsp;doit y avoir une marge seulement &agrave; gauche :<br />
+    <code class='css'><span class='ppt'>margin-left:</span><span class='val'>20%</span>;
+    <span class='com'>/*il y aura une marge de 20% de la fen&ecirc;tre &agrave; gauche*/</span></code></p>
+  <p>Voici ce que nous obtiendrons avec ces propriétés CSS :</p>
+  <p id="exemple1">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec fringilla justo ut dui nonummy scelerisque.
+     In dapibus diam non nisi. Cras et tellus vitae sapien tristique hendrerit. Aliquam quis eros.
+     In faucibus felis vel turpis. Aenean semper, nisl quis eleifend tempus, urna leo fringilla ipsum, vitae laoreet ante massa ac erat.
+     Aliquam nisi velit, faucibus vitae, iaculis sed, vehicula et, sem. Nulla facilisi. Donec placerat pulvinar felis. Sed ultricies leo ut elit.
+     Integer vitae tortor et neque blandit rhoncus. Quisque facilisis enim luctus quam. Vivamus hendrerit congue lacus.
+     Nulla id nunc non nibh egestas vehicula. Nullam varius. Morbi vitae ante in tortor condimentum gravida.</p>
+  <p>Il manque :</p>
+  <ul><li>L'espacement entre le texte et la bordure.</li>
+      <li>Le style de la lettrine.</li></ul>
+  <p>Pour l'espacement entre la bordure et le contenu, il suffit de faire :<br /><br />
+    <code class='css'><span class='ppt'>padding:</span> <span class='val'>10px</span>;
+    <span class='com'>/*de cette fa&ccedil;on il y aura un espacement de 10 pixels entre la bordure et le texte*/</span></code>
+    <br />Padding étant les marges intérieures (entre la bordure et le contenu), et margin les marges extérieures
+      (entre la bordure et le reste de la page).</p>
+  <p>Pour la lettrine, c'est plus compliqué :<br />
+     Il faut utiliser ce que l'on appelle une <em>pseudo-classe</em>, une classe qui s'applique sur un élément en particulier
+     qui n'est pas délimité par des balises xhtml, ou à un certain moment (au passage de la souris sur un élément par exemple).<br />
+     Ici, nous allons utiliser la pseudo-classe <em>first-letter</em>, qui désigne la premi&egrave;re lettre d'une élément.<br />
+     Donc pour que le style s'applique uniquement &agrave; la premi&egrave;re
+     lettre du paragraphe, nous allons utiliser ce code CSS :<br />
+     <code class='css'><span class='elm'>p</span>.<span class='val'>citation</span><span class='pc'>:first-letter</span> {
+        <span class='com'>/*seulement la premi&egrave;re lettre des paragraphes de classe citation*/</span> }</code></p>
+  <p>Ensuite, on utilise des propriétés comme pour n'importe quel élément. Revoyons les styles qui sont appliqués &agrave; cette lettrine :</p>
+  <ul><li>Elle est en <em>rouge sur fond gris</em>. </li>
+      <li>Elle a une <em>bordure</em> verte de deux pixels.</li>
+      <li>Il y a un espace entre la lettrine et sa bordure,</li>
+      <li>et un espace entre la lettrine et le reste du texte.</li>
+      <li>La lettrine est <em>plus grande</em> que le reste des lettres.</li></ul>
+  <p>Pour les couleurs, c'est tr&egrave;s simple :<br /><br />
+    <code class='css'><span class='elm'>p</span>.<span class='class'>citation</span><span class='pc'>:first-letter</span>{<br />
+      <span class='ppt'>color:</span><span class='val'>red</span>; <span class='com'>/* la couleur de la lettre sera rouge*/</span><br />
+      <span class='ppt'>background-color:</span><span class='val'>#808080</span>;
+      <span class='com'>/*la couleur de fond sera grise*/</span> }</code></p>
+  <p>Ensuite, il faut faire la bordure :<br />
+    <code class='css'><span class='ppt'>border:</span><span class='val'> 2px solid green</span>;
+    <span class='com'>/*la bordure sera verte et de deux pixels d'épaisseur*/</span></code></p>
+  <p>Puis, les espacements :<br />
+    <code class='css'><span class='ppt'>padding:</span> <span class='val'>10px</span>; &nbsp; &nbsp; &nbsp;
+      <span class='com'>/*Il y aura un espacement de 10 pixels entre la lettre et sa bordure*/</span><br />
+      <span class='ppt'>margin-right:</span> <span class='val'>2px</span>; &nbsp;
+      <span class='com'>/*Un espacemement de 2 pixels entre la bordure droite et le texte*/</span></code></p>
+  <p>Les propriétés de police :<br />
+    <code class='css'><span class='ppt'>font-family:</span> <span class='val'>'comic sans ms'</span>;
+      <span class='com'>/*la police sera 'comic sans ms'*/</span><br />
+      <span class='ppt'>font-size:</span> <span class='val'>2em</span>;
+      <span class='com'>/* et la lettre fera deux lignes de haut (1em = une ligne) */</span></code></p>
+  <p>Et enfin, les propriétés du bloc :<br />
+    <code class='css'><span class='ppt'>height:</span> <span class='val'>4em</span>;
+    <span class='com'>/* le bloc fera 4 lignes de hauteur*/</span><br />
+    <span class='ppt'>float:</span> <span class='val'>left</span>;
+    <span class='com'>/*et il flottera a gauche, sinon il dépasse du paragraphe*/</span></code></p>
+<h2 id='pseudoclasses'>Les pseudo-classes</h2>
+  <p>Certaines classes spéciales sont appelées "<em>pseudo-classes</em>".
+     Ce sont par exemple :<br />Un style qui s'applique seulement...</p>
+  <ul><li>&agrave; la premi&egrave;re ligne d'un élément : <code class='css'><span class="elm">élément</span><span class='pc'>:first-line</span></code></li>
+      <li>&agrave; la premi&egrave;re lettre d'un élément : <code class='css'><span class="elm">élément</span><span class='pc'>:first-letter</span></code></li>
+      <li>Quand la souris survole l'élément : <code class='css'><span class='elm'>élément</span><span class='pc'>:hover</span></code></li>
+      <li>Quand on clique sur un élément : <code class='css'><span class='elm'>élément</span><span class='pc'>:focus</span></code> ou
+          <code class='css'><span class='elm'>élément</span><span class='pc'>:active</span></code></li>
+      <li>Aux liens qui sont dans l'historique du navigateur : <code class='css'><span class='elm'>a</span><span class='pc'>:visited</span></code></li></ul>
+  <p>Plus d'informations sur les pseudo-classes : <a href="http://www.siteduzero.com/tuto-3-38-1.html" class='fr externe' hreflang='fr'>http://www.siteduzero.com/tuto-3-38-1.html</a></p>
+<h2 id="ccl">Conclusion</h2>
+  <p>C'est de cette fa&ccedil;on que l'on créée un style avec les CSS. Généralement, on fait un fichier CSS que l'on utilise pour toutes les pages.
+     Comme ceci, il est tr&egrave;s facile de changer tout le design d'un site en une seule fois. De plus, le chargement des pages est allégé :
+     le navigateur enregistre une seule fois le fichier CSS, et le ré-utilise sans avoir &agrave; le charger d&egrave;s qu'il y en a besoin.
+     Le code html est aussi moins lourd, car on n'utilise plus de <code>style="...."</code> directement dans les balises.</p>
+  <p>Cependant, les navigateurs n'interpr&egrave;tent pas tous de la m&ecirc;me fa&ccedil;on certaines propriétés CSS compliquées.
+     Par exemple, IE ne g&egrave;re pas la pseudo-classe ":hover" autre part que sur un lien. En fait, il ne connait pas beaucoup de propriétés CSS 2,
+     car il n'y a pas de nouvelle version depuis 1999. Il ne connait que la premi&egrave;re version des CSS. La version 7 devrait peut-&ecirc;tre
+     (j'ésp&egrave;re) enfin supporter compl&egrave;tement les CSS 2, ce qui permettrait de faire des designs interessants compatibles avec
+     la majorité des navigateurs.</p>
+<p id="next">Liens :<br />
+<a href="http://www.siteduzero.com/tuto-3-1938-1.html" class='fr' hreflang='fr'>Le site du Zéro : Liste des propriétés CSS</a><br />
+<a href="http://www.csszengarden.com/tr/francais/" class='fr' hreflang='fr'>Toute la "puissance" des CSS sur CSS Zen-garden</a><br />
+<a href="http://www.commentcamarche.net/css/cssintro.php3" class='fr' hreflang='fr'>Comment Ca marche : Les CSS</a></p>
+<?php require'../../autres/source-bas.php'?>
blob - /dev/null
blob + bdb2a6ae2579dca76a2cb5b88cff39fd8bcbff2f (mode 644)
--- /dev/null
+++ cestquoi/web/hebergement.php
@@ -0,0 +1,46 @@
+<?php

+$titre='C\'est quoi l\'hébergement ?';

+$head['css'][0]['filename']='cestquoi';

+$head['access'][0]=array('rel'=>'prev','href'=>'./serveur.php','title'=>'Qu\'est-ce qu\'un serveur Internet ?');

+$head['access'][0]=array('rel'=>'index','href'=>'../','title'=>'Index de la rubrique &#34;C\'est quoi&#34;');

+require'../../autres/source-haut.php'?>

+<h1><img src="/img/cestquoi/serveur-machine.png" style="width:73px;height:39px" alt="serveur" />C'est quoi l'hébergement ?</h1>

+<p class="pintro">Les fichiers que vous voyez sur Internet sont stockés sur un <a href="serveur.php">serveur</a>.

+   Selon le <strong>type d'hébergement</strong>, le serveur peut appartenir à différentes personnes,

+   servir pour différentes choses, etc. C'est souvent un <strong>hébergeur</strong> qui met à disposition un serveur.

+   L'hébergeur est une entreprise, qui peut être votre <abbr title="Fournisseur d'accès à Internet">FAI</abbr>

+   ou une société spécialisée dans l'hébergement.<br />Il existe plusieurs types d'hébergement :</p>

+<h2 id="mutualise">Hébergement mutualisé</h2>

+  <p>C'est le plus courant.

+     Un hébergeur met à disposition une offre d'hébergement, gratuite ou payante,

+     et permet de stocker des fichiers sur un serveur. Plusieurs sites sont stockés sur un seul serveur

+     avec ce type d'hébergement. Il y a plus ou moins de possibilités :<br />

+     Gestion de langages dynamiques, mise à disposition de base de données, publicité ou pas...<br />

+     Ce type d'hébergement, qu'il soit gratuit ou payant, est assez limité par rapport aux autres types d'hébergement.

+     Cependant, le coût d'un hébergement mutualisé payant est souvent assez bas (entre 0 &euro; et 20 &euro; par mois),

+     et s'il est payant, il n'y a pas de publicité.</p>

+<h2 id="dedie">Hébergement dédié</h2>

+  <p>Ce type d'hébergement permet de disposer de son <strong>propre</strong> serveur, que l'on est le seul à utiliser.

+     Cependant il est toujours administré par l'intermédiaire d'un hébergeur.

+     L'hébergement dédié est (très) cher (parfois plusieurs centaines d'Euros par An),

+     mais permet beaucoup plus de possibilités que l'hébergement mutualisé : espace de stockage bien plus élevé,

+     création de plusieurs bases de données, installation de plusieurs serveurs (logiciels),

+     exécution de certains programmes...<br />

+     Les personnes qui utilisent ce type d'hébergement sont surtout des entreprises ou des particuliers

+     disposant de sites important ou qui ont besoin de stocker beaucoup de données,

+     ou encore d'une certaine configuration (installation de logiciel précis).</p>

+<h2 id="soi-meme">Héberger soi-même</h2>

+  <p>Celui-ci permet une totale liberté de configuration.

+     On héberge un serveur chez soi, avec les logiciels et données que l'on veut.

+     Ce type d'hébergement est assez rare, car il nécéssite une maitrise et une connaissance

+     assez importante des serveurs et logiciels que l'on veut installer et utiliser.

+     Il faut par exemple penser à la sécurité du serveur, qui est un point important.<br />

+     Il faut également disposer d'un accès permanent à internet, pour que les pages soient accessibles à tout moment.</p>

+<hr />

+<p>Il existe des types d'hébergement plus rares,

+   par exemple certains particuliers proposent d'héberger des fichiers sur un serveur qu'ils ont mis en place chez eux.</p>

+<p id="next">Pour continuer :<br />

+  <a href="http://www.commentcamarche.net/web/hebergement.php3" hreflang="fr">Comment Ca Marche : Hébergement</a><br />

+  <a href="http://fr.wikipedia.org/wiki/H%C3%A9bergement_Internet" class="wiki" hreflang="fr">Wikipédia : Hébergement Internet</a><br />

+  <a href="http://sebsauvage.net/comprendre/provider/provider_hebergement.html" hreflang="fr">Sebsauvage.net : L'hébergement</a></p>

+<?php require'../../autres/source-bas.php';?>

blob - /dev/null
blob + 9e11e94566a59b6f82787809d4545e6250b0a353 (mode 644)
--- /dev/null
+++ cestquoi/web/index.php
@@ -0,0 +1,218 @@
+<?php
+$head='<link rel="stylesheet" type="text/css" media="screen" href="/autres/css/cestquoi.css" />
+  <link rel="stylesheet" type="text/css" media="screen" href="/autres/css/code.css" />
+  <link rel="next" title="C\'est quoi les CSS ?" href="css.php" />
+  <link rel="index" title="C\'est quoi ?" href="../" />';
+$titre='C\'est quoi "(x)HTML" ?';
+require'../../autres/source-haut.php'?>
+<h1><img src="/img/cestquoi/ckxhtml.gif" alt="XHTML" style="border:1px solid #000;width:80px;height:18px;" />
+    C'est quoi "(x)HTML" ?</h1>
+<h2 id="balises">Les balises.</h2>
+  <p>Lorsque vous visitez un site, vous voyez des images, du texte, de la couleur...</p>
+  <p>Mais votre navigateur (Internet explorer, Firefox, Opera, Netscape...) ne voit pas ça. Il lit du <em>code</em>,
+     qu'il transforme pour que vous puissiez le voir normalement. C'est ce code qui est appel&eacute;
+     "<abbr title="HyperText Markup Language, en fran&ccedil;ais 'langage hypertexte et &agrave; balises'">html</abbr>"
+     (anciennes versions du code) ou "<abbr title="eXtensible HyperText Markup Language">xhtml</abbr>" (versions récentes).</p>
+  <p>Ce code est &eacute;crit sous forme de <em>balises</em>, c'est a dire du texte entour&eacute; par des chevrons : 
+     <code class='xhtml'>&lt;<span class='balise'>balise</span>&gt;</code></p>
+  <p>Votre navigateur comprend a quoi correspond telle ou telle partie de ce code.
+     Il sait par exemple que la balise &lt;img&gt; correpond &agrave; une image, que la balise &lt;a&gt; correspond &agrave;
+     un lien, que la balise &lt;p&gt; correspond &agrave; un paragraphe, etc...</p>
+  <p>Si votre navigateur voit le code :<br />
+     <code class='xhtml'>&lt;<span class='bal'>a</span>
+               <span class='attr'>href</span>=<span class='val'>"http://sylvain.sab.free.fr/"</span>&gt;
+               Mon site&lt;<span class='bal'>/a</span>&gt;</code><br /><br />
+     Il saura que cela correspond &agrave; un lien (gr&acirc;ce &agrave; "<code>&lt;a</code>")
+     qui dirige vers http://sylvain.sab.free.fr/ (gr&acirc;ce &agrave;
+     "<code class='xhtml'><span class='attr'>href</span>=<span class='val'>"http://sylvain.sab.free.fr/"</span></code>"),
+     et que le texte qui comporte ce lien est "<code>Mon site</code>".
+     Il affichera :<br /><br /><a href="http://sylvain.sab.free.fr/">Mon site</a></p>
+  <p>Si il voit "<code class='xhtml'>&lt;<span class='bal'>img</span> <span class='attr'>src</span>=<span class='val'>"xhtml.jpg"</span>
+     <span class='attr'>style</span>=<span class='style'>"<span class='ppt'>width:</span><span class='val'>80px</span>;<span class='ppt'>height:</span><span class='val'>18px</span>;"</span> <span class='as'>/</span>&gt;</code>"<br />
+     il saura qu'il doit afficher l'image xhtml.jpg (gr&acirc;ce &agrave;
+      "<code class='xhtml'><span class='attr'>src</span>=<span class='val'>"xhtml.jpg"</span></code>"),<br />
+     et que cette image a une lageur de 80 pixels et une longueur de 18 pixels
+     (gr&acirc;ce &agrave; <code class='xhtml'><span class='attr'>style</span>=<span class='style'>"<span class='ppt'>width:</span><span class='val'>80px</span>;<span class='ppt'>height:</span><span class='val'>18px</span>;"</span></code>)<br /><br />
+     Il affichera : <img alt='' style='border:1px solid #000;width:80px;height:18px;' src='/img/cestquoi/ckxhtml.gif' /></p>
+  <p>Vous avez peut-&ecirc;tre remarqu&eacute; une diff&eacute;rence entre les balises "<code>&lt;a&gt;&lt;/a&gt;</code>"
+     et "<code>&lt;img /&gt;</code>".<br />
+     Les balises "<code>&lt;a&gt;&lt;/a&gt;</code>" vont <em>par paire</em>, alors que la balise "<code>&lt;img /&gt;</code>"
+     est <em>seule</em>.</p>
+  <p>Les balises qui vont par paire comportent deux types de balise :</p>
+  <ol><li>Une qui est&nbsp;apell&eacute;e "<em>balise ouvrante</em>" (le <code>&lt;a&gt;</code>)
+          car elle ouvre un &eacute;l&eacute;ment (ici c'est le lien), et</li>
+      <li>Une autre qui est apell&eacute;e "<em>balise fermante</em>", reconnaissable au slash "/" car elle
+          indique la fin de l'&eacute;l&eacute;ment.</li></ol>
+  <p>Les balises qui sont seules sont appel&eacute;es "auto-fermantes", car elles n'ont pas besoin d'une deuxi&egrave;me balise
+     pour indiquer la fin.<br />Elles le font toutes seules gr&acirc;ce &agrave; "<code>/&gt;</code>".</p>
+  <p>On peut mettre du texte (ou d'autres balises) entre les balises qui vont par paire.</p>
+  <p>Quelques exemples de balises :</p>
+  <ol><li><strong>Qui vont par paires</strong> :
+          <dl><dt><code class='xhtml'>&lt;<span class='bal'>p</span>&gt;Paragraphe&lt;<span class='bal'>/p</span>&gt;</code></dt>
+                <dd>Le texte entre ces deux balises est un <em>paragraphe</em>.</dd>
+              <dt><code class='xhtml'>&lt;<span class='bal'>h1</span>&gt;Titre&lt;<span class='bal'>/h1</span>&gt;</code></dt>
+                <dd>Le texte entre ces deux balises est un <em>titre</em>.
+                    Il y a plusieurs niveaux d'importance pour les titres, qui vont de h1 &agrave;a h6 :<br />
+                    h1 est le titre le plus important, et h6 le moins important.</dd>
+              <dt><code class='xhtml'>&lt;<span class='bal'>em</span>&gt;Texte important&lt;<span class='bal'>/em</span>&gt;</code></dt>
+                <dd>Ces balises indiquent que le texte est important. G&eacute;n&eacute;ralement,
+                    les navigateurs le mettent en italique, mais il n'y a pas de r&egrave;gle pour cela.<br />
+                    On peut &eacute;galement dire que le texte est plus important avec les balises</dd>
+              <dt><code class='xhtml'>&lt;<span class='bal'>strong</span>&gt;Texte plus important&lt;<span class='bal'>/strong</span>&gt;</code></dt>
+                <dd>G&eacute;n&eacute;ralement, les navigateurs le mettent en gras.</dd></dl></li>
+      <li><strong>Auto-fermantes :</strong>
+          <dl><dt><code class='xhtml'>&lt;<span class='bal'>img</span> <span class='as'>/</span>&gt;</code></dt>
+                <dd>Cette balise indique au navigateur qu'il doit aficher une image.</dd>
+              <dt><code class='xhtml'>&lt;<span class='bal'>br</span> <span class='as'>/</span>&gt;</code></dt>
+                <dd>Cette balise indique un retour &agrave; la ligne.</dd>
+              <dt><code class='xhtml'>&lt;<span class='bal'>hr</span> <span class='as'>/</span>&gt;</code></dt>
+                <dd>Cette balise indique un ligne horizontale, comme celle ci :</dd></dl></li></ol>
+  <hr />
+  <h2 id="attributs">Les attributs et leurs valeurs.</h2>
+  <p>J'ai &eacute;nonc&eacute; plusieurs balises, comme par exemple<br />
+     <code>&lt;br /&gt;</code>, qui provoque un retour &agrave; ligne ou encore <code>&lt;img /&gt;</code>,
+     qui indique la pr&eacute;sence d'une image.</p>
+  <p>Si je mets ce code la, le navigateur ira &agrave; la ligne, puis qu'il doit afficher une image.<br />
+     Mais <em>quelle image ?</em> Et de <em>quelle taille ?</em>
+    <br />
+    C'est pour indiquer cela que l'on se sert des <em>attributs</em>.</p>
+  <p>Pour une image, l'attribut "src" prend une valeur qui indique la source de l'image,
+    c'est &agrave; dire l'endroit ou elle se trouve.</p>
+  <p>Voici comment est form&eacute;e une balise, avec ses attributs :</p>
+  <ol><li>Pour les balises qui vont par paire :
+          <code class='xhtml'>&lt;<span class='bal'>balise</span> <span class='attr'>attribut1</span>=<span class='val'>"valeur1"</span> <span class='attr'>attribut2</span>=<span class='val'>"valeur2"</span>&gt;Texte&lt;<span class='bal'>/balise</span>&gt;</code></li>
+      <li>Pour les balises auto-fermantes : 
+          <code class='xhtml'>&lt;<span class='bal'>balise</span> <span class='attr'>attribut1</span>=<span class='val'>"valeur1"</span> <span class='attr'>attribut2</span>=<span class='val'>"valeur2"</span> <span class='as'>/</span>&gt;</code></li></ol>
+  <p>Voici une image avec les attributs habituels :<br />
+     <code class='xhtml'>&lt;<span class='bal'>img</span> <span class='attr'>src</span>=<span class='val'>"bateau.jpg"</span> <span class='attr'>style</span>=<span class='style'>"<span class='ppt'>width:</span><span class='val'>30px</span>;<span class='ppt'>height:</span><span class='val'>10px</span>;"</span> <span class='as'>/</span>&gt;</code></p>
+  <p>L'attribut "<em>src</em>", qui &agrave; pour valeur "bateau.jpg", indique que l'image &agrave; afficher est le fichier
+     "bateau.jpg".<br />L'attribut "<em>style</em>" indique diverses choses correspondant &agrave; l'image,
+     ici "width:30px;" correspond &agrave; la largeur (width) de 30 pixels (30px),<br />
+     et "height:10px," &agrave; la hauteur (height) de 10 pixels (10px).</p>
+  <p>Evidemment, l'image n'est pas la seule balise qui utilise les attributs. Toutes les balises peuvent en avoir.<br />
+    Pour certaines, c'est obligatoire, pour d'autres, c'est facultatif.</p>
+  <p>Par exemple, la balise <code>&lt;a&gt;&lt;/a&gt;</code>, qui correspond &agrave; un lien,
+     doit obligatoirement avoir un attibut, sinon le navigateur ne saurait pas ou il doit aller quand on clique dessus.
+     L'attribut correspondant est "href".</p>
+  <p id="accueil">Si l'attribut "href" &agrave; pour valeur "accueil.html", le code poura &ecirc;tre :<br />
+     <code class='xhtml'>&lt;<span class='bal'>a</span> <span class='attr'>href</span>=<span class='val'>"accueil.html"</span>&gt;Page d'accueil&lt;<span class='bal'>/a</span>&gt;</code>.<br />
+     Le navigateur affichera :<br /><a href="#accueil">Page d'accueil</a></p>
+  <p>Pour un lien, l'attribut href est obligatoire,
+     mais la balise peut &eacute;galement prendre plusieurs autres attributs facultatifs :</p>
+  <ul><li>L'attribut "<em>title</em>", qui affiche une infobulle lorsque l'on survole le lien avec la souris. </li>
+      <!--<li>L'attribut "<em>tabindex</em>", qui indique l'ordre des liens s&eacute;lectionn&eacute;s avec la touche TAB 
+         <img src="/img/autres/tab.jpg" alt="- -&gt;" style="width:46px;height:28px;" />.<br />
+         Si vous appuyez sur TAB sur cette page, vous verrez que l'image de la page d'accueil situ&eacute;e
+         en haut de la page s'entourera de pointill&eacute;s. Appuyez sur "Entr&eacute;e" pour aller &agrave; cette page,
+         ou appuyez encore sur la touche tab pour passer au lien suivant. </li>
+      <li>L'attribut "accesskey". Cet attribut ressemble un peu au pr&eacute;c&eacute;dent.
+          (<a href="/apropos/accesskeys.php">Plus d'information sur les accesskeys</a>)</li>-->
+      <li>L'attribut "<em>hreflang</em>", qui indique la langue de la page vers laquelle dirige le lien.</li>
+      <li>etc... </li></ul>
+  <hr />
+  <h2 id="balisescomplexes">Des balises plus complexes</h2>
+  <p>Le code html contient quelques balises sp&eacute;ciales :
+     Par exemple, les balises qui indiquent le titre de la page, l'auteur...</p>
+  <p>Voici le code minimal pour une page WEB :
+    <br />
+    <code class='xhtml'>
+      <span class='dxml'>&lt;?xml version="1.0" encoding="iso-8859-1"?&gt;</span><br />
+      <span class='doctype'>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;</span><br />
+      &lt;<span class='bal'>html</span> <span class='attr'>xmlns</span>=<span class='val'>"http://www.w3.org/1999/xhtml"</span> <span class='attr'>xml:lang</span>=<span class='val'>"fr"</span> &gt;<br />
+      &nbsp;&nbsp; &lt;<span class='bal'>head</span>&gt;<br />
+      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;<span class='bal'>title</span>&gt;&lt;<span class='bal'>/title</span>&gt;<br />
+      &nbsp;&nbsp; &lt;<span class='bal'>/head</span>&gt;<br />
+      &nbsp;&lt;<span class='bal'>body</span>&gt;<br />&nbsp;&lt;<span class='bal'>/body</span>&gt;<br />&lt;/<span class='bal'>html</span>&gt;</code></p>
+  <p>En premier, il y a ce code (apellé "déclaration xml") :<br />
+     <code class='xhtml'><span class='dxml'>&lt;?xml version="1.0" encoding="iso-8859-1"?&gt;</span></code><br />
+     C'est la version du fichier (1.0), et l'encodage.<br />
+     L'encodage sert &agrave; indiquer quel type de caract&egrave;res utilisera la page.<br />
+     Pour les langues anglaises, l'ASCII ou l'utf-8 sont souvent utilis&eacute;s.
+     Cependant, certains ne prennent pas en compte les caract&egrave;res latins (les accents par exemple).
+     On peut mettre des caract&egrave;res latins dans un document en ASCII,
+     mais il faut indiquer que ce sont des caract&egrave;res sp&eacute;ciaux avec "&amp;" : "&amp;eacute;" affiche &eacute;.
+     En iso, il n'est pas n&eacute;c&eacute;ssaire d'indiquer que c'est un caract&egrave;re sp&eacute;cial,
+     on peut mettre directement "&eacute;" dans le code.
+     C'est pourquoi on utilise souvent "iso" dans les documents en fran&ccedil;ais.
+     Il existe &eacute;galement des formats pour les langues chinoises, arabes...
+     (<a href="http://sebsauvage.net/comprendre/ascii/"
+      class='fr externe' hreflang='fr'>plus d'informations sur les encodages</a>)</p>
+  <p>Puis :<br />
+     <code class='xhtml'><span class='doctype'>&lt;!<em>DOCTYPE</em> html PUBLIC "-//W3C//DTD <em>XHTML 1.0 Strict</em>//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;</span></code><br />
+    Cette partie de code (qui se place en premier), appell&eacute;e "Doctype",
+    indique la version du xhtml ou html utilis&eacute;e. Ici la version du xhtml est la 1.0 Strict.</p>
+  <p>Ensuite, il y &agrave;<br />
+     <code class='xhtml'>&lt;<span class='bal'><em>html</em></span> <span class='attr'>xmlns</span>=<span class='val'>"http://www.w3.org/1999/xhtml"</span> <em><span class='attr'>xml:lang</span>=<span class='val'>"fr"</span></em>&gt;</code><br />
+    C'est la balise html, qui contient tout le reste du code (sauf le Doctype) et indique la langue de la page.</p>
+  <p>Puis, voici les balises "<em>head</em>"<br />
+    Elles contiennent plusieurs informations relatives &agrave; la page ou au site :<br />
+    Le titre de la page, les flux RSS, les feuilles de style (<a href="css.php">CSS</a>), les favic&ocirc;nes...<br />
+    Cependant, seulement le titre est obligatoire (mais il peut &ecirc;tre vide) :<br />
+    <code class='xhtml'>&nbsp;&nbsp; &lt;<span class='bal'>head</span>&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp;&lt;<span class='bal'>title</span>&gt;&lt;<span class='bal'>/title</span>&gt;<br />&nbsp;&nbsp; &lt;<span class='bal'>/head</span>&gt;</code></p>
+  <p>Ensuite, il y a les balises "<em>body</em>".<br />
+     Ce sont les balises les plus importantes, car elles contiennent le <em>corps</em> de la page.<br />
+     C'est <em>entre ces deux balises</em> que sont plac&eacute;es <em>la majorit&eacute; des autres balises</em> :<br />
+     Les liens, les paragraphes, les images, les titres...<br />
+     <code class='xhtml'> &lt;<span class='bal'>body</span>&gt;<br /> &lt;<span class='bal'>/body</span>&gt;</code></p>
+  <p>Apr&egrave;s la fermeture de la balise body, on ferme la balise html :<br />
+    <code class='xhtml'>&nbsp;&lt;<span class='bal'>/body</span>&gt;<br />&lt;<span class='bal'>/html</span>&gt;</code></p>
+  <p>Le sch&eacute;ma d'une page pourrait donc se r&eacute;sumer &agrave; ceci :<br />
+    <code class='xhtml'>
+      <span class='com'>&lt;!--On indique la version du xml et du xhtml que l'on va utiliser,
+        puis la langue et l'encodage du document--&gt;</span><br />
+      <span class='dxml'>&lt;?xml version="1.0" encoding="iso-8859-1"?&gt;</span><br />
+      <span class='doctype'>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;</span><br />
+      &lt;<span class='bal'>html</span> <span class='attr'>xmlns</span>=<span class='val'>"http://www.w3.org/1999/xhtml"</span> <span class='attr'>xml:lang</span>=<span class='val'>"fr"</span> &gt;<br />
+      <span class='com'>&lt;!--La balise d'en t&ecirc;te contient plusieurs informations relatives au document.--&gt;</span><br />
+      &nbsp;&nbsp; &lt;<span class='bal'>head</span>&gt;<br />
+      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;<span class='bal'>title</span>&gt;
+      <span class='com'>&lt;!--Le titre de la page. Par exemple "Bienvenue sur mon site".--&gt;</span>
+      &lt;/title&gt;<br />&lt;<span class='bal'>/title</span>&gt;<br />
+      &nbsp;&nbsp; &lt;<span class='bal'>/head</span>&gt;<br />
+      &nbsp;&lt;<span class='bal'>body</span>&gt;<br />&nbsp;
+      <span class='com'>&lt;!--Ici, c'est le code de la page qui s'affiche &agrave; l'&eacute;cran.--&gt;</span><br />
+      &nbsp;&lt;<span class='bal'>/body</span>&gt;<br />&lt;/<span class='bal'>html</span>&gt;
+      <span class='com'>&lt;!--Ensuite, on ferme les balises body et html.--&gt;</span></code></p>
+  <p>Il y a beaucoup de balises que l'on peut mettre dans l'en-t&ecirc;te. En voici quelques unes :</p>
+  <ul><li><strong>Les balises link</strong>
+    <dl><dt>Des Liens vers des flux RSS :</dt>
+          <dd><code class='xhtml'>&lt;<span class='bal'>link</span> <span class='attr'>rel</span>=<span class='val'>"alternate"</span> <span class='attr'>type</span>=<span class='val'>"application/rss+xml"</span> <span class='attr'>title</span>=<span class='val'>"Flux RSS"</span> <span class='attr'>href</span>=<span class='val'>"mon-flux-rss.xml"</span> <span class='as'>/</span>&gt;</code></dd>
+        <dt>Des liens vers des fichiers <abbr title="Cascading Style Sheets"><a href="css.php">CSS</a></abbr>
+            (ou feuilles de style) pour la mise en page :</dt>
+          <dd>&nbsp;<code class='xhtml'>&lt;<span class='bal'>link</span> <span class='attr'>rel</span>=<span class='val'>"stylesheet"</span> <span class='attr'>type</span>=<span class='val'>"text/css"</span> <span class='attr'>href</span>=<span class='val'>"mon-style.css"</span> <span class='as'>/</span>&gt;</code></dd>
+        <dt>Des pages d'aide &agrave; la navigation :</dt>
+          <dd><code class='xhtml'>&lt;<span class='bal'>link</span> <span class='attr'>rel</span>=<span class='val'>"help"</span> <span class='attr'>title</span>=<span class='val'>"Accessibilit&eacute;"</span> <span class='attr'>href</span>=<span class='val'>"accessibilite.php"</span> <span class='as'>/</span>&gt;</code></dd>
+        <dt>Des liens vers des favic&ocirc;nes :</dt>
+          <dd><code class='xhtml'>&lt;<span class='bal'>link</span> <span class='attr'>rel</span>=<span class='val'>"icon"</span> <span class='attr'>type</span>=<span class='val'>"image/png"</span> <span class='attr'>href</span>=<span class='val'>"favicon.png"</span> <span class='as'>/</span>&gt;</code></dd></dl></li>
+    <li><strong>Les balises meta</strong>
+      <dl><dt>Indiquer l'auteur de la page :</dt>
+            <dd><code class='xhtml'> &lt;<span class='bal'>meta</span> <span class='attr'>name</span>=<span class='val'>"author"</span> <span class='attr'>content</span>=<span class='val'>"Sylvain SABOUA"</span> <span class='as'>/</span>&gt;</code></dd>
+          <dt>Un copyright</dt>
+            <dd><code class='xhtml'>&lt;<span class='bal'>meta</span> <span class='attr'>name</span>=<span class='val'>"copyright"</span> <span class='attr'>content</span>=<span class='val'>"&copy; Sylvain SABOUA"</span> <span class='as'>/</span>&gt;</code></dd>
+          <dt>Des mot-cl&eacute;s en rapport avec la page (pour les moteurs de recherche) :</dt>
+            <dd><code class='xhtml'>&lt;<span class='bal'>meta</span> <span class='attr'>name</span>=<span class='val'>"Keywords"</span> <span class='attr'>content</span>=<span class='val'>"xhtml"</span> <span class='as'>/</span>&gt;</code></dd>
+          <dt>Une description de la page (idem) :</dt>
+            <dd><code class='xhtml'>&lt;<span class='bal'>meta</span> <span class='attr'>name</span>=<span class='val'>"Description"</span> <span class='attr'>content</span>=<span class='val'>"Site d'informatique"</span> <span class='as'>/</span>&gt;</code></dd>
+          <dt>Le titre du site :</dt>
+            <dd><code class='xhtml'>&lt;<span class='bal'>meta</span> <span class='attr'>name</span>=<span class='val'>"title"</span> <span class='attr'>content</span>=<span class='val'>"Sylvain.sab"</span> <span class='as'>/</span>&gt;</code></dd></dl></li></ul>
+<hr />
+<h2 id="ccl">Conclusion</h2>
+  <p>le langage xhtml, nouvelle version du html, est un langage dit "<em>&agrave; balises</em>".
+     Il existe <em>deux types de balises</em> : celles qui vont par paires (une ouvrante et une fermante) et les auto-fermantes.
+     <br /><br />
+     Les balises utilisent souvent des <em>attributs</em>. Pour une image, l'attibut src est obligatoire par exemple.
+     Cependant quelques balises utilisent tr&egrave;s rarement des attributs, comme la balise de retour a la ligne : &lt;br <span class='as'>/</span>&gt;.
+     <br /></p>
+  <p>Le xhtml est utilis&eacute; avec les <abbr title="Cascading Style Sheets"><a href="css.php">CSS</a></abbr>.
+     Le xhtml sert &agrave; donner le contenu, et les CSS &agrave; la mise en page.
+  </p>
+<p id="next">Pour continuer :<br />
+  <a href="css.php">C'est quoi les <abbr title="Cascading Style Sheets">CSS</abbr> ?</a><br />
+  <a href='http://www.commentcamarche.net/html/htmlintro.php3'
+    class='fr externe'>Comment &ccedil;a marche : Introduction au HTML</a><br />
+  <a href="http://fr.wikipedia.org/wiki/HTML" class='externe wiki fr'>Le html sur Wikipedia</a><br />
+  <a href="http://www.siteduzero.com/tuto-3-4874-1.html"
+    class='fr externe'>Le site du Z&eacute;ro : Liste des balises xhtml</a><br />
+  <a href="http://www.sebsauvage.net/html.html" class='fr externe'>Sebsauvage : conseils html</a></p>
+<?php require'../../autres/source-bas.php'?>
blob - /dev/null
blob + f7bce0bb71f6867da3354856c913c320a7ccaa0e (mode 644)
--- /dev/null
+++ cestquoi/web/serveur.php
@@ -0,0 +1,55 @@
+<?php

+$titre='Les notions de serveur et de client';

+$head['css'][0]['filename']='cestquoi';

+$head['access'][0]=array('rel'=>'next','href'=>'hebergement.php','title'=>'C\'est quoi l\'hébergement ?');

+$head['access'][1]=array('rel'=>'index','href'=>'../','title'=>'Index de la rubrique &#34;C\'est quoi&#34;');

+require'../../autres/source-haut.php'?>

+<h1><img src="/img/moyen/apache32.png" class="t32" alt="Une plume, le logo d'Apache" />Qu'est-ce qu'un serveur, un client ?</h1>

+<h2 id="serveur">Le serveur</h2>

+<p>Les pages et les fichiers que vous voyez sur internet sont stockées quelquepart, plus précisément sur une machine apellée &laquo;serveur&raquo;.

+   C'est un ordinateur qui stocke des fichiers, et les envoie au client (le client, c'est vous, qui regardez la page).<br />

+   Parfois, dans le cas d'un site dynamique par exemple, le serveur exécute des instructions indiquées dans le code du fichier et

+   utilise d'autres logiciels avant d'envoyer le fichier au client.</p>

+<p>On utilise le terme "serveur" à la fois pour désigner la <em>machine</em> ou sont installés les logiciels,

+   et le <em>logiciel principal</em> installé sur cette machine, qui intéragit avec les autres logiciels.

+   C'est ambigü, on pourrait dire "Le serveur est installé sur le serveur". Il faut comprendre la différence entre la machine et le logiciel.</p>

+<p>Voici un schéma qui représente cette disposition :<br />

+   <img src="/img/cestquoi/schema-serveur.png" style="border:2px solid black;width:345px;height:319px"

+     alt="La machine contient le serveur (logiciel) et les logiciels facultatifs. Le serveur (logiciel) peut intéragir avec les autres logiciels."/></p>

+<h3>Logiciels</h3>

+<p style="margin-bottom:0">Plusieurs logiciels sont installés sur la machine :</p>

+   <dl style="margin-top:1">

+    <dt>Le système d'exploitation</dt>

+    <dd>Il fait tourner le serveur (logiciel). Le système d'exploitation le plus courant sur les serveurs est Linux,

+        mais il y a certains serveurs sous Windows ou autres.</dd>

+    <dt>Le serveur (logiciel)</dt>

+    <dd>Le plus courant sous Linux est Apache. Sous Windows, on trouve <acronym title="Internet Information Services" xml:lang="en">IIS</acronym>.</dd>

+    <dt>Les logiciels facultatifs</dt>

+    <dd>Sur la machine, seuls le serveur et le système d'exploitation doivent être installés. 

+        Cependant, d'autres logiciels, même s'ils ne sont pas obligatoires, sont couramment utilisés :

+        <dl><dt>Un langage dit "dynamique"</dt>

+            <dd>Un langage dynamique est utilisé sur tous les sites importants. Sans ce type de langage, on dit qu'un site est statique.

+                Un langage dynamique permet par exemple de gérer une base de données, un forum, des articles éditables façon "Wiki",

+                des inscriptions et des membres. On dit que ce langage est dynamique car le site n'a pas besoin de son créateur pour se mettre à jour.<br />

+                <abbr title="PHP : HyperText Preprocessor" xml:lang="en">PHP</abbr> est utilisé sous Linux comme langage dynamique.<br />

+                Sous Windows, il y a l'<abbr title="Active server page">ASP</abbr>.</dd>

+            <dt>Une base de données</dt>

+            <dd>Comme son nom l'indique, elle permet d'enregistrer toutes sortes de données. C'est avec elle que l'on peut enregistrer des articles

+                ou des coordonnées, pour gérer des inscriptions sur un site par exemple.<br />

+                L'une des plus utilisée est <abbr title="My Search Query Langage" xml:lang="en">MySQL</abbr>.

+                On peut l'installer sous Linux ou Windows, mais elle est plus souvent liée avec Linux et PHP.

+                Il existe aussi Oracle, sous Windows, qui est souvent liée avec ASP.</dd></dl>

+        On peut utiliser beaucoup d'autres logiciels. Par exemple, on peut installer plusieurs serveurs (logiciels) sur un ordinateur,

+        pour disposer des avantages de chacun.</dd></dl>

+<h2 id="client">Le client</h2>

+<p>La notion de "client" est simple. Toutes les personnes qui demande à afficher une page ou un fichier sont des clients (par opposition à "Serveur").

+   Vous êtes un client, comme tous les internautes.<br />

+   Lorsqu'un client demande l'affichage d'une page, ou un fichier, on dit qu'il <em>envoie une requête</em>.

+   Ensuite, le serveur lit la requête, l'exécute, puis renvoie le résultat au client.<br />

+   Si l'on reprend le schéma, voici la succession et le déroulement des étapes :<br />

+   <img src="/img/cestquoi/schema-requete-client-serveur.png" style="border:2px solid black;width:345px;height:319px" alt="Schéma et représentation d'une requête"/></p>

+<p id="next">Pour continuer :<br />

+  <a href="hebergement.php">Qu'est-ce que l'hébergement ?</a><br />

+  <a href="http://fr.wikipedia.org/wiki/Serveur_%28informatique%29" hreflang="fr" class="wiki">Wikipédia : Serveur informatique</a><br />

+  <a href="http://www.commentcamarche.net/cs/csintro.php3" hreflang="fr">CCM : Environnement Client/Serveur</a></p>

+<?php require'../../autres/source-bas.php'?>

blob - /dev/null
blob + 3a8e9c911d2a24166f39b71cd5edef77b7b3740c (mode 644)
--- /dev/null
+++ configurer/ccleaner.php
@@ -0,0 +1,10 @@
+<?php
+$titre='Configurer Ccleaner';
+$head['access'][0]=array('rel'=>'index','href'=>'./','title'=>'Accueil de la rubrique &#34;Configurer&#34;');
+require'../autres/source-haut.php'?>
+<h1><img class="t128" alt="" src="/img/big/ccleaner128.png" />Configurer Craps Cleaner</h1>
+<p>Il y a une vidéo en deux parties :<br />
+<a href="/temp/?video=ccleaner">1&deg; partie</a> : Télécharger et installer le logiciel<br />
+<a href="/temp/?video=ccleaner2">2&deg; partie</a> : Configurer et utiliser le logiciel.
+</p>
+<?php require'../autres/source-bas.php'?>
blob - /dev/null
blob + 910270e67630789cbedbaaee9614b9922603bb1f (mode 644)
--- /dev/null
+++ configurer/firefox.php
@@ -0,0 +1,15 @@
+<?php
+$titre='Configurer Firefox';
+$head['access'][0]=array('rel'=>'index','href'=>'./','title'=>'Accueil de la rubrique &#34;Configurer&#34;');
+require'../autres/source-haut.php'?>
+<h1><img  class="t64" alt="" src="/img/moyen/firefox64.png" />Configurer Firefox</h1>
+<p>Il y a pour le moment :</p>
+<ul>
+  <li>Une vidéo pour vous montrer comment effacer ses traces (Video de 421 Ko) :
+  <a href="/temp/?video=configfirefoxtraces">/temp/?video=configfirefoxtraces</a></li>
+  <li>Une autre pour vous montrer comment gérer les flux RSS (Vidéo de 588 Ko) :
+  <a href="/temp/?video=firefoxrss">/temp/?video=firefoxrss</a></li>
+  <li>Une autre qui explique comment utiliser les onglets (Vidéo de 400 Ko) :
+  <a href="/temp/?video=ffonglets">/temp/?video=ffonglets</a></li>
+</ul>
+<?php require'../autres/source-bas.php'?>
blob - /dev/null
blob + dd0a4fd3b994c133d9d1389870035d339d5b025e (mode 644)
--- /dev/null
+++ configurer/index.php
@@ -0,0 +1,21 @@
+<?php
+$titre='Configurer/Optimiser';
+$head['access'][0]=array('rel'=>'index','href'=>'./','title'=>'Accueil de la rubrique &#34;Configurer&#34;');
+require'../autres/source-haut.php'?>
+<h1>Configurer</h1>
+<hr />
+<p style="float:right;">Optimiser <span style="font-family:'comic sans ms',serif;">W</span>indows
+  <a href="windows/"><img style="width:161px;height:144px" alt="Windows" src="/img/big/windows.gif" /></a></p>
+<p>Aller à : <a href="#internet">Internet</a> - <a href="#securite">Securité</a></p>
+<hr style="clear:both" />
+<h2 id="internet">Internet</h2>
+  <p><a href="firefox.php">Firefox</a> &nbsp; ; &nbsp; <a href="zonealarm.php">Zone alarm</a></p>
+  <h3 id="internet-thunderbird"><a href="thunderbird.php">Thunderbird</a></h3>
+    <ul><li><a href="thunderbird.php#filtrer-ses-messages" title="Pour classer vos messages, et réduire le spam">
+        Filtrer et classer ses messages</a></li>
+        <li>Astuces :<br />
+            <ul><li><a href="thunderbird.php#atuces-1-mail-groupe">Envoyer un mail à plusieurs personnes</a></li>
+                <li><a href="thunderbird.php#astuces-2-mail-format-texte">Envoyer ses messages au format texte plutôt que HTML</a></li></ul></li></ul>
+<h2 id="securite">Securité</h2>
+  <p><a href="ccleaner.php">Ccleaner</a></p>
+<?php require'../autres/source-bas.php'?>
blob - /dev/null
blob + ce67c4e2b2a0585ef769bfaea149e48d11f9a460 (mode 644)
--- /dev/null
+++ configurer/thunderbird.php
@@ -0,0 +1,72 @@
+<?php

+$titre='Configurer Thunderbird';

+$head['access'][0]=array('rel'=>'index','href'=>'./','title'=>'Accueil de la rubrique &#34;Configurer&#34;');

+require'../autres/source-haut.php'?>

+<h1><img src="/img/moyen/thunderbird48.png" alt="" class="t48" />Configurer Thunderbird</h1>

+<ul><li><a href="#filtrer-ses-messages" title="Pour classer vos messages, et réduire le spam">

+        Filtrer et classer ses messages</a></li>

+    <li>Astuces :<br />

+        <ul><li><a href="#atuces-1-mail-groupe">Envoyer un mail à plusieurs personnes</a></li>

+            <li><a href="#astuces-2-mail-format-texte">Envoyer ses messages au format texte plutôt que HTML</a></li></ul></li></ul>

+<h2 id="filtrer-ses-messages">Filtrer et classer ses messages</h2>

+  <p>Si vous recevez beaucoup de spam (mail indésirable), vous avez sûrement envie de vous en débarrasser et de ne pas avoir à faire le tri

+     parmi les messages que vous recevez chaque jour. Si vous échangez des messages avec beaucoup de personnes,

+     il est également pratique de classer les mails reçus dans des dossiers spécifiques.<br />

+     Grâce aux règles de filtrage, Thunderbird (et la plupart des logiciels de messagerie) permet ceci.

+     L'exemple ici est en cas de spam. Nous allons voir comment définir des règles de filtrage et des actions spécifiques pour certains messages.</p>

+  <p>Pour créer des filtres, ouvrez le menu "Outils", puis "Filtres de messages...".<br />

+     <img src="/img/configurer/thunderbird/menu-outils.png" style="width:351px;height:47px" 

+        alt="Fichier&nbsp;-&nbsp;Edition&nbsp;-&nbsp;Affichage&nbsp;-&nbsp;Aller&nbsp;à&nbsp;-&nbsp;Messages-=Outils=-&nbsp;Aide" />

+     <br /><br />

+     <img src="/img/configurer/thunderbird/liste-menu.png" style="width:242px;height:253px" /></p>

+  <p>Une fenêtre comme cell-ci s'ouvre. Elle vous permet de créer de nouvelles règles pour classer et filtrer vos messages :<br />

+     <img src="/img/configurer/thunderbird/fenetre-liste-filtres-vierge.png" style="width:504px;height:501px" alt="" /><br /><br />

+     Cliquez sur "Nouveau" pour définir un nouveau filtre, et les actions qui iront avec. Cette fenêtre s'ouvre&nbsp;:<br />

+     <img src="/img/configurer/thunderbird/fenetre-filtres-vierge.png" style="width:581px;height:459px" alt="" /><br /><br />

+     Ensuite, il faut définir les règles. Ici, si l'objet contient "site-spam.com", le message sera automqtiquement 

+     déplacé vers la corbeille du dossier "Compte".<br />

+     <img src="/img/configurer/thunderbird/fenetre-filtres-1.png" style="width:581px;height:460px" alt="" /><br /><br />

+     Vous pouvez ajouter autant de règles que vous le voulez en cliquant sur le bouton "+".<br />

+     Voici un exemple avec plusieurs actions possibles,

+     et plusieurs conditions (règles) pour supprimer ou classer les messages indésirables :<br />

+     <img src="/img/configurer/thunderbird/fenetre-filtres-configure.png" style="width:581px;height:393px" alt="" /></p>

+  <p>"Supprimer du serveur POP" signifie effacer le message en ligne, et pas seulement sur votre ordinateur.<br />

+     Les filtres de messages sont également très pratique pour classer les messages de sa famille,

+     de ses collègues, etc, dans différents dossiers.</p>

+  <p>Dans la fenêtre "Filtres des messages", il y a un bouton "Journal de filtrage".

+     Le journal de filtrage sert à garder une trace de chaque règle utilisée :

+     "Une règle a été utilisée sur tel message à telle date et telle(s) action(s) a (ont) été réalisées.".<br />

+     Vous pouvez effacer les traces des actions utilisées ou tout simplement le désactiver.</p>

+<h2 id="astuces">Astuces</h2>

+  <h3 id="atuces-1-mail-groupe">Envoyer un mail groupé</h3>

+      <p>S'il vous arrive d'envoyer un mail à plusieurs personnes, chaque destinataire peut voir les adresses des autres destinataires.

+         C'est assez gênant : si une personne est infectée par un virus, spyware (logiciel espion) ou autre saleté indésirable,

+         toutes les adresse peuvent être récupérées !!<br />

+         Il en est de même si une partie du message est récupérée par un spammeur, qui ajoutera ces adresse à sa "collection".<br />

+         Tout simplement, il est aussi désagéable de voir que des personnes que l'on ne connait pas connaissent sa propre adresse,

+         surtout si c'est une adresse personelle.</p>

+      <p>Heureusement il existe une solution simple, et qui n'est <strong>pas seulement valable pour Thunderbird</strong>,

+         c'est d'utiliser le champ "CCI", "<abbr title="Black Carbon Copy">BCC</abbr>", ou autre "Copie Cachée".

+         De cette façon, le message sera correctement envoyé, sans risque que qui que ce soit récupère une adresse.<br />

+         Sous Thunderbird, il faut utiliser le champ "Copie Cachée".<br />

+         Sans utiliser "Copie cachée", le champ est :<br />

+         <img src="/img/configurer/thunderbird/champ-pour.png" style="width:343px;height:22px"  

+              alt="-v-&nbsp;&nbsp;&nbsp;Pour: | adresse@mail.tld" /><br />

+        Il faut séléctionner cette option :<br />

+        <img src="/img/configurer/thunderbird/selection-champ-bcc.png" style="width:127px;height:126px"

+             alt="Pour / Copie à /=Copie cachée=/ Répondre à / Forum / Faire suivre à" /></p>

+      <p>Cette option est bien sûr disponible dans la plupart des logiciels de messagerie ou webmail,

+         avec différents noms.</p>

+  <h3 id="astuces-2-mail-format-texte">Envoyer ses messages au format texte plutôt que HTML</h3>

+      <p>Il y a énormément d'inconvénients à envoyer un mail au format HTML. Voir cet article :

+         <a href="http://www.freeantispam.org/gratuit/email-html.php" hreflang="fr">Pourquoi ne pas utiliser des emails en HTML</a>.<br />

+         Qu'est-ce qu'un mail en HTML ?

+         C'est tout ce qui contient du texte mis en forme (gras, italique, couleurs...) ou autre chose que du texte (images par exemple).

+         (Voir aussi&nbsp;: <a href="/cestquoi/web/">“&nbsp;C'est quoi "(x)HTML"&nbsp;?&nbsp;”</a>).<br />

+         Pour envoyer ses e-mails au format texte simple dans Thunderbird, il faut se rendre dans le menu "Outils", puis "Paramètres des comptes",

+         et sélectionner "Rédaction et adressage" d'un compte. Décochez ensuite la case "Rédiger les messages en HTML".<br />

+         <img src="/img/configurer/thunderbird/redaction-format-texte.png" style="width:733px;height:582px" alt="" /></p>

+      <p>Effectivement, vos mails seront moins "beaux" (question de goût), mais ils seront plus légers, plus agréables à lire,

+         et ils ne seront pas filtrés par les logiciels de messagerie.<br />

+         De plus, certains WebMails gèrent mal le HTML.</p>

+<?php require'../autres/source-bas.php'?>

blob - /dev/null
blob + c56be52d8cdf0f2893f14f645aca024e9a9f1752 (mode 644)
--- /dev/null
+++ configurer/windows/1.php
@@ -0,0 +1,119 @@
+<?php
+$titre='Optimiser Windows 1';
+$head['css'][0]['filename']='configwindows';
+$head['access'][0]=array('rel'=>'next','href'=>'2.php','title'=>'Optimiser Windows 2');
+$head['access'][1]=array('rel'=>'last','href'=>'2.php','title'=>'Optimiser Windows 2');
+$head['access'][2]=array('rel'=>'index','href'=>'./','title'=>'Optimiser Windows');
+require'../../autres/source-haut.php';?>
+<table summary="rubriques" class="som" border="1" cellpadding="2" cellspacing="2">
+  <tbody>
+    <tr>
+      <td class="g"></td>
+      <td class="c"><a href="index.php#sommaire">Sommaire</a></td>
+      <td class="d"><a href="2.php#optimisationsysteme">Suite : Optimisation du système </a></td>
+    </tr>
+  </tbody>
+</table>
+<h2 id="avant">1) Avant de commencer</h2>
+<h4 id="toutdabord">Tout d'abord</h4>
+<p>Avant de faire quoi que ce soit sur votre ordinateur, mieux vaut le "nettoyer".<br />Faites donc dans cet ordre :</p>
+<ol><li><p>Une analyse antivirus avec un <strong>BON</strong> logiciel antivirus. Pour des analyses en ligne :
+           <a href="http://sebsauvage.net/logiciels/fprot.html#online" hreflang="fr">http://sebsauvage.net/logiciels/fprot.html#online</a></p></li>
+    <li><p>une analyse anti-spywares, malwares etc... Pour ceci je vous recommande les logiciels
+           <a href="/logiciels/spybot.php">Spybot et Ad-aware.</a></p></li>
+    <li><p>supprimmez le <em>maximum</em> de fichiers temporaires et inutiles avec le logiciel <a href="/logiciels/ccleaner.php">Ccleaner.</a></p>
+  </li>
+</ol>
+<h4 id='defragmentation'>Une défragmentation des disques durs</h4>
+  <p>Au fur et à mesure que vous utilisez votre ordinateur, il copie, déplace et supprime des fichiers sur votre disque.<br />
+     Vous ne le voyez pas, mais <span class="motcle">les fichiers sont "découpés"</span> sur le disque en plusieurs morceaux,
+     et quand vous avez besoin d'un fichier,<br /> il faut chercher toutes ses morceaux avant de pouvoir l'utiliser.</p>
+  <p>C'est pourquoi plus votre disque est <span class="motcle">fragmenté</span>, plus il sera <span class="motcle">lent</span>.
+     Il est donc conseillé de faire une <span class="motcle">défragmentation</span> de temps en temps
+     (environ <span class="motcle">tous les mois</span>).<br />Si vous n'avez pas fait de défragmentation depuis assez longtemps,
+     vous pouvez défragmenter <span class="motcle">plusieurs fois de suite chaque disque</span>.<br />
+     Ah oui, et dernière chose, il vaut mieux ne rien faire pendant la défragmentation, et m&ecirc;me redémarrer avant.<br />
+     C'est encore mieux de défragmenter en mode sans échec (appuyez sur "F8" au démarrage.)<br />
+     Et c'est <span class="motcle">encore plus efficace</span> de défragmenter avec <span class="motcle">le logiciel </span>
+     <a href="/logiciels/pagedefrag.php">PageDefrag</a>.</p>
+  <p>Je vous conseille d'utiliser ce logiciel :<br />
+     Une fois téléchargé et décompréssé, ouvrez le fichier "<span class="motcle">pagedfrg.exe</span>".<br />
+     Vous verrez cette fen&ecirc;tre s'afficher :<br />
+     <img style="width:497px;height:403px;" alt='' src="img/pagedfrg.jpg" /></p>
+  <p>Dans "Defragmentation Control", vous pouvez cocher "Defragment at next boot"
+    (défragmenter au <span class="motcle">prochain</span> démarrage) ou "Defragment every boot"
+    (défragmenter à <span class="motcle">chaque</span> démarrage).<br />
+    Je vous <span class="motcle">conseille</span> de défragmenter à <span class="motcle">chaque</span>
+    démarrage : les premières fois votre ordinateur mettra du temps à démarrer, mais ensuite il sera <span class="motcle">plus rapide</span>.
+    <br />L'option "Defrag abort countdown xx seconds" correspond au nombre de secondes que vous aurez
+    avant la défragmentation pour appuyer sur une touche et l'annuler.</p>
+  <p>Quand vous avez terminé, cliquez sur OK et redémarrez pour lancer la défragmentation.</p>
+  <p>toutefois si vous ne voulez pas utiliser ce logiciel, voici la marche à suivre :</p>
+  <p>1 - Ouvrez le Menu Démarrer, puis Tous les programmes&gt;Accessoires&gt;Outils système&gt;Défragmenteur de disque.<br />
+  <img style="width:951px;height:326px;" alt="Menu démarrer" src="img/defrag1.jpg" /></p>
+  <p>2 - Sélectionnez un disque, puis cliquez sur défragmenter et attendez que cela se termine
+     (il est conseillé de ne rien faire pendant la défragmentation).</p>
+  <p>3 - Défragmentez chaque disque.<br /><img style="width:682px;height:468px" alt="" src="img/defrag2.jpg" /></p>
+<h4 id='verificationdd'>Une vérification des disques durs</h4>
+  <p>A force d'utiliser <span class="motcle">vos disques durs</span>, des parties (appelées "clusters")
+     peuvent <span class="motcle">s'abimer</span> ou &ecirc;tre <span class="motcle">déffectueuses</span>.<br />
+     Pour reperer ces clusters abimés et les corriger (quand c'est possible),
+     il est nécéssaire de <span class="motcle">vérifier vos disques</span>.</p>
+  <p>Pour cela, déroulez le Menu Démarrer, puis Poste de Travail, faites un clic droit sur un disque dur et sélectionnez Propriétés.<br />
+     Dans l'onglet Outils, cliquez sur vérifier maintenant, puis dans la fen&ecirc;tre qui s'ouvre cochez les deux cases.
+     Cliquez ensuite sur Démarrer et patientez.<br /> sRépetez la marche à suivre pour chaque disque.</p>
+  <p>Si, lorsque vous cliquez sur Démarrer, Windows affiche ceci (ce qui est assez probable) :<br />
+    <img style="width:788px;height: 133px;" alt="Vérification du disque." src="img/verifdsk.jpg" /><br />
+    Cliquez sur "Oui", &nbsp;refaites la marche à suivre pour chaque disque et redémarrez.</p>
+  <p>Attention, les vérifications sont longues...</p>
+<h4 id='pointrestoration'>Un point de Srestauration</h4>
+  <p>Nous allons ici créer un "Point de restoration", ce qui nous permettra,
+     <span class="motcle">en cas de problème</span> plus tard, de <span class="motcle">restaurer le système</span>
+     à la date de création de ce point de restoration.<br />
+     Cependant, toutes les <span class="motcle">modifications</span> que vous aurez effectuées
+     <span class="motcle">après la création</span> de votre point de restauration 
+     seront <span class="motcle">annulées</span> si vous restaurez votre système.</p>
+  <p>Pour créer un point de restoration, ouvrez le Menu Démarrer, puis Tous les programmes&gt;Accessoires&gt;Outils
+     système&gt;Restauration du sytème.<br />Sélectionnez ensuite "Créer un point de restauration", cliquez sur "Suivant",
+     entrez une description de ce point de restauration (par exemple "Avant Optimisation Windows"),
+     puis cliquez sur "Créer", et ensuite sur fermer.</p>
+  <p>Si vous avez un jour besoin de restaurer votre système, il faut ouvrir le Menu Démarrer, puis Tous les
+     programmes&gt;Accessoires&gt;Outils système&gt;Restauration du sytème, sélectionner "Restaurer mon Ordinateur à une Date Antérieure,
+     puis cliquer sur Suivant et choisir votre point de restauration.</p>
+  <p>Si vous ne pouvez <span class="motcle">plus démarrer</span> Windows à un moment ou un autre
+    (mais je le répète, il y a <span class="motcle">très peu de chances que cela arrive</span>), démarrez votre ordinateur puis
+    appuyez <span class="motcle">tout de suite</span> sur la touche "F8" de votre clavier et laissez la enfoncée.<br />
+    On vous demandera de quelle facon vous voulez démarrer (mode sans échec...), choisissez "Dernière bonne configuration connue".<br />
+    Ceci revient à faire une restauration du système.</p>
+<h4 id='sauvegarderegistre'>Une sauvegarde du registre</h4>
+  <p>Le <span class="motcle">registre</span>, c'est l'endroit ou sont enregistrés <span class="motcle">tous les paramètres</span>
+     de votre ordinateur. Tous, tous, tous, absolument tous.<br />
+     De l'apparence de votre curseur au nombre d'ic&ocirc;nes sur votre bureau,
+     en passant par les programmes qui se lancent au démarrage, tout est là.</p>
+  <p>C'est pourquoi une <span class="motcle">erreur</span> peut <span class="motcle">endommager</span> votre ordinateur.</p>
+  <p>Au cas ou ceci arriverait, nous allons faire une "Sauvegarde du registre".
+     Ceci ressemble un peu au point de restauration, mais concerne seulement le fichier spécial qu'est le registre.<br />
+     Nous allons copier puis exporter le registre quelquepart dans votre ordinateur.
+     Le mieux est de le graver sur CD, comme ceci vous l'aurez quoi qu'il arrive
+     (m&ecirc;me si, et je vous le repete, il est peu probable de faire une erreur).</p>
+  <p>Pour faire une sauvegarde du registre, ouvrez le registre en ouvrant le Menu Démarrer&gt;Executer,
+     puis tapez "regedit". Si cela ne marche pas, le fichier executable correspondant au registre est souvent dans le répertoire
+     C:\Windows\regedit.exe.<br /> Ouvrez ensuite&nbsp;le menu Fichier, puis exporter.
+     Une fen&ecirc;tre qui ressemble a celle-ci s'affichera.<br /> Dans "étendue de l'exportation",
+     vérifiez bien que "<span class="motcle">Tout</span>" est coché.<br />
+     Donnez un nom au fichier, sélectionnez l'endroit ou vous voulez l'enregistrer puis cliquez sur
+     "enregistrer" et fermez le registre.
+     <img style="width:561px;height:514px;" alt="Sauvegarde du registre" src="img/savereg.jpg" /><br />
+     Vous pouvez aussi le graver sur CD (par exemple), mais &agrave; mon avis ca n'en vaut pas la peine..</p>
+  <p>Si un jour vous voulez "Restaurer" le registre, il vous suffira d'ouvrir le regitre, d'ouvrir le Menu Fichier,
+     puis importer et de sélectionner votre fichier.</p>
+<table summary="rubriques" class="som" border="1" cellpadding="2" cellspacing="2">
+  <tbody>
+    <tr>
+      <td class="g"></td>
+      <td class="c"><a href="index.php#sommaire">Sommaire</a></td>
+      <td class="d"><a href="2.php#optimisationsysteme">Suite : Optimisation du système</a></td>
+    </tr>
+  </tbody>
+</table>
+<?php require'../../autres/source-bas.php'?>
blob - /dev/null
blob + 67e679328992fff19fcea9eb877c45ce427b3f83 (mode 644)
--- /dev/null
+++ configurer/windows/2.php
@@ -0,0 +1,162 @@
+<?php
+$head['css'][0]['filename']='configwindows';
+$head['access'][0]=array('rel'=>'prev','href'=>'1.php','title'=>'Optimiser Windows 1');
+$head['access'][1]=array('rel'=>'first','href'=>'2.php','title'=>'Optimiser Windows 2');
+$head['access'][2]=array('rel'=>'index','href'=>'./','title'=>'Optimiser Windows');
+$titre='Optimiser Windows 2';
+require'../../autres/source-haut.php'?>
+<table summary="rubriques" class="som" border="1" cellpadding="2" cellspacing="2">
+  <tbody>
+    <tr>
+      <td class="g"><a href="1.php#avant">Précédent : Avant de commencer</a></td>
+      <td class="c"><a href="index.php#sommaire">Sommaire</a></td>
+      <td class="d"></td>
+    </tr>
+  </tbody>
+</table>
+<h2 id='optimisationsysteme'>2) optimisation du système</h2>
+<h3 id="manipulationsregistre"><img class='t16' alt="/!\" src="/img/mini/exclamation.gif" />
+Manipulations du registre</h3>
+<p class="ex">
+  <img class='t16' alt="/!\" src="/img/mini/exclamation.gif" />
+  Cette astuce peut avoir des conséquences sur votre système si vous faites mal les manipulations.
+  Cependant si vous suivez bien ce que j'ai donné, cela n'arrivera pas.<br />
+  Et n'oubliez pas que vous avez fait <a href="1.php#sauvegarderegistre">une sauvegarde du registre</a>
+  au cas ou ceci arriverait.
+</p>
+<p class="pintro">
+  Vous devrez ouvrir le registre à chaque étape de cette rubrique. Pour l'ouvrir, déroulez le menu démarrer,
+  exécuter et tapez "<em>regedit</em>" puis appuyez sur Entrée.<br />
+  Si il ne s'ouvre pas, l'executable correspondant au registre est souvent dans le répertoire
+  "C:\Windows\regedit.exe" (vous pouvez également taper ceci dans "executer").<br />
+  Vous voyez une <em>arborescence de dossiers</em> qui sont en fait des clés.
+  Si je dis "Déroulez la clé HKEY_CLASSES_ROOT", vous devez cliquer sur le
+  <img style="width: 19px; height: 18px;" alt="+" src="/img/mini/plus.gif" />
+  à coté du <img class='t16' alt="dossier" src="/img/mini/folder.png" />
+  placé à coté de "HKEY_CLASSES_ROOT".<br />
+  Les clés "HKEY_CURRENT_USER" et "HKEY_CURRENT_CONFIG" correspondent
+  à des réglages qui affectent seulement la session en cours (<em>current</em>).<br />
+  Si je vous dis de modifier une valeur, il faut double-cliquer dessus pour la changer.
+</p>
+<p class="pintro">
+  Il est également important de <em>respecter la casse</em>,
+  c'est à dire la différence majuscules/minuscules, ainsi que
+  <em>les espaces</em> :
+  Si je dis : "créez une valeur Dword que vous appellerez 'TimeSettings'",
+  il est important de l'apeller "TimeSettings" et pas "Time Settings" ou
+  "timesettings".
+</p>
+<p class="pintro">
+  Lorque vous modifier une valeur, elle est tout de suite enregistrée.
+  Vous ne devez pas confirmer quoi que ce soit ou enregistrer vous m&ecirc;me.<br />
+  J'utiliserais souvent des abréviations pour les clés principales :<br />
+  HKCR pour HKEY_CLASSES_ROOT, HKCU pour HKEY_CURRENT_USER, etc...<br />
+</p>
+<h5 id='stopwinfast'>Arrêter windows plus vite</h5>
+<p>
+  Lorsque vous arrêtez Windows, il met parfois très longtemps avant de s'éteindre.
+  Pourquoi ?<br /> Car il laisse par défaut 20 secondes à chaque
+  logiciel encore actif avant de l'arrêter.<br />
+  Vous pouvez changer cette valeur pour que les logiciels s'arrêtent plus vite.
+</p>
+<p>
+  Déroulez les clés HKLM, puis System, CurrentControlSet et Control.
+  Modifiez la valeur WaitToKillServiceTimeOut fixée par défaut à 20000 millisecondes (20 secondes).
+  Entrez par exemple 5000 pour 5 secondes d'attente par logiciel.</p>
+<h5 id='liberermem'>Libérer la mémoire vive</h5>
+<p>
+  Windows conserve les dll de plusieurs logiciels dans la mémoire vive,
+  pour y avoir accès plus rapidement en cas de besoin.
+  Mais elles sont gardées en mémoire même quand le logiciel est fermé, et cela prend
+  inutilement de la place qui pourrait être utilisée par d'autres logiciels.</p>
+<p>
+  Pour déchargera les dll après usage, déroulez les clés HKLM, SOFTWARE, Microsoft,
+  Windows, CurrentVersion, Explorer.<br />La valeur AlwaysUnloadDll est fixée par défaut à 0,
+  changez la à 1.
+</p>
+<h3 id='fonctionrecherche'>La fonction de recherche</h3>
+<h4 id='desactiveindex'>Désactiver l'indexation</h4>
+<p>
+  Pour que vos recherches dans votre ordinateur soient plus rapides,
+  Windows indexe chaque fichier au fur et à mesure que vous les utilisez.<br />
+  Cette fonction est plut&ocirc;t encombrante, car elle ralentit
+  votre ordinateur.
+</p>
+<p>
+  Pour la désactiver, ouvrez le menu démarrer puis rechercher (ou appuyez sur F3).<br />
+  Cliquez ensuite sur "Modifier les préférences", puis sur "avec le service d'indexation"
+  et choisissez non.
+</p>
+<h3 id='desactiveservices'><img class='t16' alt="/!\" src="/img/mini/exclamation.gif" />
+Désactiver les services inutiles</h3>
+<p class="ex">
+  <img class='t16' alt="/!\" src="../../img/mini/exclamation.gif" />
+  Cette manipulation peut avoir des conséquences si vous désactivez de mauvais services.
+</p>
+<p>
+  XP charge au démarrage plusieurs logiciels apellés "services".
+  Tous ne sont pas utiles, certains ne servent même à rien!<br />
+  Vous pouvez donc les désactiver pour gagner en rapidité.
+  (Cependant, vous devez être administrateur de l'ordinateur pour accèder à ces options)
+</p>
+<p>
+  Pour cela, ouvrez le Menu Démarrer, Executer, puis tapez "services.msc".
+  Si cela ne marche pas, executez le fichier services.msc situé dans le répertoire C:\WINDOWS\system32\.<br />
+  Vous devriez voir une fenêtre ressemblant a ceci :<br />
+  <img style="width: 649px; height: 452px;" alt="Services" src="img/servicesmsc.jpg" />
+</p>
+<p>
+  Ce sont tous les services. Pour arrêter et désactiver un service, double cliquez dessus,
+  puis cliquez sur arrêter (si il est démarré).<br />
+  Changez ensuite la valeur à coté de "démarrage" en "désactivé",
+  puis cliquez sur appliquer. C'est bon, le service est désactivé.<br />
+  Vous pouvez également regarder cette vidéo :
+</p>
+<div style="text-align:center;">
+  <object type="application/x-shockwave-flash" data="/temp/videos/stopservice.swf" height="488" width="410">
+  <param name="movie" value="/temp/videos/stopservice.swf" />
+  </object>
+</div>
+<h4>Services inutiles, à désactiver dans tous les cas :</h4>
+<p>
+  Accès distant au registre ; Administration IIS ; Affichage des messages ; Avertissement ; Carte à puce ;
+  Carte de performance WMI ; Client de suivi de lien distribué ; Connexion secondaire ; DDE réseau ;
+  Distribued Transaction Coordinator ; DSDM DDE sréseau ; Fournisseur de la prise en charge de sécurité LM NT ;
+  Gestionnaire de l'album ; Journaux et alertes de performance ; Partage de Bureau à Distance Netmeeting ;
+  Prise en charge des cartes à puce ; Publication FTP ; Publication World Wide Web ; QoS RSVP ;
+  Routage et accès distant ; Service de rapport d'erreur ; Services d'indexation ; Services IPSEC ;
+  Simple Mail Transfert Protocol (SMTP) ; Telnet ; WebClient.
+</p>
+<h4>Services à désactiver selon les cas :</h4>
+<table summary="Services à desactiver selon les cas" class="service" border="1" cellpadding="2" cellspacing="2">
+  <thead><tr><td>Service</td><td>à désactiver si...</td></tr></thead>
+  <tfoot><tr><td>service</td><td>à désactiver si...</td></tr></tfoot>
+  <tbody>
+    <tr><td>Acquisition d'image windows</td><td>Vous n'avez pas de scanner ni de webcam</td></tr>
+    <tr><td>Aide et support</td><td>Vous ne vous servez pas de l'aide de windows</td></tr>
+    <tr><td>Assistance TCP/IP netbios</td><td>Vous n'avez pas de réseau local</td></tr>
+    <tr><td>Compatibilité avec le changement rapide d'utilisateur</td>
+        <td>Vous n'avez qu'un compte sur votre ordinateur</td></tr>
+    <tr><td>Configuration automatique sans fil</td><td>Vous n'utilisez pas de réseau wi-Fi (Sans fil)</td></tr>
+    <tr><td>Explorateur d'ordinateur</td><td>Vous n'avez pas de réseau local</td></tr>
+    <tr><td>Fax</td><td>Vous n'utilisez pas la fonction "Fax" de windows</td></tr>
+    <tr><td>Gestionnaire de session d'aide sur le bureau à distance</td>
+        <td>Vous n'utilisez pas l'aide à distance</td></tr>
+    <tr><td>Onduleur</td><td>Vous n'utilisez pas d'onduleur</td></tr>
+    <tr><td>Planificateur de t&acirc;ches</td><td>Vous n'utilisez pas les t&acirc;ches planifiées</td></tr>
+    <tr><td>Serveur</td><td>Vous n'utilisez pas d'imprimante en réseau</td></tr>
+    <tr><td>Service de découverte SSPD</td><td>Vous n'avez pas de réseau local</td></tr>
+    <tr><td>Service de numéro de série du lecteur multimédia portable</td>
+        <td>Vous n'avez pas de baladeur MP3/Vidéo</td></tr>
+    <tr><td>Téléphonie</td><td>Vous avez le c&acirc;ble ou l'ADSL ou que vous n'avez pas internet</td></tr>
+  </tbody>
+</table>
+<table summary="rubriques" class="som" border="1" cellpadding="2" cellspacing="2">
+  <tbody>
+    <tr><td class="g"><a href="1.php#avant">Précédent : Avant de commencer</a></td>
+      <td class="c"><a href="index.php#sommaire">Sommaire</a></td>
+      <td class="d"></td>
+    </tr>
+  </tbody>
+</table>
+<?php require'../../autres/source-bas.php'?>
blob - /dev/null
blob + ac96f7190d58b5a952d38c9faf874fc88e79b8f8 (mode 644)
Binary files /dev/null and configurer/windows/img/defrag1.jpg differ
blob - /dev/null
blob + 79685c2bf4958687eaab8d110f6c2856d73c86d7 (mode 644)
Binary files /dev/null and configurer/windows/img/defrag2.jpg differ
blob - /dev/null
blob + 59b4f7dd5b7f1c7acf5c454cbe40e51bfcd135e1 (mode 644)
Binary files /dev/null and configurer/windows/img/savereg.jpg differ
blob - /dev/null
blob + 70b8b523a2ebd07cfbaba72194bf7e5657499c3e (mode 644)
Binary files /dev/null and configurer/windows/img/verifdsk.jpg differ
blob - /dev/null
blob + 98a8978328faa0d7d6a9acf5beb17f42a70137bd (mode 644)
--- /dev/null
+++ configurer/windows/index.php
@@ -0,0 +1,37 @@
+<?php
+$titre='Optimiser Windows';
+$head='<link title="windows" rel="stylesheet" href="/autres/css/configwindows.css" type="text/css" />';
+require'../../autres/source-haut.php'?>
+<h1><img style="width:161px;height:144px;" alt="Windows" src="/img/big/windows.gif" /><br />
+Configurer et optimiser windows</h1>
+<div style="width:90%;margin:auto;">
+  <p class="pintro">Je donne ici diverses fa&ccedil;ons de <em>manipuler Windows</em> pour le rendre <em>plus performant</em>
+  ou l'<em>adapter à vos besoins</em>.<br />Quelques manipulations peuvent s'effectuer avec le logiciel
+  <a href="http://www.microsoft.com/ntworkstation/downloads/PowerToys/Networking/NTTweakUI.asp">TweakUI</a>.<br />
+  Certaines peuvent <em>causer des problèmes</em> dans votre ordinateur suite a des manipulations.<br />
+  Ceci ne devrait pas arriver si vous suivez les astuces comme elles sont données, mais il vaut mieux se préparer en cas d'erreur.
+  <br />Je vous conseille donc de faire un <em>point de restauration</em> et une <em>sauvegarde du registre</em> avant de commencer
+  ces manipulations.<br />
+  La plupart des astuces sont sans "danger". Celles qui peuvent causer de graves erreurs dans votre ordinateur suite a de mauvaises
+  manipulations seront signalées par l'image :<img class='t16' alt="/!\"
+  src="/img/mini/exclamation.gif" />
+  </p>
+  <p>Attention, <strong>je ne suis pas responsable des dommages qui peuvent être causés dans votre ordinateur suite
+  à de telles manipulations.</strong>
+  </p>
+</div>
+<h1 id="sommaire">sommaire</h1>
+<h2><a href="1.php#avant">#</a>1) Avant de commencer</h2>
+  <h3><a href="1.php#toutdabord">#</a>Tout d'abord</h3>
+  <h3><a href="1.php#defragmentation">#</a>Une défragmentation des disques durs</h3>
+  <h3><a href="1.php#verificationdd">#</a>Une vérification des disques</h3>
+  <h3><a href="1.php#pointrestoration">#</a>Un point de restauration</h3>
+  <h3><a href="1.php#sauvegarderegistre">#</a>Une sauvegarde du registre</h3>
+<h2><a href="2.php#optimisationsysteme">#</a>2) Optimisation du système</h2>
+  <h3><a href="2.php#manipulationsregistre">#</a><img alt="/!\" src="/img/mini/exclamation.gif" />Manipulations du registre</h3>
+    <h4><a href="2.php#stopwinfast">#</a>Arr&ecirc;ter windows plus vite</h4>
+    <h4><a href="2.php#liberermem">#</a>Libérer la mémoire vive</h4>
+  <h3><a href="2.php#fonctionrecherche">#</a>La fonction de recherche</h3>
+    <h4><a href="2.php#desactiveindex">#</a>désactiver l'indexation</h4>
+  <h3><a href="2.php#desactiveservices">#</a><img alt="/!\" src="/img/mini/exclamation.gif" />Désactiver les services inutiles</h3>
+<?php require'../../autres/source-bas.php'?>
blob - /dev/null
blob + c26cae0e6a6c8e4a8addabdf970f2afb11a9600e (mode 644)
--- /dev/null
+++ configurer/zonealarm.php
@@ -0,0 +1,10 @@
+<?php
+$titre='Configurer Zone Alarm';
+$head['access'][0]=array('rel'=>'index','href'=>'./','title'=>'Accueil de la rubrique &#34;Configurer&#34;');
+require'../autres/source-haut.php'?>
+<h1><img class="t128" alt="ZA" title="Configurez Zone Alarm !" src="/img/big/zonealarm128.png" />
+    Configurer zone alarm</h1>
+<p>Il y a une vidéo complète en deux parties :<br />
+   <em>1&deg; partie</em> (Vidéo de 2602 Ko) : <a href="/temp/?video=dlinstallza">Télécharger et installer</a><br />
+   <em>2&deg; partie</em> (Vidéo de 976 Ko) : <a href="/temp/?video=dlinstallza2">Configurer et utiliser</a></p>
+<?php require'../autres/source-bas.php'?>
blob - /dev/null
blob + 781c188e6f66d6ec385f693a4ab2110e66345dd0 (mode 644)
--- /dev/null
+++ delxml/delxml2html.py
@@ -0,0 +1,81 @@
+#!/usr/bin/python

+# -*- coding: iso-8859-1 -*-

+import datetime, time

+import xml.dom.minidom

+# 

+# delxml2html.py  version 1.0.0

+# del.icio.us XML export to HTML converter.

+#

+# This program takes the XML export of your bookmarks

+# and creates an HTML page from it.

+#

+# Instructions:

+# 

+#   1) Go to http://del.icio.us/api/posts/all

+#   2) Enter your del.icio.us login and password

+#   3) Save the page as all.xml

+#   4) Run this program

+#   5) You have your bookmarks in favs.html

+#

+# Requirements:

+#     - a del.icio.us account.

+#     - Python 2.4 or later.

+#

+# License: This program is public domain.

+#

+# Author: Sébastien SAUVAGE (webmaster of http://sebsauvage.net)

+#

+# Ce programme a été modifé.

+#

+# Modifications apportées :

+#

+#   -Respect des normes du W3C

+#   -Version xhtml 1.0 Strict

+#   -Utilisation d'une feuille de style CSS.

+#

+print 'Reading all.xml and writing favs.html...'

+document = xml.dom.minidom.parse('all.xml')

+attrv = document.getElementsByTagName('posts')[0].attributes['update'].value

+export_date = attrv.replace('T',' ').replace('Z','')[:10]

+posts = {}

+# Get all posts, put them in a dictionnary (key = date/time of post) 

+for post in document.getElementsByTagName('post'):

+    timep = post.attributes['time'].value.replace('T',' ').replace('Z','')

+    attributes = {'time':timep}

+    for attributename in ('href','description','extended','tag'):

+        attributes[attributename] = u""

+        try:

+            attributes[attributename] = post.attributes[attributename].value

+        except KeyError:

+            pass  # Value not found. Nevermind.

+    # Strip ridiculously long page titles:

+    attributes['description'] = attributes['description'][:150]

+    posts[timep] = attributes

+    

+# Take the list of posts (chronological order) and build HTML

+htmlbody = u""

+for timep in reversed(sorted(posts.keys())):

+    htmlbody += (u'<span class="d"><a href="%(href)s">%(description)s</a></span> - <span class="l">'

+                +u'%(href)s</span><br /><span class="n">%(extended)s (Tags: %(tag)s)</span>'

+                +u'<br /><br />\n') % posts[timep]

+

+htmlout=u'''

+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >

+   <head>

+       <title>Bookmarks %s</title>

+       <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />

+       <link type="text/css" href="favs.css" rel="stylesheet" />

+   </head>

+   <body>    <h1>Bookmarks %s</h1>

+    <p>

+    %s

+    </p>

+    </body>

+    </html>

+''' % (export_date,export_date,htmlbody)

+file = open('favs.html','w+b')

+file.write(htmlout.encode('UTF-8'))

+file.close()

+

+print "Done."

blob - /dev/null
blob + d433240b53a6cd9ca44dfd9e76ece4afd3102522 (mode 644)
--- /dev/null
+++ delxml/delxmloriginal.py
@@ -0,0 +1,68 @@
+#!/usr/bin/python

+# -*- coding: iso-8859-1 -*-

+import datetime, time

+import xml.dom.minidom

+# 

+# delxml2html.py  version 1.0.0

+# del.icio.us XML export to HTML converter.

+#

+# This program takes the XML export of your bookmarks

+# and creates an HTML page from it.

+#

+# Instructions:

+# 

+#   1) Go to http://del.icio.us/api/posts/all

+#   2) Enter your del.icio.us login and password

+#   3) Save the page as all.xml

+#   4) Run this program

+#   5) You have your bookmarks in favs.html

+#

+# Requirements:

+#     - a del.icio.us account.

+#     - Python 2.4 or later.

+#

+# License: This program is public domain.

+#

+# Author: Sébastien SAUVAGE (webmaster of http://sebsauvage.net)

+#

+print 'Reading all.xml and writing favs.html...'

+document = xml.dom.minidom.parse('all.xml')

+attrv = document.getElementsByTagName('posts')[0].attributes['update'].value

+export_date = attrv.replace('T',' ').replace('Z','')[:10]

+posts = {}

+# Get all posts, put them in a dictionnary (key = date/time of post) 

+for post in document.getElementsByTagName('post'):

+    timep = post.attributes['time'].value.replace('T',' ').replace('Z','')

+    attributes = {'time':timep}

+    for attributename in ('href','description','extended','tag'):

+        attributes[attributename] = u""

+        try:

+            attributes[attributename] = post.attributes[attributename].value

+        except KeyError:

+            pass  # Value not found. Nevermind.

+    # Strip ridiculously long page titles:

+    attributes['description'] = attributes['description'][:150]

+    posts[timep] = attributes

+    

+# Take the list of posts (chronological order) and build HTML

+htmlbody = u""

+for timep in reversed(sorted(posts.keys())):

+    htmlbody += (u'<a href="%(href)s"><b>%(description)s</b></a> - <small>'

+                +u'%(href)s</small><br><dd>%(extended)s (Tags: %(tag)s)</dd>'

+                +u'<br><br>\n') % posts[timep]

+

+htmlout=u'''<html><head>

+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

+<style type="text/css"><!--body{

+font-family:"Trebuchet MS",Verdana,Arial,Helvetica,sans-serif;font-size:10pt;}

+--></style> <title>Bookmarks %s</title></head><body><h1>Bookmarks %s</h1><body>

+%s

+</body>

+</html>

+''' % (export_date,export_date,htmlbody)

+

+file = open('favs.html','w+b')

+file.write(htmlout.encode('UTF-8'))

+file.close()

+

+print "Done."

blob - /dev/null
blob + 7d1f39e31d87086851537addff1db589d8ff78d3 (mode 644)
--- /dev/null
+++ delxml/index.php
@@ -0,0 +1,188 @@
+<?php
+$head['css'][0]['filename']='code';
+$titre='Delxml2html';
+require'../autres/source-haut.php'?>
+<h1>Utiliser le programme "delxml2html".</h1>
+<p class="pintro">Ce programme vous  permet, si vous avez un compte del.icio.us,  de mettre tous vos marques pages en une seule page html, que vous  pouvez
+  ensuite mettre sur votre site.
+  <br />  J'ai rédigé quelques instructions pour montrer  comment  utiliser le programme, réalisé par
+  Sébastien Sauvage : <a href="http://www.sebsauvage.net/" hreflang="fr">http://www.sebsauvage.net/</a>.
+</p>
+<h2 id="instructions">Instructions</h2>
+<ol>
+  <li>Rendez-vous sur 
+  <a href="http://del.icio.us/api/posts/all/" hreflang="en">http://del.icio.us/api/posts/all/</a></li>
+  <li>Entrez votre login et votre mot de passe del.icio.us</li>
+  <li>Enregistrez la page sous le nom "all.xml" (appuyez sur [Ctrl] + S ou allez dans le menu Fichier &gt; Enregistrer sous)</li>
+  <li>Enregistrez le programme dans le m&ecirc;me dossier que le fichier "all.xml"</li>
+  <li>Lancez le programme</li>
+  <li>Si vous utilisez le programme modifié, enregistrez le  fichier CSS dans un fichier nommé "favs.css" que vous placerez dans le m&ecirc;me répertoire que "favs.html"</li>
+  <li>C'est bon ! Vous avez votre page favs.html, avec tous vos favoris en un seule page</li>
+  <li>Mettez &agrave; jour de temps en temps en ré-enregistrant le fichier "all.xml"</li>
+</ol>
+<h2 id="code">Code du programme</h2>
+<p>Programme original (<a  id="codeoriginal" href="delxmloriginal.py">Télécharger au format Python</a>) (<a hreflang="fr" href="http://sebsauvage.net/python/programs.html#delxml2html">http://sebsauvage.net/python/programs.html#delxml2html</a>) :
+</p>
+<pre>#!/usr/bin/python
+# -*- coding: iso-8859-1 -*-
+import datetime, time
+import xml.dom.minidom
+# 
+# delxml2html.py  version 1.0.0
+# del.icio.us XML export to HTML converter.
+#
+# This program takes the XML export of your bookmarks
+# and creates an HTML page from it.
+#
+# Instructions:
+# 
+#   1) Go to http://del.icio.us/api/posts/all
+#   2) Enter your del.icio.us login and password
+#   3) Save the page as all.xml
+#   4) Run this program
+#   5) You have your bookmarks in favs.html
+#
+# Requirements:
+#     - a del.icio.us account.
+#     - Python 2.4 or later.
+#
+# License: This program is public domain.
+#
+# Author: Sébastien SAUVAGE (webmaster of http://sebsauvage.net)
+#
+print 'Reading all.xml and writing favs.html...'
+document = xml.dom.minidom.parse('all.xml')
+attrv = document.getElementsByTagName('posts')[0].attributes['update'].value
+export_date = attrv.replace('T',' ').replace('Z','')[:10]
+posts = {}
+# Get all posts, put them in a dictionnary (key = date/time of post) 
+for post in document.getElementsByTagName('post'):
+    timep = post.attributes['time'].value.replace('T',' ').replace('Z','')
+    attributes = {'time':timep}
+    for attributename in ('href','description','extended','tag'):
+        attributes[attributename] = u""
+        try:
+            attributes[attributename] = post.attributes[attributename].value
+        except KeyError:
+            pass  # Value not found. Nevermind.
+    # Strip ridiculously long page titles:
+    attributes['description'] = attributes['description'][:150]
+    posts[timep] = attributes
+    
+# Take the list of posts (chronological order) and build HTML
+htmlbody = u""
+for timep in reversed(sorted(posts.keys())):
+    htmlbody += (u'&lt;a href="%(href)s"&gt;&lt;b&gt;%(description)s&lt;/b&gt;&lt;/a&gt; - &lt;small&gt;'
+                +u'%(href)s&lt;/small&gt;&lt;br&gt;&lt;dd&gt;%(extended)s (Tags: %(tag)s)&lt;/dd&gt;'
+                +u'&lt;br&gt;&lt;br&gt;\n') % posts[timep]
+
+htmlout=u'''&lt;html&gt;&lt;head&gt;
+&lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;
+&lt;style type="text/css"&gt;&lt;!--body{
+font-family:"Trebuchet MS",Verdana,Arial,Helvetica,sans-serif;font-size:10pt;}
+--&gt;&lt;/style&gt; &lt;title&gt;Bookmarks %s&lt;/title&gt;&lt;/head&gt;&lt;body&gt;&lt;h1&gt;Bookmarks %s&lt;/h1&gt;&lt;body&gt;
+%s
+&lt;/body&gt;
+&lt;/html&gt;
+''' % (export_date,export_date,htmlbody)
+
+file = open('favs.html','w+b')
+file.write(htmlout.encode('UTF-8'))
+file.close()
+
+print "Done."</pre>
+<p id="codemodifie">Programme modifié (<a href="delxml2html.py">Télécharger au format Python</a>) :<br />
+Modifications apportées :
+</p>
+<ul>
+  <li>Respect des normes du W3C</li>
+  <li>Version xhtml1.0 strict</li>
+  <li>Utilisation d'une feuile de style CSS</li>
+</ul>
+<pre>#!/usr/bin/python
+# -*- coding: iso-8859-1 -*-
+import datetime, time
+import xml.dom.minidom
+# 
+# delxml2html.py  version 1.0.0
+# del.icio.us XML export to HTML converter.
+#
+# This program takes the XML export of your bookmarks
+# and creates an HTML page from it.
+#
+# Instructions:
+# 
+#   1) Go to http://del.icio.us/api/posts/all
+#   2) Enter your del.icio.us login and password
+#   3) Save the page as all.xml
+#   4) Run this program
+#   5) You have your bookmarks in favs.html
+#
+# Requirements:
+#     - a del.icio.us account.
+#     - Python 2.4 or later.
+#
+# License: This program is public domain.
+#
+# Author: Sébastien SAUVAGE (webmaster of http://sebsauvage.net)
+#
+# Ce programme a été modifé.
+#
+# Modifications apportées :
+#
+#   -Respect des normes du W3C
+#   -Version xhtml 1.0 Strict
+#   -Utilisation d'une feuille de style CSS.
+#
+print 'Reading all.xml and writing favs.html...'
+document = xml.dom.minidom.parse('all.xml')
+attrv = document.getElementsByTagName('posts')[0].attributes['update'].value
+export_date = attrv.replace('T',' ').replace('Z','')[:10]
+posts = {}
+# Get all posts, put them in a dictionnary (key = date/time of post) 
+for post in document.getElementsByTagName('post'):
+    timep = post.attributes['time'].value.replace('T',' ').replace('Z','')
+    attributes = {'time':timep}
+    for attributename in ('href','description','extended','tag'):
+        attributes[attributename] = u""
+        try:
+            attributes[attributename] = post.attributes[attributename].value
+        except KeyError:
+            pass  # Value not found. Nevermind.
+    # Strip ridiculously long page titles:
+    attributes['description'] = attributes['description'][:150]
+    posts[timep] = attributes
+    
+# Take the list of posts (chronological order) and build HTML
+htmlbody = u""
+for timep in reversed(sorted(posts.keys())):
+    htmlbody += (u'&lt;span class="d"&gt;&lt;a href="%(href)s"&gt;%(description)s&lt;/a&gt;&lt;/span&gt; - &lt;span class="l"&gt;'
+                +u'%(href)s&lt;/span&gt;&lt;br /&gt;&lt;span class="n"&gt;%(extended)s (Tags: %(tag)s)&lt;/span&gt;'
+                +u'&lt;br /&gt;&lt;br /&gt;\n') % posts[timep]
+
+htmlout=u'''
+&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
+&lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"&gt;
+   &lt;head&gt;
+       &lt;title&gt;Bookmarks %s&lt;/title&gt;
+       &lt;meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" /&gt;
+       &lt;link type="text/css" href="favs.css" rel="stylesheet" /&gt;
+   &lt;/head&gt;
+   &lt;body&gt;    &lt;h1&gt;Bookmarks %s&lt;/h1&gt;
+    &lt;p&gt;
+    %s
+    &lt;/p&gt;
+    &lt;/body&gt;
+    &lt;/html&gt;
+''' % (export_date,export_date,htmlbody)
+file = open('favs.html','w+b')
+file.write(htmlout.encode('UTF-8'))
+file.close()
+
+print "Done."</pre>
+<p id="codecss">Et le fichier CSS qui va avec le programme modifié :</p>
+<pre>body{font-family:"Trebuchet MS",Verdana,Arial,Helvetica,sans-serif;font-size:10pt;}
+p span.d{font-weight:bold;}
+p span.l{font-size:0.8em;}
+p span.n{margin-left:3%;}</pre>
+<?php require'../autres/source-bas.php'?>
blob - /dev/null
blob + 952ee297a725c80996a5f0b9620ec6e78c1676be (mode 644)
--- /dev/null
+++ extract.php
@@ -0,0 +1,9 @@
+<?php
+//Extrait de la documentation de la class.
+require_once('pclzip.lib.php');
+$archive = new PclZip('wordpress-4.8.2-fr_FR.zip'); //METTRE LE VRAI NOM DU ZIP ;)
+//Extrait dans le repertoire courant.
+if ($archive->extract() == 0) {
+      die("Error : ".$archive->errorInfo(true));
+}
+?>
blob - /dev/null
blob + e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 (mode 644)
blob - /dev/null
blob + 7e5ea2571816f2c98829176a89f574a1a6604c93 (mode 644)
--- /dev/null
+++ html.php
@@ -0,0 +1,1637 @@
+<?php
+$titre='Conseils et astuces pour vos sites WEB';
+$head['css'][0]['filename']='stylemotcle';
+require'autres/source-haut.php';
+?>
+<h1>Conseils et astuces pour vos sites</h1>
+    <hr />
+    <h2>
+      <a id="divers"></a>divers
+    </h2>
+    <h4>
+      <a  id="sitemap"></a>faire une sitemap (Plan du
+      site)
+    </h4>
+
+    <div style="text-align: center;">
+      <span style="font-style: italic;">Attention : ce tutoriel
+      vous apprendra a faire une sitemap, pas une googlemap. Si
+      c'est ce que vous voulez, il existe le logiciel gratuit
+      YoodaMAP.</span><br />
+      <span style="font-style: italic;">Vous pouvez voir aussi :
+      <a href=
+      "http://www.commentcamarche.net/faq/sujet-3649-plan-du-site-sitemap-consultable-avec-navibar-pour-firefox">
+      http://www.commentcamarche.net/faq/sujet-3649-plan-du-site-sitemap-consultable-avec-navibar-pour-firefox</a></span>
+    </div>
+    <p>
+      sur certains sites, (dont le mien) si vous
+      utilisez&nbsp;<span class="motcle">Firefox muni de
+      l'extension Navibar</span>, vous avez déja vu un <span class=
+      "motcle">plan du site dans le panneau latéral</span>. Vous
+      trouvez ceci très pratique et vous aimeriez en faire profiter
+      les visiteurs de votre site mais vous ne savez pas comment
+      faire ? Ce n'est pas très compliqué. Il existe des logiciels
+      qui font ceci en quelques clics, mais ils sont payants. Ne
+      vous fiez pas non plus aux versions d'évaluation de ces
+      logiciels, la plupart ont des restrictions assz
+      contraignantes(ex: sitemap pro : seulement 6 urls!!).
+      Toutefois si vous trouvez un logiciel gratuit qui fait ca
+      bien, vous pouvez <a href="mail/">me contacter</a>
+
+    </p>
+    <p>
+      vous devrez faire un fichier que vous nommerez "<span class=
+      "motcle">sitemap.rdf</span>" et que vous deposerez a la
+      racine de votre site. Vous pouvez faire ce fichier avec le
+      bloc-notes mais cest plus pratique d'avoir un logiciel qui
+      <span class="motcle">colore et range le code</span>, comme
+      <a href="logiciels/pspad.php">PSPad editor</a>. Si vous
+      n'avez pas ce logiciel ou un logiciel similaire je vous
+      invite à le télécharger. En plus il fait aussi xslt, rss,
+      html... et une multitude d'autres formats. Si vous voulez
+      vous pouvez également regarder la <span class=
+      "motcle">sitemap de mon site</span> : <a href=
+      "sitemap.rdf">sitemap.rdf</a>. Appuyez sur Ctrl+U dans
+      Firefox pour voir son code source.
+    </p>
+
+    <p>
+      quand vous avez téléchargé et installé le logiciel, crééz un
+      nouveau fichier texte que vous nommerez "sitemap.rdf", puis
+      ouvrez le avec votre éditeur. Vous voyez une page vide. C'est
+      normal pour le moment. Nous allons maintenant remplir cette
+      page. Tout d'abord il faut indiquer la version de votre
+      fichier, c'est à dire la première version. Vous devez écrire
+      sur la première ligne de votre fichier le code
+    </p>
+    <div class="codexml">
+      <span class="xml1">&lt;?xml version="1.0"?&gt;</span>
+    </div>
+    <p>
+      qui indique que la version du fichier xml est la version
+      numéro 1.<br />
+
+    </p>
+    <p>
+      vous devez ensuite indiquer le code qui suit : ce sont
+      diverses adresses en rapport avec la validité de votre
+      fichier.
+    </p>
+    <div class="codexml">
+      <span class="xml2">&lt;rdf:RDF</span> <span class=
+      "xml3">xmlns</span><span class="xml2">="</span><span class=
+      "xml4">http://www.w3.org/1999/02/22-rdf-syntax-ns#</span><span class="xml2">"</span><br />
+
+      &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span class=
+      "xml3">xmlns:rdf</span><span class=
+      "xml2">="</span><span class=
+      "xml4">http://www.w3.org/1999/02/22-rdf-syntax-ns#</span><span class="xml2">"</span><br />
+
+      &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span class=
+      "xml3">xmlns:map</span><span class=
+      "xml2">="</span><span class=
+      "xml4">http://www.oaklett.org/map/1.0#</span><span class=
+      "xml2">"</span><br />
+
+      &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span class=
+      "xml3">xmlns:dc</span><span class=
+      "xml2">="</span><span class="xml4">http://purl.org/dc/elements/1.1/</span><span class="xml2">"&gt;</span>
+    </div>
+    <p>
+      vous avez terminé la première partie. Maintenant nous allons
+      faire votre sitemap. Une sitemap est présentée sous forme
+      d'<span class="motcle">arborescence</span> : des dossiers
+      contenant des fichiers ou d'autres dossiers.
+    </p>
+
+    <p>
+      nous allons indiquer le <span class="motcle">contenu</span>
+      de votre sitemap. Vous n'êtes pas obligé d'indiquer tout le
+      contenu de votre site dans la sitemap, c'est vous qui
+      choisissez ce que les visiteurs pourront voir ou pas. Vous
+      pouvez aussi&nbsp;y mettre des <span class="motcle">liens
+      externes</span> (vers d'autres sites).Vous choisissez
+      également <span class="motcle">l'organisation des dossiers et
+      des fichiers</span> de votre sitemap : elle ne dépend pas de
+      celle de votre site.
+    </p>
+    <p>
+
+      la première partie de ma sitemap est :
+    </p>
+    <div class="codexml">
+      <span class="xml2">&lt;rdf:Description</span> <span class=
+      "xml3">rdf:about</span><span class=
+      "xml2">="</span><span class=
+      "xml4">urn:sitemap:root</span><span class=
+      "xml2">"&gt;</span><br />
+      <span class="xml2">&lt;map:container&gt;</span><br />
+      <span class="xml2">&lt;rdf:Seq&gt;</span><br />
+
+      <span class="xml2">&lt;rdf:li</span> <span class=
+      "xml3">rdf:resource</span><span class=
+      "xml2">="</span><span class=
+      "xml4">syl:home</span><span class="xml2">"/&gt;</span><br />
+      <span class="xml2">&lt;rdf:li</span> <span class=
+      "xml3">rdf:resource</span><span class=
+      "xml2">="</span><span class=
+      "xml4">syl:cestquoi</span><span class=
+      "xml2">"/&gt;</span><br />
+      <span class="xml2">&lt;rdf:li</span> <span class=
+      "xml3">rdf:resource</span><span class=
+      "xml2">="</span><span class=
+      "xml4">syl:configurer</span><span class=
+      "xml2">"/&gt;</span><br />
+
+      <span class="xml2">&lt;rdf:li</span> <span class=
+      "xml3">rdf:resource</span><span class=
+      "xml2">="</span><span class=
+      "xml4">syl:logiciels</span><span class=
+      "xml2">"/&gt;</span><br />
+      <span class="xml2">&lt;rdf:li</span> <span class=
+      "xml3">rdf:resource</span><span class=
+      "xml2">="</span><span class=
+      "xml4">syl:temp</span><span class="xml2">"/&gt;</span><br />
+      [...]<span style="font-style: italic;">etc</span><br />
+
+      <span class="xml2">&lt;/rdf:Seq&gt;</span><br class="xml2" />
+      <span class="xml2">&lt;/map:container&gt;</span><br class=
+      "xml2" />
+      <span class="xml2">&lt;/rdf:Description&gt;</span>
+    </div>
+    <p>
+      ? Ca veut dire quoi tout ce <span class=
+      "motcle">charabia</span> ?<br />
+
+      Ne vous inquiétez pas. Ceci vous paraitra beaucoup plus clair
+      une fois que vous aurez fini de lire ce tutoriel. Je vous
+      explique ce code :
+    </p>
+    <div class="codexml">
+      <span class="xml2">&lt;rdf:Description</span> <span class=
+      "xml3">rdf:about</span><span class=
+      "xml2">="</span><span class=
+      "xml4">urn:sitemap:root</span><span class="xml2">"&gt;</span>
+    </div>
+    <p>
+
+      Cette ligne est&nbsp;<span class="motcle">obligatoire</span>
+      pour une sitemap. Elle indique le <span class="motcle">début
+      de l'arborescence</span> et les éléments qui seront au
+      "premier niveau"(disons ca comme ca).<br />
+      <br />
+    </p>
+    <div class="codexml">
+      <span class="xml2">&lt;map:container&gt;</span><br />
+
+      <span class="xml2">&lt;rdf:Seq&gt;</span>
+    </div>
+    <p>
+      Indique le <span class="motcle">début du contenu</span> de la
+      sitemap, de ce que les visiteurs de votre site verront.
+      Obligatoire également.<br />
+      <br />
+    </p>
+
+    <div class="codexml">
+      <span class="xml2">&lt;rdf:li</span> <span class=
+      "xml3">rdf:resource</span><span class=
+      "xml2">="</span><span class=
+      "xml4">syl:home</span><span class="xml2">"/&gt;</span><span class="xml2"><br />
+
+      &lt;rdf:li</span> <span class=
+      "xml3">rdf:resource</span><span class=
+      "xml2">="</span><span class=
+      "xml4">syl:cestquoi</span><span class=
+      "xml2">"/&gt;</span><br />
+
+      <span class="xml2">&lt;rdf:li</span> <span class=
+      "xml3">rdf:resource</span><span class=
+      "xml2">="</span><span class=
+      "xml4">syl:configurer</span><span class="xml2">"/&gt;</span>
+    </div>
+    <p>
+      Veut dire :&nbsp;l'élément "syl:home" sera affiché en
+      premier, puis celui "syl:cestquoi", etc...<br />
+      Obligatoire aussi, a moins de ne rien vouloir mettre dans sa
+      sitemap...<br />
+
+      <br />
+    </p>
+    <div class="codexml">
+      <span class="xml2">&lt;/rdf:Seq&gt;</span><br class="xml2" />
+      <span class="xml2">&lt;/map:container&gt;</span><br class=
+      "xml2" />
+      <span class="xml2">&lt;/rdf:Description&gt;</span>
+    </div>
+
+    <p>
+      Indique la fin du contenu de votre sitemap.
+      Obligatoire.<br />
+    </p>
+    <p>
+      c'est maintenant que cela devient intéressant. Je vous ai
+      parlé "d'éléments", nous allons maintenant les rajouter dans
+      votre sitemap. Nous allons par exemple indiquer le contenu de
+      l'élément
+    </p>
+    <div class="codexml">
+      <span class="xml2">&lt;rdf:li</span> <span class=
+      "xml3">rdf:resource</span><span class=
+      "xml2">="</span><span class=
+      "xml4">syl:home</span><span class="xml2">"/&gt;</span>
+
+    </div>
+    <p>
+      il faut mettre du code qui donnera le titre du contenu ainsi
+      qu'un lien vers la page correspondante. Le code
+    </p>
+    <div class="codexml">
+      <span class="xml2">&lt;rdf:Description</span> <span class=
+      "xml3">rdf:about</span><span class=
+      "xml2">="</span><span class=
+      "xml3 xml4">syl:home</span><span class=
+      "xml2">"&gt;</span><br />
+
+      &nbsp;&nbsp; &nbsp;<span class=
+      "xml2">&lt;dc:title&gt;</span>Ssylvainsab -
+      Accueil<span class="xml2">&lt;/dc:title&gt;</span><br />
+      &nbsp;&nbsp; &nbsp;<span class=
+      "xml2">&lt;dc:identifier&gt;</span>http://ssylvainsab.free.fr/index.html<span class="xml2">&lt;/dc:identifier&gt;</span><br />
+
+      <span class="xml2">&lt;/rdf:Description&gt;</span>
+    </div>
+
+    <p>
+      Indique le contenu de l'élément "syl:home"<br />
+    </p>
+    <p>
+      que veut dire ce code?
+    </p>
+    <div class="codexml">
+      <span class="xml2">&lt;rdf:Description</span> <span class=
+      "xml3">rdf:about</span><span class="xml2">="<span class=
+      "xml4">syl:home</span></span><span class="xml2">"&gt;</span>
+
+    </div>
+    <p>
+      Indique le début d'un élément et dit : Cet élément est
+      l'élément "syl:home".<br />
+    </p>
+    <div class="codexml">
+      &nbsp;&nbsp; &nbsp;<span class=
+      "xml2">&lt;dc:title&gt;</span>Ssylvainsab -
+      Accueil<span class="xml2">&lt;/dc:title&gt;</span>
+
+    </div>
+    <p>
+      Veut dire : Le titre de cet élément est "Ssylvainsab -
+      Accueil"<br />
+      <br />
+    </p>
+    <div class="codexml">
+      &nbsp;&nbsp; &nbsp;<span class=
+      "xml2">&lt;dc:identifier&gt;</span>http://ssylvainsab.free.fr/index.html<span class="xml2">&lt;/dc:identifier&gt;</span>
+
+    </div>
+    <p>
+      Indique la page vers laquelle dirige l'élément.<br />
+      <br />
+    </p>
+    <div class="codexml">
+      <span class="xml2">&lt;/rdf:Description&gt;</span>
+    </div>
+
+    <p>
+      Indique la fin du contenu de l'élément.
+    </p>
+    <p>
+      donc le code :
+    </p>
+    <div class="codexml">
+      <span class="xml1">&lt;?xml version="1.0"?&gt;</span><br />
+      <br />
+
+      <span class="xml2">&lt;rdf:RDF</span> <span class=
+      "xml3">xmlns</span><span class="xml2">="</span><span class=
+      "xml4">http://www.w3.org/1999/02/22-rdf-syntax-ns#</span><span class="xml2">"</span><br />
+
+      &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span class=
+      "xml3">xmlns:rdf</span><span class=
+      "xml2">="</span><span class=
+      "xml4">http://www.w3.org/1999/02/22-rdf-syntax-ns#</span><span class="xml2">"</span><br />
+
+      &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span class=
+      "xml3">xmlns:map</span><span class=
+      "xml2">="</span><span class=
+      "xml4">http://www.oaklett.org/map/1.0#</span><span class=
+      "xml2">"</span><br />
+      &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span class=
+      "xml3">xmlns:dc</span><span class=
+      "xml2">="</span><span class="xml4">http://purl.org/dc/elements/1.1/</span><span class="xml2">"&gt;</span>
+
+      <span class="xml2">&nbsp;&nbsp;&nbsp;
+      &lt;rdf:Description</span> <span class=
+      "xml3">rdf:about</span><span class=
+      "xml2">="</span><span class=
+      "xml4">urn:sitemap:root</span><span class=
+      "xml2">"&gt;</span><br />
+      <span class="xml2">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
+      &lt;map:container&gt;</span><br />
+      <span class="xml2">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
+
+      &nbsp;&nbsp;&nbsp; &lt;rdf:Seq&gt;</span><br />
+      <span class="xml2">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
+      &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;rdf:li</span>
+      <span class="xml3">rdf:resource</span><span class=
+      "xml2">="</span><span class=
+      "xml4">syl:home</span><span class="xml2">"/&gt;</span><br />
+
+      <span class="xml2">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
+      &nbsp;&nbsp;&nbsp; &lt;/rdf:Seq&gt;</span><br class="xml2" />
+      <span class="xml2">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
+      &lt;/map:container&gt;</span><br class="xml2" />
+      <span class="xml2">&nbsp;&nbsp;&nbsp;
+      &lt;/rdf:Description&gt;</span> <span class=
+      "xml2">&lt;rdf:Description</span> <span class=
+      "xml3">rdf:about</span><span class=
+      "xml2">="</span><span class=
+      "xml3 xml4">syl:home</span><span class=
+      "xml2">"&gt;</span><br />
+
+      &nbsp;&nbsp; &nbsp;<span class=
+      "xml2">&lt;dc:title&gt;</span>Ssylvainsab -
+      Accueil<span class="xml2">&lt;/dc:title&gt;</span><br />
+      &nbsp;&nbsp; &nbsp;<span class=
+      "xml2">&lt;dc:identifier&gt;</span>http://ssylvainsab.free.fr/index.html<span class="xml2">&lt;/dc:identifier&gt;</span><br />
+
+      <span class="xml2">&lt;/rdf:Description&gt;<br />
+      <br />
+
+      &lt;/rdf:RDF&gt;</span>
+    </div>
+    <p>
+      Veut dire : La version de ce fichier est la version 1.<br />
+      Le contenu de la sitemap sera l'élément "syl:home".<br />
+      Le titre de l'élément "syl:home" est Ssylvainsab - Accueil et
+      c'est un lien vers la page
+      http://ssylvainsab.free.fr/index.html.
+    </p>
+    <p>
+
+      evidemment une sitemap avec seulement la page d'accueil
+      n'aurait pratiquement aucun intêret. Il vous faut donc
+      rajouter des éléments.
+    </p>
+    <p>
+      nous allons voir ici comment faire pour ajouter des dossiers
+      a votre sitemap. Par exemple, nous voulons que la sitemap
+      contienne la page d'accueil et un dossier de photos. il
+      faudra entrer le code :
+    </p>
+    <div class="codexml">
+      [...]<br />
+      <br />
+      <span class="xml2">&lt;rdf:Description</span> <span class=
+      "xml3">rdf:about</span><span class=
+      "xml2">="</span><span class=
+      "xml4">urn:sitemap:root</span><span class=
+      "xml2">"&gt;</span>&lt;!--Le début de la sitemap--&gt;<br />
+
+      <span class="xml2">&nbsp;&nbsp;&nbsp;
+      &lt;map:container&gt;</span>&lt;!--Le contenu de la
+      sitemap--&gt;<br />
+      <span class="xml2">&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;
+      &lt;rdf:Seq&gt;</span><br />
+      <span class="xml2">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;
+      &nbsp;&nbsp; &nbsp; &lt;rdf:li</span> <span class=
+      "xml3">rdf:resource</span><span class=
+      "xml2">="</span><span class=
+      "xml4">pagedaccueil</span><span class=
+      "xml2">"/&gt;</span>&lt;!--On affichera en premier l'element
+      "pagedaccueil"--&gt;<br />
+
+      <span class="xml2">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
+      &nbsp;&nbsp;&nbsp; &lt;rdf:li</span> <span class=
+      "xml3">rdf:resource</span><span class=
+      "xml2">="</span><span class="xml4">photos</span><span class=
+      "xml2">"/&gt;</span>&lt;!--On affiche ensuite l'element
+      "photos"--&gt;<br />
+      <span class="xml2">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
+      &lt;/rdf:Seq&gt;</span><br class="xml2" />
+
+      <span class="xml2">&nbsp;&nbsp;&nbsp;
+      &lt;/map:container&gt;</span>&lt;!--On ferme le contenu de la
+      sitemap--&gt;<br class="xml2" />
+      <span class="xml2">&lt;/rdf:Description&gt;</span>
+      <span class="xml2">&lt;rdf:Description</span> <span class=
+      "xml3">rdf:about</span><span class=
+      "xml2">="</span><span class=
+      "xml3 xml4">pagedaccueil</span><span class=
+      "xml2">"&gt;</span>&lt;!--Ceci est l'element
+      "pagedaccueil"--&gt;<br />
+
+      &nbsp;&nbsp; &nbsp;<span class=
+      "xml2">&lt;dc:title&gt;</span>Accueil<span class=
+      "xml2">&lt;/dc:title&gt;</span>&lt;!--Le titre de cet element
+      est "Accueil"--&gt;<br />
+      &nbsp;&nbsp; &nbsp;<span class=
+      "xml2">&lt;dc:identifier&gt;</span>http://www.monsite.com/index.html<span class="xml2">&lt;/dc:identifier&gt;</span>&lt;!--Il
+      y a un lien vers ma page d'accueil sur cet
+      element--&gt;<br />
+      <span class="xml2">&lt;/rdf:Description&gt;</span>&lt;!--On
+      ferme l'element "pagedaccueil"--&gt;<br />
+
+      <span class="xml2">&lt;rdf:Description</span> <span class=
+      "xml3">rdf:about</span><span class=
+      "xml2">="</span><span class=
+      "xml3 xml4">photos</span><span class=
+      "xml2">"&gt;</span>&lt;!--Ceci est l'element "photos". C'est
+      un dossier avec mes photos--&gt;<br />
+      <span class="xml2">&nbsp;&nbsp;&nbsp;
+      &lt;dc:title&gt;</span>Les Photos de Mes Vacances<span class=
+      "xml2">&lt;/dc:title&gt;</span>&lt;!--Le titre du dossier est
+      "Les Photos de Mes Vacances--&gt;<br />
+
+      &nbsp;&nbsp; &nbsp;<span class=
+      "xml2">&lt;dc:identifier&gt;</span>http://www.monsite.com/photos/index.html<span class="xml2">&lt;/dc:identifier&gt;</span>&lt;!--Il
+      y a un lien vers la page de mes photos sur cet element
+      --&gt;<br />
+      <span class="xml2">&nbsp;&nbsp;&nbsp;</span> <span class=
+      "xml2">&lt;map:container&gt;</span>&lt;!--Le contenu de
+      l'element "photos"--&gt;<br />
+      <span class="xml2">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
+      &lt;rdf:Seq&gt; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
+
+      &nbsp;&nbsp;&nbsp;&nbsp;</span> <span class=
+      "xml2">&lt;rdf:li</span> <span class=
+      "xml3">rdf:resource</span><span class=
+      "xml2">="</span><span class="xml4">photo1</span><span class=
+      "xml2">"/&gt;</span>&lt;!--On affiche d'abord la premiere
+      photo--&gt;<br />
+      <span class="xml2">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
+      &nbsp;&nbsp;&nbsp;</span> <span class=
+      "xml2">&lt;rdf:li</span> <span class=
+      "xml3">rdf:resource</span><span class=
+      "xml2">="</span><span class="xml4">photo2</span><span class=
+      "xml2">"/&gt;</span>&lt;!--Puis la deuxieme--&gt;<br />
+
+      <span class="xml2">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
+      &nbsp;&nbsp;&nbsp;</span> <span class=
+      "xml2">&lt;rdf:li</span> <span class=
+      "xml3">rdf:resource</span><span class=
+      "xml2">="</span><span class="xml4">photo3</span><span class=
+      "xml2">"/&gt;</span>&lt;!--puis la troisieme--&gt;<br />
+      <span class="xml2">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
+      &nbsp;&nbsp;&nbsp;</span> <span class=
+      "xml2">&lt;rdf:li</span> <span class=
+      "xml3">rdf:resource</span><span class=
+      "xml2">="</span><span class="xml4">photo4</span><span class=
+      "xml2">"/&gt;</span>&lt;!--...etc--&gt;<br />
+
+      <span class="xml2">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
+      &nbsp;&nbsp;&nbsp;</span> <span class=
+      "xml2">&lt;rdf:li</span> <span class=
+      "xml3">rdf:resource</span><span class=
+      "xml2">="</span><span class="xml4">photo5</span><span class=
+      "xml2">"/&gt;</span>&lt;!--etc--&gt;<br />
+      <span class="xml2">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
+      &lt;/rdf:Seq&gt;<br />
+
+      &nbsp;&nbsp;&nbsp; &lt;/map:container&gt;</span>&lt;!--On
+      ferme le contenu du dossier--&gt;<span class="xml2"><br />
+      &lt;/rdf:Description&gt;</span><br />
+      <span class="xml2"><br />
+      &lt;rdf:Description</span> <span class=
+      "xml3">rdf:about</span><span class=
+      "xml2">="</span><span class=
+      "xml3 xml4">photo1</span><span class=
+      "xml2">"&gt;</span>&lt;!--Ceci est le contenu de l'element
+      "photo1"--&gt;<br />
+
+      &nbsp;&nbsp; &nbsp;<span class=
+      "xml2">&lt;dc:title&gt;</span>Moi a la plage<span class=
+      "xml2">&lt;/dc:title&gt;</span>&lt;!--Le titre de cet element
+      est "Moi a la plage"--&gt;<br />
+      &nbsp;&nbsp; &nbsp;<span class=
+      "xml2">&lt;dc:identifier&gt;</span>http://www.monsite.com/photos/premierephoto.jpg<span class="xml2">&lt;/dc:identifier&gt;</span>&lt;!--Il
+      y a un lien vers la photo de moi a la plage dans cet
+      element--&gt;<br />
+      <span class="xml2">&lt;/rdf:Description&gt;</span>&lt;!--On
+      ferme l'element "photo1"--&gt;<br />
+
+      <br />
+      <span class="xml2">&lt;rdf:Description</span> <span class=
+      "xml3">rdf:about</span><span class=
+      "xml2">="</span><span class=
+      "xml3 xml4">photo2</span><span class=
+      "xml2">"&gt;</span>&lt;!--Ceci est le contenu de l'element
+      "photo2"--&gt;<br />
+      &nbsp;&nbsp; &nbsp;<span class=
+      "xml2">&lt;dc:title&gt;</span>Moi a la montagne<span class=
+      "xml2">&lt;/dc:title&gt;</span>&lt;!--Le titre de cet element
+      est "Moi a la montagne"--&gt;<br />
+
+      &nbsp;&nbsp; &nbsp;<span class=
+      "xml2">&lt;dc:identifier&gt;</span>http://www.monsite.com/photos/deuxiemephoto.jpg<span class="xml2">&lt;/dc:identifier&gt;</span>&lt;!--Il
+      y a un lien vers la photo de moi a la montagne dans cet
+      element--&gt;<br />
+      <span class="xml2">&lt;/rdf:Description&gt;</span>&lt;!--On
+      ferme l'element "photo2"--&gt;<br />
+      <br />
+      <span class="xml2">&lt;rdf:Description</span> <span class=
+      "xml3">rdf:about</span><span class=
+      "xml2">="</span><span class=
+      "xml3 xml4">photo3</span><span class=
+      "xml2">"&gt;</span>&lt;!--On ouvre l'element--&gt;<br />
+
+      &nbsp;&nbsp; &nbsp;<span class=
+      "xml2">&lt;dc:title&gt;</span>Moi et mes amis<span class=
+      "xml2">&lt;/dc:title&gt;</span>&lt;!--Le titre est "Moi et
+      mes amis"--&gt;<br />
+      &nbsp;&nbsp; &nbsp;<span class=
+      "xml2">&lt;dc:identifier&gt;</span>http://www.monsite.com/photos/troisiemephoto.jpg<span class="xml2">&lt;/dc:identifier&gt;</span>&lt;!--Il
+      y a un lien vers la photo de moi et mes amis--&gt;<br />
+      <span class="xml2">&lt;/rdf:Description&gt;</span>&lt;!--On
+      ferme l'element--&gt;<br />
+
+      <br />
+      <span class="xml2">&lt;rdf:Description</span> <span class=
+      "xml3">rdf:about</span><span class=
+      "xml2">="</span><span class=
+      "xml3 xml4">photo4</span><span class=
+      "xml2">"&gt;</span>&lt;!--On ouvre l'element--&gt;<br />
+      &nbsp;&nbsp; &nbsp;<span class=
+      "xml2">&lt;dc:title&gt;</span>Mon chien<span class=
+      "xml2">&lt;/dc:title&gt;</span><br />
+
+      &nbsp;&nbsp; &nbsp;<span class=
+      "xml2">&lt;dc:identifier&gt;</span>http://www.monsite.com/photos/monchien.jpg<span class="xml2">&lt;/dc:identifier&gt;</span>&lt;!--photo
+      de mon chien--&gt;<br />
+      <span class="xml2">&lt;/rdf:Description&gt;</span>&lt;!--On
+      ferme l'element--&gt;<br />
+      <br />
+      <span class="xml2">&lt;rdf:Description</span> <span class=
+      "xml3">rdf:about</span><span class=
+      "xml2">="</span><span class=
+      "xml3 xml4">photo5</span><span class=
+      "xml2">"&gt;</span>&lt;!--...etc--&gt;<br />
+
+      &nbsp;&nbsp; &nbsp;<span class=
+      "xml2">&lt;dc:title&gt;</span>Moi<span class=
+      "xml2">&lt;/dc:title&gt;</span><br />
+      &nbsp;&nbsp; &nbsp;<span class=
+      "xml2">&lt;dc:identifier&gt;</span>http://www.monsite.com/photos/photo.jpg<span class="xml2">&lt;/dc:identifier&gt;</span>&lt;!--...etc--&gt;<br />
+
+      <span class=
+      "xml2">&lt;/rdf:Description&gt;</span>&lt;!--etc--&gt;<br />
+
+      <span class="xml2"><br />
+      &lt;/rdf:RDF&gt;</span> [...]
+    </div>
+    <p>
+      voici ce que le visiteur verra lorsqu'il visitera votre site
+      :<br />
+      <img style="border: 1px solid ; width: 297px; height: 253px;"
+      alt="ACCUEIL | PHOTOS&gt; 1 2 3 4 5" src=
+      "img/autres/navibarexemple.jpg" />
+    </p>
+    <p>
+
+      Si vous ne voulez pas mettre de lien sur un dossier, il
+      suffit de mettre une ancre (un dièze) à la place. Exemple :
+    </p>
+    <div class="codexml">
+      <span class="xml2">&lt;rdf:Description</span> <span class=
+      "xml3">rdf:about</span><span class=
+      "xml2">="</span><span class=
+      "xml3 xml4">photos</span><span class=
+      "xml2">"&gt;</span>&lt;!--Ceci est l'element "photos". C'est
+      un dossier avec mes photos--&gt;<br />
+      <span class="xml2">&nbsp;&nbsp;&nbsp;
+      &lt;dc:title&gt;</span>Les Photos de Mes Vacances<span class=
+      "xml2">&lt;/dc:title&gt;</span>&lt;!--Le titre du dossier est
+      "Les Photos de Mes Vacances--&gt;<br />
+
+      &nbsp;&nbsp; &nbsp;<span class=
+      "xml2">&lt;dc:identifier&gt;</span>#<span class=
+      "xml2">&lt;</span><span class=
+      "xml2">/dc:identifier&gt;</span>&lt;!--J'AI MIS UN DIEZE DONC
+      IL N'Y A PAS DE LIENS ATTRIBUE A CE DOSSIER--&gt;<br />
+      <span class="xml2">&nbsp;&nbsp;&nbsp;</span> <span class=
+      "xml2">&lt;map:container&gt;</span>&lt;!--Le contenu de
+      l'element "photos"--&gt;<br />
+      <span class="xml2">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
+      &lt;rdf:Seq&gt; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
+
+      &nbsp;&nbsp;&nbsp;&nbsp;</span> <span class=
+      "xml2">&lt;rdf:li</span> <span class=
+      "xml3">rdf:resource</span><span class=
+      "xml2">="</span><span class="xml4">photo1</span><span class=
+      "xml2">"/&gt;</span>&lt;!--On affiche d'abord la premiere
+      photo--&gt;<br />
+      <span class="xml2">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
+      &nbsp;&nbsp;&nbsp;</span> <span class=
+      "xml2">&lt;rdf:li</span> <span class=
+      "xml3">rdf:resource</span><span class=
+      "xml2">="</span><span class="xml4">photo2</span><span class=
+      "xml2">"/&gt;</span>&lt;!--Puis la deuxieme--&gt;<br />
+
+      <span class="xml2">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
+      &nbsp;&nbsp;&nbsp;</span> <span class=
+      "xml2">&lt;rdf:li</span> <span class=
+      "xml3">rdf:resource</span><span class=
+      "xml2">="</span><span class="xml4">photo3</span><span class=
+      "xml2">"/&gt;</span>&lt;!--puis la troisieme--&gt;<br />
+      <span class="xml2">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
+      &nbsp;&nbsp;&nbsp;</span> <span class=
+      "xml2">&lt;rdf:li</span> <span class=
+      "xml3">rdf:resource</span><span class=
+      "xml2">="</span><span class="xml4">photo4</span><span class=
+      "xml2">"/&gt;</span>&lt;!--...etc--&gt;<br />
+
+      <span class="xml2">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
+      &nbsp;&nbsp;&nbsp;</span> <span class=
+      "xml2">&lt;rdf:li</span> <span class=
+      "xml3">rdf:resource</span><span class=
+      "xml2">="</span><span class="xml4">photo5</span><span class=
+      "xml2">"/&gt;</span>&lt;!--etc--&gt;<br />
+      <span class="xml2">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
+      &lt;/rdf:Seq&gt;<br />
+
+      &nbsp;&nbsp;&nbsp; &lt;/map:container&gt;</span>&lt;!--On
+      ferme le contenu du dossier--&gt;<span class="xml2"><br />
+      &lt;/rdf:Description&gt;</span>
+    </div>
+    <p>
+      vous pouvez faire autant de dossiers et de fichiers que vous
+      voulez à l'interieur d'autant de dossiers que vous voulez.
+      Par contre attention, il ne faut pas mettre d'accent ou
+      d'autre caractere à part "-" ou "_" dans votre fichier, sinon
+      il y aura à la place un point d'interrogation.
+    </p>
+    <p>
+
+      voila, vous savez maintenant comment faire une sitemap. Notez
+      qu'il existe un validateur pour ce type de documents :
+      <a href=
+      "http://www.w3.org/RDF/Validator/">http://www.w3.org/RDF/Validator/</a>
+    </p>
+    <p>
+      Si votre document n'est pas valide, vérifiez :
+    </p>
+    <ul>
+      <li>Que toutes les balises sont bien fermées dans le bon
+      ordre
+      </li>
+      <li>Que vous n'avez pas oublié de guillemets
+      </li>
+
+      <li>Que vous n'avez pas mi un caractère invalide
+      </li>
+    </ul>
+    <h2>
+      <a  id="tableaux"></a>les tableaux
+    </h2>
+    <h4>
+      <a  id="summary"></a>attribut summary
+    </h4>
+    <p>
+
+      Utilisez <span class="motcle">toujours</span> l'attribut
+      "<span class="motcle">summary</span>" dans vos tableaux.
+      C'est une règle pour <span class="motcle">respecter les
+      normes</span> (<a href=
+      "http://www.w3.org/">http://www.w3.org/</a>)
+      d'internet.<br />
+      Cet attribut est une sorte de "alt" pour un tableau.
+    </p>
+    <p>
+
+      L'attribut "<span class="motcle">alt</span>" est le
+      <span class="motcle">texte</span> qui s'affiche <span class=
+      "motcle">à la place d'une image</span> lorqu'elle n'est pas
+      chargée. Par exemple le code html :
+    </p>
+    <div class="code">
+      <span class="code1">&lt;img</span>&nbsp; style="<span class=
+      "code2">width: 150px; height: 35px;</span>" alt="<span class=
+      "code2">html</span>"&nbsp;src="<span class=
+      "code2">http://ssylvainsab.free.fr/img/boutons/btlogiciels.gif</span>"<span class="code1">&gt;</span><br />
+
+      </div>
+    <p>
+      affichera : <img style="width: 110px; height: 36px;" alt=
+      "html" src="img/boutons/btlogiciels.gif" />
+    </p>
+    <p>
+      Cependant <span class="motcle">si la source est
+      éronnée</span> (par exemple en se trompant on met .png au
+      lieu de .gif) :
+    </p>
+
+    <div class="code">
+      <span class="code1">&lt;img</span> style="<span class=
+      "code2">width: 150px; height: 35px;</span>" alt="<span class=
+      "code2">logiciels</span>" src="<span class=
+      "code2">http://ssylvainsab.free.fr/img/boutons/btlogiciels.png</span>"<span class="code1">&gt;</span>
+    </div>
+    <p>
+
+      ce qui sera affiché à l'écran sera : <img style=
+      "width: 150px; height: 35px;" alt="logiciels" src=
+      "img/autres/imgalt.png" /> car le lien vers l'image est
+      erronné.<br />
+      Mais avec l'attribut "alt" on sait quand même de quoi va
+      parler la page. <span class="motcle">Très utile</span>.
+    </p>
+    <p>
+      Si on n'avait <span class="motcle">pas mis d'attribut
+      "alt"</span> ce qui aurait été affiché serait :<br />
+
+      <img alt="pas de alt" style="width: 150px; height: 35px;"
+      src="img/autres/imgssalt.png" />.<br />
+      La, aucun idée du thème de la page. Beaucoup moins pratique.
+    </p>
+    <p>
+      eh bien c'est un peu pareil pour un tableau. Par exemple
+      l'attribut <span class="motcle">"summary" du tableau</span>
+      de la page <span class="motcle"><a href=
+      "temp/">Temp</a></span> de mon site est <span class=
+      "motcle">"Videos et fichiers"</span>.<br />
+
+      De cette façon le visiteur de mes pages sait de quoi va
+      parler le tableau.
+    </p>
+    <p>
+      En fait cet attribut et l'attribut "alt" servent plutot dans
+      les <span class="motcle">navigateurs en mode texte</span>,
+      comme Lynx,<br />
+      ou pour les personnes qui ont <span class="motcle">désactivé
+      les images</span> sur leur navigateur.
+    </p>
+    <hr style="width: 100%; height: 2px;" />
+
+    <h4>
+      <a  id="thead"></a>"Thead" et "Tfoot"
+    </h4>
+    <p>
+      dans vos tableaux, vous avez sans doute déja voulu
+      mettre&nbsp;<span class="motcle">un en-tête ou un
+      pied</span>, mais vous ne savez pas comment faire?<br />
+      C'est <span class="motcle">très simple</span>.
+    </p>
+
+    <p>
+      habituellement votre tableau est en une partie : le corps
+      (tbody) : regardez ce&nbsp;<span class="motcle">tableau de
+      base</span> :
+    </p>
+    <table summary="exemple de tableau simple" style=
+    "text-align: center; width: 400px;" border="2" cellpadding="2"
+    cellspacing="2">
+      <tbody>
+        <tr>
+          <td>
+            liens.html
+          </td>
+
+          <td>
+            <img style="width: 110px; height: 36px;" alt="Liens"
+            src="img/boutons/btliens.gif" />
+          </td>
+        </tr>
+        <tr>
+          <td>
+            news.html
+          </td>
+          <td>
+
+            <img style="width: 110px; height: 36px;" alt="News"
+            src="img/boutons/btnews.gif" />
+          </td>
+        </tr>
+        <tr>
+          <td>
+            index.html
+          </td>
+          <td>
+            <img style="width: 110px; height: 36px;" alt="Accueil"
+            src="img/boutons/btaccueil.gif" />
+
+          </td>
+        </tr>
+      </tbody>
+    </table>
+    <p>
+      <br />
+      ...et son code html (que j'ai coloré pour qu'il soit plus
+      "lisible") :<br />
+      <br />
+
+    </p>
+    <div class="code">
+      <span class="code1">&lt;table</span> summary="<span class=
+      "code2">exemple de tableau simple</span>" style="<span class=
+      "code2">text-align: center; width: 400px;</span>"
+      border="<span class="code2">2</span>"
+      cellpadding="<span class="code2">2</span>"
+      cellspacing="<span class="code2">2</span>"<span class=
+      "code1">&gt;</span><br />
+
+      <span class="code1">&lt;tbody&gt;</span><br />
+      <br />
+      <span class="code1">&lt;tr&gt;</span><br />
+      <span class="code1">&nbsp;&nbsp;&nbsp;
+      &lt;td&gt;</span>liens.html<span class=
+      "code1">&lt;/td&gt;</span><br />
+      <span class="code1">&nbsp;&nbsp;&nbsp;
+
+      &lt;td&gt;&lt;img</span> style="<span class="code2">width:
+      150px; height: 35px;</span>" alt="<span class=
+      "code2">Liens</span>" src="<span class=
+      "code2">http://ssylvainsab.free.fr/img/boutons/btliens.gif</span>"&gt;<span class="code1">&lt;/td&gt;</span><br />
+
+      <span class="code1">&lt;/tr&gt;</span><br />
+
+      <br />
+      &nbsp;<span class="code1">&lt;tr&gt;</span><br />
+      <span class="code1">&nbsp;&nbsp;&nbsp;
+      &lt;td&gt;</span>news.html<span class=
+      "code1">&lt;/td&gt;</span><br />
+      <span class="code1">&nbsp;&nbsp;&nbsp;
+      &lt;td&gt;&lt;img</span> style="<span class="code2">width:
+      150px; height: 35px;</span>" alt="<span class=
+      "code2">News</span>" src="<span class=
+      "code2">http://ssylvainsab.free.fr/img/boutons/btnews.gif</span>"<span class="code1">&gt;&lt;/td&gt;</span><br />
+
+      <span class="code1">&lt;/tr&gt;</span> &nbsp;<span class=
+      "code1">&lt;tr&gt;</span><br />
+      <span class="code1">&nbsp;&nbsp;&nbsp;
+      &lt;td&gt;</span>index.html<span class=
+      "code1">&lt;/td&gt;</span><br />
+      <span class="code1">&nbsp;&nbsp;&nbsp;
+      &lt;td&gt;&lt;img</span> style="<span class="code2">width:
+      150px; height: 35px;</span>" alt="<span class=
+      "code2">Accueil</span>" src="<span class=
+      "code2">http://ssylvainsab.free.fr/img/boutons/btaccueil.gif</span>"<span class="code1">&gt;&lt;/td&gt;</span><br />
+
+      <span class="code1">&lt;/tr&gt;</span><br />
+      <br class="code1" />
+      <span class="code1">&lt;/tbody&gt;</span><br class="code1" />
+      <span class="code1">&lt;/table&gt;</span>
+    </div>
+    <p>
+      <a  id=
+      "decortictableau"></a>décortiquons-le :
+    </p>
+
+    <div class="code">
+      <span class="code1">&lt;table</span> [...] <span class=
+      "code1">&gt;</span>
+    </div>
+    <p>
+      Indique le début du tableau<br />
+      <br />
+    </p>
+
+    <div class="code">
+      summary="<span class="code2">exemple de tableau
+      simple</span>"
+    </div>
+    <p>
+      Est l'attribut "summary". Si vous ne savez pas ce que c'est
+      voyez&nbsp;plus haut : <a href="#summary">^</a>
+    </p>
+    <div class="code">
+
+      <span class="code2">text-align: center; width: 400px;</span>"
+    </div>
+    <p>
+      Est le "style" (comme son nom l'indique) du tableau. Il est
+      indiqué ici que le texte est aligné au centre des cellules
+      (les "cases") et que mon tableau fait 400 pixels&nbsp;de
+      large.
+    </p>
+    <div class="code">
+      border="<span class="code2">2</span>"
+      cellpadding="<span class="code2">2</span>"
+      cellspacing="<span class="code2">2</span>"
+    </div>
+
+    <p>
+      Indique que la bordure fera 2 pixels, qu'il y aura 2 pixels
+      entre la bordure et le contenu de chaque cellule et qu'il y
+      aura une marge de 2 pixels entre chacune des cellules.<br />
+      <br />
+      <br />
+    </p>
+    <div class="code">
+      <span class="code1">&lt;tbody&gt;</span>
+    </div>
+
+    <p>
+      Tout ce qui va suivre dans cette balise sera <span class=
+      "motcle">le corps</span> du tableau.
+    </p>
+    <div class="code">
+      <span class="code1">&lt;tr&gt;</span>
+    </div>
+    <p>
+
+      Tout ce qui va suivre dans cette balise sera <span class=
+      "motcle">une ligne</span> du tableau (une balise <span class=
+      "code1">&lt;tr&gt;</span> = une ligne avec un nombre x de
+      colonnes)
+    </p>
+    <div class="code">
+      <span class="code1">&lt;td&gt;</span>
+    </div>
+    <p>
+
+      Ceci indique <span class="motcle">une cellule</span>. Ce qui
+      va suivre sera son contenu. Il y a autant de balises
+      <span class="code1">&lt;td&gt;</span> par ligne&nbsp;que de
+      colonnes dans votre tableau.
+    </p>
+    <p>
+      Donc :
+    </p>
+    <div class="code">
+      <span class="code1">&lt;tbody&gt;</span><br />
+
+      <span class="code1"><br />
+      &lt;tr&gt;</span><br />
+      <span class="code1">&nbsp;&nbsp;&nbsp;
+      &lt;td&gt;</span>liens.html<span class=
+      "code1">&lt;/td&gt;</span><br />
+      <span class="code1">&nbsp;&nbsp;&nbsp;
+      &lt;td&gt;&lt;img</span> style="<span class="code2">width:
+      150px; height: 35px;</span>" alt="<span class=
+      "code2">Liens</span>" src="<span class=
+      "code2">http://ssylvainsab.free.fr/img/boutons/btliens.gif</span>"&gt;<span class="code1">&lt;/td&gt;</span><br />
+
+      <span class="code1">&lt;/tr&gt;</span>
+    </div>
+    <p>
+      <br />
+      Veut dire : Dans le <span class="motcle">corps du
+      tableau</span> (<span class="code1">&lt;tbody&gt;</span>), il
+      y a <span class="motcle">une ligne</span> (<span class=
+      "code1">&lt;tr&gt;</span>[...]<span class=
+      "code1">&lt;/tr&gt;</span>) qui comporte <span class=
+      "motcle">deux cellules</span> (<span class=
+      "code1">&lt;td&gt;</span>liens.html<span class=
+      "code1">&lt;/td&gt;&lt;td&gt;</span>[...]<span class=
+      "code1">&lt;/td&gt;</span>).<br />
+
+      Le contenu de la première&nbsp;cellule est "liens.html" et
+      celui de la deuxième est
+    </p>
+    <div class="code">
+      <span class="code1">&lt;img</span> style="<span class=
+      "code2">width: 150px; height: 35px;</span>" alt="<span class=
+      "code2">Liens</span>" src="<span class=
+      "code2">liens.gif</span>"&gt;
+
+    </div>
+    <p>
+      qui veut dire : Il y a ici un image de largeur 150 pixels et
+      de hauteur 35 pixels.<br />
+      Cette image se nomme : liens.gif<br />
+      Si elle ne s'affiche pas, il faut afficher à la place le
+      texte "Liens".
+    </p>
+    <p>
+      donc un tableau est formé comme ceci :
+    </p>
+
+    <div class="code">
+      <span class="code1">&lt;table</span> summary="<span style=
+      "font-style: italic;">Le "thème" de votre tableau</span>"
+      style="<span style="font-style: italic;">La "présentation" de
+      votre tableau(taille...)</span>" [ce que nous avons vu
+      <a href="#decortictableau">plus haut</a>]<span class=
+      "code1">&gt;</span> <span style="font-style: italic;">On
+      ouvre le tableau</span> <span class=
+      "code1">&lt;tbody&gt;</span><br />
+
+      <span style="font-style: italic;">Le contenu du corps de
+      votre tableau</span><span class="code1"><br />
+      <br />
+      &lt;tr&gt;</span><span style="font-style: italic;">Le contenu
+      de la première ligne</span><br />
+      &nbsp;&nbsp;&nbsp; <span class=
+      "code1">&lt;td&gt;</span><span style="font-style: italic;">Le
+      contenu de la première cellule</span><span class=
+      "code1">&lt;/td&gt;</span><br />
+      &nbsp;&nbsp;&nbsp; <span class=
+      "code1">&lt;td&gt;</span><span style="font-style: italic;">Le
+      contenu de la deuxième cellule</span><span class=
+      "code1">&lt;/td&gt;</span><br />
+
+      <span class="code1">&lt;/tr&gt;</span><span style=
+      "font-style: italic;">On ferme la première ligne</span><br />
+      <p>
+        <br />
+        <br />
+        <span class="code1">&lt;tr&gt;</span><span style=
+        "font-style: italic;">Le contenu de la deuxième
+        ligne</span><br />
+        <span class="code1">&nbsp;&nbsp;&nbsp;
+        &lt;td&gt;</span><span style="font-style: italic;">Le
+        contenu de la première cellule</span><span class=
+        "code1">&lt;/td&gt;</span><br />
+
+        <span class="code1">&nbsp;&nbsp;&nbsp;
+        &lt;td&gt;</span><span style="font-style: italic;">Le
+        contenu de la deuxième cellule</span><span class=
+        "code1">&lt;/td&gt;</span><span class="code1"><br />
+        &lt;/tr&gt;</span><span style="font-style: italic;">On
+        ferme la deuxième ligne</span>
+      </p>
+      <p>
+        <br />
+
+        <span class="code1">&lt;tr&gt;</span><span style=
+        "font-style: italic;">etc...</span><br />
+        &nbsp;&nbsp;&nbsp; <span class=
+        "code1">&lt;td&gt;</span><span style=
+        "font-style: italic;">etc...</span><span class=
+        "code1">&lt;/td&gt;</span><br />
+        <span class="code1">&nbsp;&nbsp;&nbsp;
+        &lt;td&gt;</span><span style=
+        "font-style: italic;">etc...</span><span class=
+        "code1">&lt;/td&gt;</span><br />
+
+        <span class="code1">&lt;/tr&gt;</span><span style=
+        "font-style: italic;">etc...</span><br />
+        <br class="code1" />
+        <span class="code1">&lt;/tbody&gt;</span> <span style=
+        "font-style: italic;">On ferme le corps du
+        tableau</span><span class="code1"><br />
+        &lt;/table&gt;</span><br />
+        <span style="font-style: italic;">On ferme le
+        tableau</span><br />
+
+      </p>
+    </div>
+    <p>
+      <span class="motcle">Vous pouvez ajouter autant de lignes, de
+      colonnes et de celulles que vous voulez :</span> exemple : un
+      tableau à quatre colonnes et deux lignes :
+    </p>
+    <div class="code">
+      <span class="code1">&lt;table</span> [...]<span class=
+      "code1">&gt;</span> <span style="font-style: italic;">On
+      ouvre le tableau</span><span class=
+      "code1">&lt;tbody&gt;</span><span style=
+      "font-style: italic;"><br />
+
+      Le contenu du corps de votre tableau</span><br />
+      <br />
+      <span class="code1">&lt;tr&gt;</span><span style=
+      "font-style: italic;">Le contenu de la première
+      ligne</span><br />
+      &nbsp;&nbsp;&nbsp; <span class=
+      "code1">&lt;td&gt;</span><span style="font-style: italic;">Le
+      contenu de la première cellule</span><span class=
+      "code1">&lt;/td&gt;</span><br />
+      <span class="code1">&nbsp;&nbsp;&nbsp;
+
+      &lt;td&gt;</span><span style="font-style: italic;">Le contenu
+      de la deuxième cellule</span><span class=
+      "code1">&lt;/td&gt;</span> <span class=
+      "code1">&nbsp;&nbsp;&nbsp; &lt;td&gt;</span><span style=
+      "font-style: italic;">Le contenu de la troisième
+      cellule</span><span class="code1">&lt;/td&gt;</span><br />
+      <span class="code1">&nbsp;&nbsp;&nbsp;
+      &lt;td&gt;</span><span style="font-style: italic;">Le contenu
+      de la quatrième cellule</span><span class=
+      "code1">&lt;/td&gt;</span><br />
+
+      <span class="code1">&lt;/tr&gt;</span><span style=
+      "font-style: italic;">On ferme la première ligne</span><br />
+      <br />
+      <span class="code1">&lt;tr&gt;</span><span style=
+      "font-style: italic;">Le contenu de la deuxième
+      ligne</span><br />
+      &nbsp;&nbsp;&nbsp; <span class=
+      "code1">&lt;td&gt;</span><span style="font-style: italic;">Le
+      contenu de la première cellule</span><span class=
+      "code1">&lt;/td&gt;</span><br />
+      <span class="code1">&nbsp;&nbsp;&nbsp;
+
+      &lt;td&gt;</span><span style="font-style: italic;">Le contenu
+      de la deuxième cellule</span><span class=
+      "code1">&lt;/td&gt;</span><br />
+      <span class="code1">&nbsp;&nbsp;&nbsp;
+      &lt;td&gt;</span><span style="font-style: italic;">Le contenu
+      de la troisième cellule</span><span class=
+      "code1">&lt;/td&gt;</span><br />
+      <span class="code1">&nbsp;&nbsp;&nbsp;
+      &lt;td&gt;</span><span style="font-style: italic;">Le contenu
+      de la quatrième cellule</span><span class=
+      "code1">&lt;/td&gt;</span><br />
+
+      <span class="code1">&lt;/tr&gt;</span><span style=
+      "font-style: italic;">On ferme la deuxième ligne</span><br />
+      <br class="code1" />
+      <span class="code1">&lt;/tbody&gt;</span> <span style=
+      "font-style: italic;">On ferme le corps du
+      tableau</span><span class="code1">&lt;/table&gt;</span><br />
+      <span style="font-style: italic;">On ferme le tableau</span>
+    </div>
+
+    <p>
+      cela donne :&nbsp;
+    </p>
+    <table summary="exemple de tableau" style=
+    "text-align: left; height: 30%;" border="2" cellpadding="2"
+    cellspacing="2">
+      <tbody style=
+      "font-style: italic; text-transform: capitalize;">
+        <tr>
+          <td>
+            le contenu de la première cellule
+          </td>
+
+          <td>
+            le contenu de la deuxième cellule
+          </td>
+          <td>
+            le contenu de la troisième cellule
+          </td>
+          <td>
+            le contenu de la quatrième cellule
+          </td>
+        </tr>
+
+        <tr>
+          <td>
+            le contenu de la première cellule
+          </td>
+          <td>
+            le contenu de la deuxième cellule
+          </td>
+          <td>
+            le contenu de la triosième cellule
+          </td>
+
+          <td>
+            le contenu de la quatrième cellule
+          </td>
+        </tr>
+      </tbody>
+    </table>
+    <p>
+      <br />
+      maintenant je vais vous montrer comment faire un en-tête et
+      un pied à votre tableau (si vous avez bien compris ce que
+      j'ai expliqué avant, ce sera facile) :
+    </p>
+
+    <p>
+      Vous vous souvenez, je vous ai dit :<br />
+      <cite>"</cite>
+    </p>
+    <div class="code">
+      <span class="code1">&lt;tbody&gt;</span>
+    </div>
+
+    <p>
+      <cite>Tout ce qui va suivre dans cette balise sera
+      <span class="motcle">le corps</span> du tableau."</cite>
+    </p>
+    <p>
+      eh bien c'est très simple, les en-têtes et les pieds se
+      forment de la même manière que le corps du tableau :<br />
+      il suffit de mettre des balises <span class=
+      "code1">&lt;thead&gt;</span>[...]<span class=
+      "code1">&lt;/thead&gt;</span> (pour l'en-tête) ou
+      <span class="code1">&lt;tfoot&gt;</span>[...]<span class=
+      "code1">&lt;/tfoot&gt;</span> (pour le pied) <span class=
+      "motcle">avant</span> les balises <span class=
+      "code1">&lt;tbody&gt;</span>[...]<span class=
+      "code1">&lt;/tbody&gt;</span>.<br />
+
+      <br />
+      <span style="text-decoration: underline;">La seule chose qui
+      peut paraître illogique, c'est que le pied est placé</span>
+      <span class="motcle">avant le corps dans le code html</span>,
+      mais il apparait <span style="text-decoration: underline;"
+      class="motcle">après dans le tableau</span>. Retenez bien
+      ceci pour ne pas vous tromper.<br />
+      &nbsp;<br />
+      Par exemple, pour le tableau que vous avez vu avant cela
+      donne :
+    </p>
+    <table summary="exemple de tableau simple" style=
+    "text-align: center; width: 400px;" border="2" cellpadding="2"
+    cellspacing="2">
+
+      <thead>
+        <tr>
+          <td>
+            page
+          </td>
+          <td>
+            image
+          </td>
+        </tr>
+      </thead>
+
+      <tbody>
+        <tr>
+          <td>
+            liens.html
+          </td>
+          <td>
+            <img style="width: 110px; height: 36px;" alt="Liens"
+            src="img/boutons/btliens.gif" />
+          </td>
+        </tr>
+
+        <tr>
+          <td>
+            news.html
+          </td>
+          <td>
+            <img style="width: 110px; height: 36px;" alt="News"
+            src="img/boutons/btnews.gif" />
+          </td>
+        </tr>
+        <tr>
+
+          <td>
+            index.html
+          </td>
+          <td>
+            <img style="width: 110px; height: 36px;" alt="Accueil"
+            src="img/boutons/btaccueil.gif" />
+          </td>
+        </tr>
+      </tbody>
+    </table>
+
+    <p>
+      <br />
+      Et le code html est :<br />
+      <br />
+    </p>
+    <div class="code">
+      <span class="code1">&lt;table</span> summary="<span class=
+      "code2">exemple de tableau simple</span>" style="<span class=
+      "code2">text-align: center; width: 400px;</span>"
+      border="<span class="code2">2</span>"
+      cellpadding="<span class="code2">2</span>"
+      cellspacing="<span class="code2">2</span>"&gt;<br />
+
+      <span class="code1"><br />
+      &lt;thead&gt;<br />
+      &nbsp;&nbsp;&nbsp; &lt;tr&gt;</span><br class="code1" />
+      <span class="code1">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
+      &lt;td&gt;</span>page<span class=
+      "code1">&lt;/td&gt;</span><br class="code1" />
+
+      <span class="code1">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
+      &lt;td&gt;</span>image<span class=
+      "code1">&lt;/td&gt;</span><br class="code1" />
+      <span class="code1">&nbsp;&nbsp;&nbsp;
+      &lt;/tr&gt;</span><span class="code1"><br />
+      &lt;/thead&gt;<br />
+      <br />
+
+      &lt;tbody&gt;</span><br />
+      <span style="font-style: italic;">Contenu du
+      tableau</span><br />
+      <span class="code1">&lt;/tbody&gt;</span><br class="code1" />
+      <span class="code1"><br />
+      &lt;/table&gt;</span>
+    </div>
+    <p>
+
+      <br />
+      <br />
+      Vous pouvez choisir ce que vous voulez faire : avec/sans
+      &nbsp;: &nbsp; pied/en-tête.<br />
+      avec un pied le code aurait été :<br />
+      <br />
+    </p>
+
+    <div class="code">
+      <span class="code1">&lt;table</span> [...]&gt;<br />
+      <span class="code1"><br />
+      &lt;tfoot&gt;<br />
+      &nbsp;&nbsp;&nbsp; &lt;tr&gt;</span><br class="code1" />
+      <span class="code1">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
+
+      &lt;td&gt;</span>page<span class=
+      "code1">&lt;/td&gt;</span><br class="code1" />
+      <span class="code1">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
+      &lt;td&gt;</span>image<span class=
+      "code1">&lt;/td&gt;</span><br />
+      <span class="code1">&nbsp;&nbsp;&nbsp;
+      &lt;/tr&gt;</span><span class="code1"><br />
+
+      &lt;/tfoot&gt;<br />
+      <br />
+      &lt;tbody&gt;</span><br />
+      <span style="font-style: italic;">Contenu du
+      tableau</span><br />
+      <span class="code1">&lt;/tbody&gt;</span><br class="code1" />
+      <span class="code1"><br />
+      &lt;/table&gt;</span><br />
+
+    </div>
+    <table summary="exemple de tableau simple" style=
+    "text-align: center; width: 400px;" border="2" cellpadding="2"
+    cellspacing="2">
+      <tfoot>
+        <tr>
+          <td>
+            page
+          </td>
+          <td>
+            image
+          </td>
+
+        </tr>
+      </tfoot>
+      <tbody>
+        <tr>
+          <td>
+            liens.html
+          </td>
+          <td>
+            <img style="width: 110px; height: 36px;" alt="Liens"
+            src="img/boutons/btliens.gif" />
+
+          </td>
+        </tr>
+        <tr>
+          <td>
+            news.html
+          </td>
+          <td>
+            <img style="width: 110px; height: 36px;" alt="News"
+            src="img/boutons/btnews.gif" />
+          </td>
+
+        </tr>
+        <tr>
+          <td>
+            index.html
+          </td>
+          <td>
+            <img style="width: 110px; height: 36px;" alt="Accueil"
+            src="img/boutons/btaccueil.gif" />
+          </td>
+        </tr>
+
+      </tbody>
+    </table>
+    <p>
+      <br />
+      Ca ne sert pratiquement à rien, mais je vous le dis quand
+      même : vous pouvez mettre autant de pied/en-tête que vous
+      voulez. Par contre, seul le premier "pied" sera considéré
+      comme tel(sera placé en bas du tableau). Les autres seront
+      considérés comme des en-têtes(en haut du tableau).
+    </p>
+    <p>
+      ah mais au fait, a quoi ca sert d'utiliser des en-têtes et
+      des pieds, on aurait pu utiliser des lignes normales,
+      c'aurait été pareil!<br />
+      <br />
+
+      Pas tout à fait : avec les balises "thead" et "tfoot" :
+    </p>
+    <ul>
+      <li>Votre code est mieux organisé, c'est plus facile de s'y
+      retrouver
+      </li>
+      <li>Si vous mettez des lignes à la place, si vous voulez
+      ajouter une ligne à votre tableau, vous devrez faire bien
+      attention à ne pas l'ajouter avant les en-têtes ou pieds de
+      page, alors qu'avec ceci, la ligne se mettra au bon endroit.
+      </li>
+      <li>Avec le CSS, vous pouvez faire un style différent aux
+      en-tête, pieds de pages et corps du tableau.
+      </li>
+    </ul>
+    <h2>
+
+      <a  id="astuces"></a>astuces
+    </h2>
+    <h4>
+      <a  id="favicon"></a>mettre une favicône sur
+      son site
+    </h4>
+    <p>
+      Sur certains sites, peut-être avez vous remarqué
+      une&nbsp;<span class="motcle">petite image</span> à gauche de
+      l'url(et de l'onglet dans firefox) :
+    </p>
+    <table style="margin: 2.5%;" border="0" cellpadding="2"
+    cellspacing="2">
+
+      <tbody>
+        <tr>
+          <td>
+            favicône :
+          </td>
+          <td>
+            <img style="width: 262px; height: 22px;" alt=
+            "S http://ssylvainsab.free.fr/index.html .\" src=
+            "img/autres/bafavrss.jpg" />
+          </td>
+        </tr>
+
+      </tbody>
+    </table>
+    <p>
+      Par exemple quand vous surfez sur les pages de mon site, vous
+      voyez : <img class='16' alt="::" title="C'est la favicône de mon site" src="/img/mini/favicon.png" />.
+      Cette image s'apelle une "<em>favicône</em>". C'est pratique pour repérer quel
+      onglet correspond à quel site.<br />
+      Vous en voulez une sur votre site?
+    </p>
+    <p>
+      Voici les étapes à suivre pour mettre un favicône sur votre site :
+    </p>
+    <ol>
+      <li>Créez une image aux dimensions 16 pixels sur 16 pixels
+      (environ) (avec paint : menu image puis attributs)
+      </li>
+      <li>Enregistrez-la sous le nom "favicon.ico"
+      </li>
+      <li>Deposez-la à la racine de votre site
+      </li>
+      <li>C'est tout ! Dorénavant les visiteurs qui iront sur votre
+      site verront cette favicône.
+      </li>
+
+    </ol>
+    <p>
+      Notez que si vous ne déposez pas la favicone a la racine de
+      votre site, vous devrez indiquer son emplacement dans chaque
+      page pour qu'elle s'affiche, en faisant de cette facon
+      :<br />
+      Dans les balises <span class="code1">&lt;head&gt;</span> de
+      votre page, mettez le code suivant : &lt;<span class=
+      "code1">link</span> rel="<span class="code2">shortcut
+      icon</span>" href="<span class="code2">emplacement de votre
+      favicone</span>"&gt;.
+    </p>
+
+    <p>
+      Vous pouvez également utiliser plusieurs favicones sur des
+      pages différentes pour votre site, en changeant l'emplacement
+      de la favicone.
+    </p>
+    <p>
+      Il existe un validateur pour les favicones : <a href=
+      "http://www.html-kit.com/favicon/validator/">http://www.html-kit.com/favicon/validator/</a>
+    </p>
+    <p>
+      voyez aussi : <a href=
+      "http://www.commentcamarche.net/faq/sujet-332">http://www.commentcamarche.net/faq/sujet-332</a>&nbsp;&nbsp;
+
+      &nbsp;<a href=
+      "http://www.xhtml.net/xhtmlcss/favicon">http://www.xhtml.net/xhtmlcss/favicon</a>
+    </p>
+    <hr />
+    <h4>
+      <a  id="iconrss"></a>mettre une icône signalant
+      la préscence d'un flux RSS sur son site
+    </h4>
+    <p>
+      sur certains sites, vous avez sans doute remarqué la présence
+      de <span class="motcle">l'image</span>&nbsp;<img style=
+      "width: 16px; height: 16px;" alt="RSS" title=
+      "Cette image a droite de l'url signale un flux RSS." src=
+      "img/mini/minirss.png" />, située à droite de l'url et
+      signalant un <span class="motcle">flux RSS</span> sur le
+      site. Vous aimeriez bien faire pareil ?
+    </p>
+
+    <table style="margin: 2.5%;" border="0" cellpadding="2"
+    cellspacing="2">
+      <tbody>
+        <tr>
+          <td>
+            <img style="width: 262px; height: 22px;" alt=
+            "S http://ssylvainsab.free.fr/index.html .\" src=
+            "img/autres/bafavrss.jpg" />
+          </td>
+          <td>
+            Icône signalant un flux RSS
+          </td>
+
+        </tr>
+      </tbody>
+    </table>
+    <p>
+      C'est très simple :<br />
+      Une fois que vous avez <span class="motcle">créé votre flux
+      RSS</span>, mettez le <span class="motcle">code html</span>
+
+    </p>
+    <div class="code">
+      <span class="code1">&lt;link</span> rel="<span class=
+      "code2">alternate</span>" type="<span class=
+      "code2">application/rss+xml</span>" title="<span style=
+      "font-style: italic;" class="code2">Titre de votre
+      flux</span>" href="<span style="font-style: italic;" class=
+      "code2">Emplacement de votre flux</span>"&gt;
+
+    </div>
+    <p>
+      <br />
+      entre les balises <span class="code1">&lt;head&gt;</span> et
+      <span class="code1">&lt;head&gt;</span> de la page/des pages
+      ou vous souhaitez voir cette image.
+    </p>
+    <p>
+
+      exemple&nbsp;: sur ma page d'accueil, j'ai indiqué le code
+      suivant :&nbsp;
+    </p>
+    <div class="code">
+      <span class="code1">&lt;link</span> rel="<span class=
+      "code2">alternate</span>" type="<span class=
+      "code2">application/rss+xml</span>" title="<span class=
+      "code2">Les news de Ssylvainsab par flux RSS</span>"
+      href="<span class="code2">rss/rss.xml</span>"<span class=
+      "code1">&gt;</span>
+
+    </div>
+    <p>
+      cependant attention : il faut <span class="motcle">mettre ce
+      code sur chaque page ou vous voulez voir cette image.</span>
+      Sur ce site je l'ai mis sur la <span class="motcle">page
+      d'acccueil, les news et la page du flux.</span>
+    </p>
+    <h2>
+      <a  id="retenir"></a>a retenir pour vos pages :
+    </h2>
+
+    <p>
+      vous pouvez regarder le code sources des pages des autres
+      sites. C'est assez instructif.
+    </p>
+    <p>
+      Pour les images sur internet, n'utilisez que les formats
+      .gif,(pour les dessins sans trop de nuances) .png(pour les
+      dessins) ou .jpg(pour les photos). Les autres formats sont
+      trop lourds ou pas adaptés.
+    </p>
+    <p>
+      Utilisez les attributs "alt" pour vos images et "summary"
+      pour vos tableaux. Sinon vos pages ne seront pas
+      valides(<a href="http://www.w3.org/">http://www.w3.org/</a>).
+    </p>
+
+    <p>
+      respectez les standards du WEB (<a href=
+      "http://www.w3.org/">http://www.w3.org/</a>)
+    </p>
+    <p>
+      si vous le pouvez, utilisez le logiciel <a href=
+      "logiciels/tidy.php">TidyGUI</a> pour vérifier vos pages
+      avant de les mettre en ligne.
+    </p>
+    <p>
+
+      L'extension <a href=
+      "logiciels/firefox.php#webdeveloper">WebDeveloper</a> pour
+      Firefox est très pratique : elle vous permet de vérifier vos
+      fichiers CSS, html, rss.... et bien d'autres choses.
+    </p>
+    <p>
+      validez vos pages avant de les mettre en ligne :
+    </p>
+    <p>
+      les validateurs :
+    </p>
+    <ul>
+
+      <li>html : <a href=
+      "http://validator.w3.org">http://validator.w3.org/</a>
+      </li>
+      <li>css : <a href=
+      "http://jigsaw.w3.org/css-validator/">http://jigsaw.w3.org/css-validator/</a>
+      </li>
+      <li>rss : <a href=
+      "http://validator.w3.org/feed/">http://validator.w3.org/feed/</a>
+      </li>
+
+      <li>xml, rdf, sitemap : <a href=
+      "http://www.w3.org/RDF/Validator/">http://www.w3.org/RDF/Validator/</a>
+      </li>
+      <li>favicône : <a href=
+      "http://www.html-kit.com/favicon/validator/">http://www.html-kit.com/favicon/validator/</a>
+      </li>
+    </ul>
+<?php require'autres/source-bas.php'?>
blob - /dev/null
blob + 0c41da62c2b691ea5135169c231dc6f32345bfd3 (mode 644)
--- /dev/null
+++ index.php
@@ -0,0 +1,21 @@
+<?php
+$titre='Flux RSS';
+require'../autres/source-haut.php'?>
+<p>Le flux RSS est a l'adresse : <a href="rss.xml">rss.xml</a></p>
+<p>
+  Pour s'abonner a ce flux, il suffit de cliquer sur l'icône
+  <img class="t16" alt="RSS" src="/img/mini/minirss.png" /> à droite de l'url,
+  ou de marquer l'url : <a href="http://sylvain.sab.free.fr/rss/rss.xml">http://sylvain.sab.free.fr/rss/rss.xml</a>
+  dans votre lecteur de flux.
+</p>
+<p>
+  Vous pouvez également vérifier sa validité :
+  <a title="Le Flux RSS 2.0 de ce site est valide" href="http://validator.w3.org/feed/check.cgi?url=http://sylvain.sab.free.fr/rss/rss.xml">
+  <img style="width:80px;height:15px;" alt="W3C RSS 2.0" src="/img/valide/w3crss.gif" /></a>
+</p>
+<p>Les News : <a href="../news.php">news.php</a></p>
+<p>
+  Vous pouvez aussi regarder une vidéo (588 Ko) qui explique comment gérer les Flux RSS avec Firefox :
+  <a href="/temp/?video=firefoxrss">/temp/?video=firefoxrss</a>
+</p>
+<?php require'../autres/source-bas.php'?>
blob - /dev/null
blob + e82ad30e8bff7e62714cbb7ad1a8ddde1507451b (mode 644)
--- /dev/null
+++ liens.php
@@ -0,0 +1,581 @@
+<?php
+$head['css'][0]['filename']='liens';
+$head['autres']='<link rel="alternate" type="application/rss+xml" title="Del.icio.us - Sylvain.sab" href="http://del.icio.us/rss/Ssylvainsab/" />'."\n\t".
+  '<meta http-equiv="robots" content="none" />';
+$titre='Liens';
+require'autres/source-haut.php';?>
+<h1>Liens</h1>
+<hr />
+<p>Je suis inscrit au service "del.icio.us".<br />Ce service permet de partager ses marques pages avec tout le monde.
+   Vous pouvez voir mes marques-pages de différentes façons :</p>
+<ol><li>Directement depuis del.icio.us (mise à jour en temps réel) : <a href="http://del.icio.us/ssylvainsab/">http://del.icio.us/ssylvainsab/</a></li>
+    <li>Depuis le flux RSS de del.icio.us (mise à jour en temps réel également) :
+        <a href="http://del.icio.us/rss/ssylvainsab/">http://del.icio.us/rss/ssylvainsab/</a></li>
+    <li>Sur une seule page (crée avec le programme Delxml2html), mise à jour de temps en temps : 
+        <a href="/pages/">http://sylvain.sab.free.fr/pages/</a></li></ol>
+<p>Pour utiliser le programme delxml2html, voir la page <a href="/delxml/">Utiliser le programme delxml2html.</a></p>
+<hr />
+<p class="quevoir">
+  Quels liens voulez-vous voir ?<br />
+  ||&nbsp;<a href="#securite">Securité</a>&nbsp;||&nbsp;<a href="#informatique">Informatique</a>&nbsp;||&nbsp;<a href="#telecharger">Télécharger&nbsp;/&nbsp;Logiciels</a>&nbsp;||&nbsp;<a href="#siteprog">Site&nbsp;WEB&nbsp;/&nbsp;Programmation</a>&nbsp;||&nbsp;<a href='#multimedia'>Multimedia</a>&nbsp;||&nbsp;<a href="#images">Images&nbsp;-&nbsp;Dessin&nbsp;-&nbsp;Graphisme</a>&nbsp;||&nbsp;<a href='#recherche'>Recherche</a>&nbsp;||&nbsp;<a href="#divers">Divers</a>&nbsp;||&nbsp;<a href="#liens">Liens</a>&nbsp;||</p>
+<hr /><?php
+
+if(isset($_GET['nocss']))
+{
+  function callback_liens($page)
+  {
+    return preg_replace('#<em>(.+)</em>#sU','<br /><em>$1</em><br />',$page);
+  }
+  ob_start('callback_liens');
+  echo'<p><a href="',$_SERVER['PHP_SELF'],'">Cliquez ici pour revenir à l"affichage normal avec CSS.</a></p><hr />';
+}
+else echo'<div style="display:none"><p><a href="',$_SERVER['PHP_SELF'],'?nocss">Vous n\'avez pas activé les CSS ? Cliquez ici pour voir les liens normalement.</a></p><hr /></div>';
+?>
+<!--S E C U R I T E-->
+<div id="securite">
+<h2>Securité</h2>
+ <h3>Documentation</h3>
+ <p class="liste">
+  <em><a class="fr externe" href="http://www.claymania.com/safe-hex-fr.html">Claymania</a> :</em>
+  Savoir se protéger contre les virus.
+  
+  <em><a class="externe fr" href="http://assiste.free.fr/">Assiste</a> :</em>
+  Documentation et explications sur les logiciels malveillants.
+  
+  <em><a class="externe fr" href="http://www.sebsauvage.net/safehex.html">Safe-hex - Sébastien sauvage</a> :</em>
+  Les recommandations de Sébastien Sauvage.
+  
+  <em><a class="externe fr" href="http://abcdelasecurite.free.fr/site-abc-de-la-securite/">Abc de la sécurité</a> :</em>
+  Plusieurs reccommandations utiles.
+ </p>
+ <h3>Test de fichiers</h3>
+ <p class="liste">
+  <em><a class="externe en" href="http://www.eicar.org/anti_virus_test_file.htm">Eicar antivirus test file</a> :</em>
+  Téléchargez un des fichiers, puis analysez le avec votre antivirus. Il devrait reconnaitre un virus. (faux bien sur)
+  
+  <em><a class="externe en" href="http://virusscan.jotti.org/">Online Malware Scan</a> :</em>
+  Si vous avez un doute sur un fichier, vous pouvez le scanner avec 14 antivirus différents.
+  <em><a class="externe en" href="http://www.virustotal.com/en/virustotalx.html">VirusToal</a> :</em>
+  La m&ecirc;me chose, mais avec 25 antivirus !
+  
+  <em><a href="http://www.cryptodox.com/" class="en externe wiki">CryptoDox</a> :</em>
+  Un wiki sur la cryptographie.
+ </p>
+
+ <h3>Espionnage</h3>
+ <p class="liste">
+  <span class="groupe">Pour voir comme il est facile de connaitre des informations sur vous (souvent via des variables php).<br />
+  <a class="externe fr" href="http://www.actulab.com/big-brother-vous-observe.php">http://www.actulab.com/big-brother-vous-observe.php</a><br />
+  <a class="externe fr" href="http://www.adresseip.com/">http://www.adresseip.com/</a><br />
+  <a href="http://abcdelasecurite.free.fr/site-abc-de-la-securite/variables-informations-adresse-ip.php"
+  class="fr externe">http://abcdelasecurite.free.fr/[...]variables-informations-adresse-ip.php</a><br />
+  <a class="externe fr" href="http://www.monip.net/">http://www.monip.net/</a><br />
+  <a class="externe en" href="http://www.dnsstuff.com/tools/aboutyou.ch">http://www.dnsstuff.com/tools/aboutyou.ch</a></span>
+ </p>
+</div>
+
+<!--I N F O R M A T I Q U E-->
+<div id="informatique">
+<h2>Informatique</h2>
+ <p class="liste">
+  <em><a class="externe fr" href="http://www.siteduzero.com">Le Site du zér0</a> :</em>
+  De bons tutoriels pour apprendre plusieurs choses sur l"informatique.
+
+  <em><a class="externe fr" href="http://www.sebsauvage.net/">Sebsauvage.net</a> :</em>
+  Un excellent site sur l"informatique. L"auteur est un adepte de python, il y a plein de scripts intéressants.
+
+  <em><a class="externe fr" href="http://www.commentcamarche.net/">Comment Ca Marche</a> :</em>
+  Beaucoup d"explications sur l"informatique en général.
+  Tout le monde peut agrandir la base de connaissances et aider sur les forums, il suffit de s"y inscrire.<br />J"y participe régulièrement.<br />
+  Sebsauvage a également archivé la <a class="externe fr" href="http://sebsauvage.net/temp/ccmfaq/">Base de connaissance Comment Ca marche :</a>
+
+  <em><a class="externe fr" href="http://www.info-3000.com/">Info-3000</a> :</em>
+  Quelques astuces et explications utiles.
+
+  <em><a class="externe fr" href="http://www.webarck.com/">WebArck</a> :</em>
+  Un site avec des tutoriels et explications pour les Webmasters débutants.
+
+  <em><a class="externe fr" href="http://perso.orange.fr/jesses/">Jesses Entraide</a> :</em>
+  Un site plein d"explications pour les débutants.
+
+  <em><a class="externe fr wiki" href="http://fr.wikipedia.org/wiki/Cat%C3%A9gorie:Informatique">Wikipédia - Catégorie informatique</a> :</em>
+  La rubrique Informatique de Wikipedia. Vous pouvez y contribuer sans vous inscrire.
+
+  <em><a class="externe fr" href="http://www.aide-informatique.org/">Aide-Informatique</a> :</em>
+  Comme le nom l"indique...
+
+  <em><a class="externe fr" href="http://leregistre-fr.net/">Leregistre-fr</a> :</em>
+  Comprendre ce qu"est le registre et le modifier.
+
+  <em><a class="externe fr" href="http://logiciellibre.free.fr/">Logiciel Libre</a> :</em>
+  Un site sur l"informatique, nottament les logiciels libres.
+
+  <em><a class="externe fr" href="http://a.vouillon.online.fr/faq-winxp.htm">FAQ Windows XP</a> :</em>
+  Une <abbr title="Foire Aux Questions"><span>FAQ</span></abbr> sur Windows XP.
+  Il existe également <a href="http://www.faqoe.com/">une <abbr title="Foire Aux Questions"><span>FAQ</span></abbr>
+  sur outlook express</a>, et <a href="http://www.kellys-korner-xp.com/xp_tweaks.htm">des astuces pour optimiser Windows</a>.
+ </p>
+</div>
+
+<!--T E L E C H A R G E R-->
+<div id="telecharger">
+<h2>Télécharger / Logiciels</h2>
+ <h3>Liste de sites</h3>
+ <p class="liste">
+  <em><a class="externe fr" href="http://www.liensutiles.org/logiciels.htm">Liens utiles.org</a></em>
+  Une liste de sites ou télécharger des fichiers et logiciels.
+
+  <span class="groupe"><em>Sites dédiés au téléchargement :</em>
+  <a class="externe fr" href="http://www.01net.com/">01net.com</a><br />
+  <a class="externe fr" href="http://www.gratilog.net/">Gratilog</a><br />
+  <a class="externe fr" href="http://telecharger.yacapa.com/">télécharger.Yacapa</a><br />
+  <a class="externe fr" href="http://www.clubic.com/download/">Clubic.com</a></span>
+  
+  <span class="groupe"><em>Des forums dédiés aux logiciels gratuits :</em>
+  <a class="externe fr" href="http://www.koreus.com/modules/newbb/topic250-3.html">Koreus.com</a><br />
+  <a class="externe fr" href="http://www.3dchips-fr.com/forum/showthread.php?threadid=59147">3D Chips</a><br />
+  <a class="externe en" href="http://www.photoshophow.com/freeware.htm">Photoshopow</a><br />
+  <a class="externe fr" href="http://www.presence-pc.com/forum/ppc/Logiciels/2005-sujet-7937-1.htm">Presence-pc.com</a></span>
+  
+  <span class="groupe"><em>Des Sites de logiciels open-source et/ou gratuits :</em>
+  <a class="externe en" href="http://www.concisefreeware.com/">Concise Freeware</a><br />
+  <a class="externe fr" href="http://loliwin.org/">LoLiWin</a><br />
+  <a class="externe en" href="http://www.nirsoft.net/">NirSoft/</a><br />
+  <a class="externe en" href="http://www.freewarefind.com/">Freeware Find</a><br />
+  <a class="externe fr" href="http://www.framasoft.net/">Framasoft</a><br />
+  <a class="externe fr" href="http://gnuwin.epfl.ch/fr/index.html">GNUWin</a><br />
+  <a class="externe fr" href="http://jesuislibre.org/">Je Suis Libre</a><br />
+  <a class="externe en" href="http://www.pricelessware.org/thelist/index.htm">Pricelessware</a></span>
+ </p>
+ <h3>Logiciels</h3>
+ <p class="liste">
+  <em><a href="http://www.anappaday.com/" class="en externe">An App A Day</a> :</em>
+  Waow ! Cette personne fait un logiciel par jour.
+
+  <em><a class="externe en" href="http://www.microsoft.com/windowsxp/downloads/powertoys/xppowertoys.mspx">Microsoft Powertoys</a> :</em>
+  Plusieurs utilitaires pour Windows
+
+  <em><a href="http://osswin.sourceforge.net/" class="externe en">The OSSwin project : Open Source for Windows !</a> :</em>
+  Une liste de projets (logiciels entre autres) open-source pour Windows.
+  
+  <em><a class="externe en" href="http://www.theorica.net/safexp.htm">Safe XP</a> :</em>
+  Un programe similaire &agrave; TweakUI, qui permet de manipuler Windows.
+  
+  <em><a class="externe en" href="http://portableapps.com/">PortableApps</a> :</em>
+  Le site des logiciels portables. Plusieurs logiciels habituels (firefox, vlc, gimp...)
+  qui ne nécéssitent pas d"installation pour fonctionner et permettent d"être transportés sur clé USB
+ </p>
+</div>
+
+<!--S I T E  W E B-->
+<div id="siteprog">
+<h2>Site WEB / Programmation</h2>
+ <h3>Site WEB</h3>
+ <h4>Débuter</h4>
+ <p class="liste">
+  <em><a class="externe fr" href="http://www.siteduzero.com/tuto-3-6-0.html">Tutoriel - le Site du zér0</a> :</em>
+  Un tutoriel Ultra complet pour apprendre le xhtml et les CSS.
+  
+  <em><a class="externe fr" href="http://www.siteduzero.com/tuto-3-20-1.html">Tutoriel PHP - Le Site du zér0</a> :</em>
+  Le même site et la même chose, mais sur le PHP. 
+  
+  <em><a class="externe fr" href="http://sebsauvage.net/html.html">Sebsauvage.net - Conseils HTML</a> :</em>
+  Les conseils de Sébastien Sauvage, ce qu"il faut éviter dans ses pages.
+
+  <em><a class="externe fr" href="http://www.startyourdev.com/">StarYouDev</a> :</em>
+  Tutoriels sur les différents langages du WEB.
+ </p>
+
+ <h4>Les standards, l"accessibilité</h4>
+ <p class="liste">
+  <em><a class="externe fr" href="http://www.openweb.eu.org/">Open WEB</a> :</em>
+  Un site sur les standards du WEB.
+  
+  <em><a class="externe fr" href="http://pompage.net/">Pompage.net</a> :</em>
+  Des articles sur les standards du WEB.
+  
+  <em><a class="externe fr" href="http://alsacreations.com/">Alsacreations</a> :</em>
+  Plusieurs tutoriels sur les standards, l"accessibilité, etc...
+
+  <em><a class="externe en" href="http://tjkdesign.com/" hreflang="en">Building Standards Compliant WebSites</a> :</em>
+  Un site qui aide a respecter les standards du WEB.
+  
+  <em><a class="externe en" href="http://www.vischeck.com/vischeck/vischeckURL.php">VisCheck</a> :</em>
+  Ce site permet de voir ce que verrait un daltonien en visitant un autre site : il change les couleurs.
+  Utile pour vérifier l"accessibilité de votre site.
+ </p>
+
+ <h4>Outils et ressources</h4>
+ <p class="liste">
+  <em><a class="externe fr" href="http://www.freeguppy.org/">Guppy</a> :</em>
+  Guppy est un <abbr title="&quot;Content Management System&quot;, ou &quot;Système de Gestion de Contenu&quot;">CMS</abbr> libre.
+  Il vous permet de créér un site complet (zone membre, flux rss, etc...) sans rien connaitre au html ou php.<br />
+  Il existe plusieurs autres CMS :
+  <a class="externe fr wiki" href="http://fr.wikipedia.org/wiki/Liste_de_syst%C3%A8mes_de_gestion_de_contenu">Wikipedia : Liste des CMS</a>
+
+  <em><a class="externe fr" href="http://xhtmlcsskits.xooit.net/base.html">Editeur en ligne</a> :</em>
+  Génial. Cette page propose un éditeur xhtml/css/JS, avec des balises à portée de main,
+  des CSS spécial IE, et surtout un apercu en direct dans un pop-up.
+  
+  <em><a class="externe en" href="http://dynamicdrive.com/">Dynamic Drive</a> :</em>
+  Plusieurs outils en ligne utiles. Création de gradients, optimisation d"images, etc...
+  
+  <em><a class="externe en" href="http://www.websiteoptimization.com/">Web Site Optimization</a> :</em>
+  Plusieurs outils pour optimiser son site.
+  
+  <em><a class="externe en" href="http://www.listible.com/list/online-tools2C-generators2C-checkers">Listible</a> :</em>
+  Des dizaines d"outils pour les Webmasters.
+  
+  <em><a href="http://www.cdburnerxp.se/cssparse/css_optimiser.php" class="fr externe">CSS Formateur et Optimiseur</a> :</em>
+  Un excellent outil pour les CSS. Votre code CSS est compréssé au maximum.
+  
+  <em><a href="http://www.smashingmagazine.com/" class="en externe">Smashing Magazine</a> :</em>
+  Une liste importante d"outils en tous genres.
+  
+  <em><a href="http://www.aptana.com/" class="en externe">Aptant</a> :</em>
+  Un logiciel de dévelopement WEB intéressant.
+  
+  <em><a href="http://www.devpro.it/" class="en externe">DEVPRO</a> :</em>
+  Plusieurs bouts de scripts/codes php, xhtml, css, etc...
+ </p>
+
+ <h4>Les validateurs</h4>
+ <p class="liste">
+  <em><a href="http://validator.w3.org/" class="en externe">The W3C Markup Validation Service</a></em>
+  Le validateur xhtml, html, etc officiel.
+
+  <em><a href="http://www.validome.org/" class="fr externe">Validome</a> :</em>
+  Un excellent validateur xhtml, html, etc bien meilleur que l"officiel. C"est le plus strict que je connaisse.
+
+  <em><a href="http://validateur.ca/" class="fr externe">Validateur W3C Multipage pour une validation de site WEB</a> :</em>
+  Un validateur qui valide toutes les pages de votre site (maximum 300) à la fois. Il utilies le validateur du W3C.
+  
+  <em><a href="http://jigsaw.w3.org/css-validator/" class="externe fr">Le service de validation CSS du W3C</a> :</em>
+  Le validateur officiel du CSS.
+
+  <em><a href="http://validator.w3.org/feed/" class="en externe">W3C Feed Validation Service</a> :</em>
+  Le validateur officiel de flux RSS ou Atom.
+  
+  <em><a href="http://www.w3.org/RDF/Validator/" class="externe fr">W3C RDF Validation Service</a> :</em>
+  Le validateur officiel de fichiers RDF.
+
+  <em><a href="http://validateur-accessibilite.apinc.org/" class="fr externe">Validateur d"accessibilité</a> :</em>
+  Pour vérifier le niveau d"accessibilité de vos pages.
+ </p>
+
+ <h4>Autres</h4>
+ <p class="liste">
+  <em><a class="externe fr" href="http://www.kits-gratuits.net/">Kits-Gratuits</a> :</em>
+  Plusieurs logiciels pour réaliser un site en html-css.
+
+  <em><a class="externe fr" href="http://developer.mozilla.org/fr/docs/Accueil">MDC</a> :</em>
+  La rubrique "dévellopeurs" de la société Mozilla.
+
+  <em><a class="externe en" href="http://www.pmob.co.uk/">CSS examples</a> :</em>
+  Beaucoup d"exemples de l"utilisation possible des CSS.
+
+  <em><a class="externe fr" href="http://www.toutjavascript.com/main/index.php3">Tout JavaScript</a> :</em>
+  Des tutoriaux sur le JavaScript.
+  
+  <em><a class="en externe" href="http://friendlybit.com/">Friendly Bit</a> :</em>
+  Plusieurs outils, ressources et articles intéressants et utiles (une liste complète des balises xhtml)
+  
+  <em><a class="en externe" href="http://www.culturedcode.com/css/reference.html">Properties CSS 2.1</a> :</em>
+  Une liste des propriétés CSS 2.1, leurs caractéristiques, leurs compatibilités, etc...
+
+  <em><a href="http://www.cssplay.co.uk/" class="en externe">CSS Play</a> :</em>
+  Plusieurs tests très poussés avec les CSS.
+
+  <em><a href="http://clb56.fr/" class="fr externe">clb56 - Tests en développement WEB</a> :</em>
+  Des tests intéressants avec php, javascript et CSS.
+
+  <em>Quelques autres sites intéressants :</em>
+  <a class="externe fr" href="http://www.uris-rhone-alpes.org/GestionSite/">http://www.uris-rhone-alpes.org/GestionSite/</a><br />
+  <a class="externe fr" href="http://richard.geneva-link.ch/">http://richard.geneva-link.ch/</a><br />
+  <a class="externe fr" href="http://xhtml.css.free.fr/">XHTML / CSS</a><br />
+  <a class="externe en" href="http://websitetips.com/">WebSite Tips</a>
+ </p>
+
+ <h3>Programmation</h3>
+ <p class="liste">
+  <em><a class="externe fr" href="http://www.developpez.com/">Dévellopez.com</a> :</em>
+  Une bibliothèque de tutoriels sur les différents langages (du web, mais aussi de programmation).
+  
+  <em><a class="externe fr" href="http://www.delphifr.com/">DelphiFR</a> :</em>
+  Des articles sur la programmation.
+  
+  <em><a href="http://osflash.org/" class="en externe">Open Source Flash</a> :</em>
+  Un projet open-source par des dévelopeurs flash.
+ </p>
+</div>
+
+<!--M U L T I M E D I A-->
+<div id="multimedia">
+<h2>Multimedia</h2>
+ <p class="liste">
+  <em><a href="http://media-convert.com/convertir/" class="fr externe">Media-Convert</a> :</em>
+  Un convertisseur de fichiers en ligne. Des dizaines de formats sont supportés.
+
+  <em><a href="http://www.zamzar.com/" class="externe en">Zamzar - Free online Conversion</a> :</em>
+  Un autre convertisseur de fichiers.
+  
+  <em><a href="http://www.peertv.fr/" class="fr externe">PeerTV</a></em>
+  Plusieurs chaînes de télévision à regarder sur internet.
+ </p>
+</div>
+<!--I M A G E S-->
+<div id="images">
+<h2>Images - Dessin - Graphisme</h2>
+ <h3>Icônes/Mini-bannières</h3>
+ <p class="liste">
+  <em><a class="externe en" href="http://www.famfamfam.com/">famfamfam.com</a> :</em>
+  Des centaines d"icones au format 16x16
+  
+  <em><a href="http://www.ndesign-studio.com/resources/mini-pixel-icons/" class="en externe">Mini Pixels Icons</a> :</em>
+  Une autre librairie d"icônes 16x16.
+  
+  <em><a href="http://sweetie.sublink.ca/" class="en externe">Sweetie | Free icon set</a> :</em>
+  Plus de 150 icones.
+
+  <em><a class="externe de" href="http://www.publicons.de/">Publicons.de</a> :</em>
+  Beaucoup de mini-bannières au format 80x15.
+
+  <em><a class="externe en" href="http://tiny.media.mit.edu/">Tiny icon factory</a> :</em>
+  Créez des icônes et ajoutez à la liste des milliers d"autres.
+
+  <em><a class="externe en" href="http://homeusers.brutele.be/jpbardiau/">Jpbardiau</a> :</em>
+  Un site excellent : de superbes images.
+  
+  <em><a class="externe en" href="http://www.mouserunner.com/">mouse runner.com</a> :</em>
+  Le propriétaire de ce site crée et distribue gratuitement ses images.
+ </p>
+
+ <h3>Plusieurs images,icônes et logos créés par des particuliers</h3>
+ <p class="liste">
+  <a class="externe fr" href="http://customxp.net/">CustomXP.net</a><br />
+  <a class="externe en" href="http://www.wincustomize.com/">Wincustomize</a><br />
+  <a class="externe fr" href="http://www.linuxgraphic.org/">LinuxGraphic</a><br />
+  <a class="externe en" href="http://www.deviantart.com/">Deviantart</a><br />
+  <a class="externe en" href="http://www.basehead.org/">Basehead</a><br />
+  <a class="externe fr" href="http://www.crystalxp.net/">CrystalXP</a><br />
+  <a class="externe fr" href="http://www.iconaholic.com/">IconAholic</a>
+ </p>
+
+ <h3>Outils</h3>
+ <p class="liste">
+  <em><a href="http://www.colorjack.com/studio/" class="externe en">Colorjack : Color generator</a> :</em>
+  Une palette de couleurs sophitiquée.
+  
+  <em><a href="http://www.easyrgb.com/math.php" class="en externe">Easy RGB</a> :</em>
+  Plusieurs outils pour faire de la conversion de couleurs : hexadécimal vers RGB, etc...
+
+  <em><a class="externe en" href="http://buttonator.com/">Buttonator</a> :</em>
+  Crééz rapidement des boutons, en choisissant la couleur, la taille, etc...<br />
+  
+  <em><a class="externe en" href="http://cooltext.com/">Cool Text :</a></em>
+  Idem
+
+  <em><a class="externe en" href="http://ajaxload.info/">Ajaxload</a> :</em>
+  Permet de créer de petites images animées.
+
+  <em><a class="externe en" href="http://www.customsigngenerator.com/">Custom Sign Generator</a> :</em>
+  Permet de générer des images. 
+
+  <em><a class="externe en" href="http://www.lucazappa.com/brilliantMaker/buttonImage.php">Brilliant Button Maker</a> :</em>
+  Permet de faire un bouton au format 80x15 pixels. 
+ </p>
+
+ <h3>Autres</h3>
+ <p class="liste">
+  <em><a class="externe en" href="http://web.okaygo.co.uk/apps/scratchpad/flashcom/">ScratchPad</a> :</em>
+  Vous pouvez dessiner avec plusieurs personnes dans un cadre.
+
+  <em><a class="fr" href="/logos/">Logos - Sylvain.sab</a> :</em>
+  La page logos de mon site. Vous y trouverez beaucoup d"images.
+
+  <em><a class="externe en" href="http://gug.sunsite.dk/?page=tutorials">[GUG] Tutorials</a> :</em>
+  Des tutoriels pour apprendre &agrave; utiliser The Gimp (le "clone" open source de Photoshop). 
+ </p>
+</div>
+
+<!--RECHERCHE-->
+<div id="recherche">
+<h2>Recherche</h2>
+ <p class="liste">
+  <em><a class="externe en" href="http://www.blackboxsearch.com/">BlackBox Search</a> :</em>
+  Ce site sert d"intermédiaire entre vous et les moteurs de recherche en les empêchant d"enregistrer vos requ&ecirc;tes.
+
+  <em><a class="externe en" href="http://www.turboscout.com/">TurboScout</a> :</em>
+  Ce moteur de recherche utilise plusieurs autres moteurs existants (Yahoo, google, msn....), ce qui permet d"en changer rapidement.
+
+  <em><a class="externe en" href="http://dearcomputer.nl/gir/">Google Image Ripper</a> :</em>
+  Lorsque vous trouvez une image qui vous interesse sur google,
+  vous devez cliquer sur plusieurs liens avant de pouvoir l"enregistrer (&agrave; cause des miniatures).<br />
+  Ce site affiche les images en taille réelle pour que vous puissiez directement les enregistrer. 
+  
+  <em><a class="externe en" href="http://www.inquisitorx.com/beta/">Inquisitor - Instant search</a> :</em>
+  Ce moteur de recherche utilise google et affiche les résultats &agrave; chaque fois que vous changez une lettre.
+
+  <em><a class="en" href="http://labs.google.com/">Google labs</a> :</em>
+  Plusieurs outils intéressants de google.
+  
+  <em><a class="externe en" href="http://www.koders.com/">Koders</a> :</em>
+  Un moteur de recherche... de code source ! (similaire à <a class="fr externe" href="http://www.google.com/codesearch/">Google codesearch</a>)
+
+  <em><a class="fr externe" href="http://www.exalead.com">Exalead</a> :</em>
+  Un moteur de recherche populaire. Une miniature de chaque page est affichée, c"est pratique.
+  
+  <em><a href="http://www.fulltorrent.net/" class="en externe">FullTorent.net</a> :</em>
+  Un moteur de recherche de fichiers torrent.
+  
+  <em><a href="http://www.diggtorrents.com/" class="en externe">Diggtorrents</a> :</em>
+  Un autre moteur de recherches de torrents.
+  
+  <em><a href="http://search.ftphost.net/" class="en externe">NAPALM FTP Indexer</a> :</em>
+  Permet de faire des recherches dans des serveurs FTP que des particulers mettent &agrave; disposition.
+  
+  <em><a href="http://search.creativecommons.org/" class="en externe">Creative Commons search</a> :</em>
+  Recherche dans google, yahoo, etc et n"affiche que le contenu sous licence creative commons.
+  
+  <em><a href="http://www.vdoogle.com/" class="en externe">VDoogle</a> :</em>
+  Recherche de vidéos.
+  
+  <em><a href="http://www.videoronk.com/" class="en externe">VideoRonk</a> :</em>
+  Encore un moteur de recherches de vidéos.
+  
+  <em><a href="http://olivier.coupelon.free.fr/teardrop/" class="en externe">Teardrop</a> :</em>
+  Un logiciel disponible pour MAC, Windows et Linux qui permet de rechercher des images, des fichiers, des pages WEB, etc...
+ </p>
+</div>
+
+<!--D I V E R S-->
+<div id="divers">
+<h2>Divers</h2>
+ <h3>Loisirs/Jeux/Humour/Divertissements</h3>
+ <p class="liste">
+  <em><a class="externe fr" href="http://www.bashfr.org/">BashFR.org</a> :</em>
+  Les perles du chat. Excellent.
+  
+  <em><a class="externe fr" href="http://www.labanane.org/">LaBanane.org</a> :</em>
+  Même auteur que Bashfr, un site de blagues. J"aime bien.
+  
+  <em><a class="externe fr" href="http://www.perlesdeprofs.com/">Perles de profs</a> :</em>
+  Un autre site sur le même modèle (design et organisation) bashfr.
+  
+  <em><a class="externe en" href="http://www.20q.net/">20q.net</a> :</em>
+  Le logiciel qui devine en 20 questions ce à quoi vous pensez.
+
+  <em><a class="externe en" href="http://www.elizium.nu/scripts/lemmings/">Lemmings</a> :</em>
+  Quelqu"un a refait le jeu lemmings, entièrement en JavaScript !
+
+  <em><a href="http://www.michaelbach.de/ot/" class="en externe">Optical Illusions</a> :</em>
+  Des illusions d"optique.
+  
+  <em><a href="http://www.animatedknots.com/" class="en externe">Animated Knotes</a> :</em>
+  Un site pour apprendre à faire toutes sortes de neuds.
+
+  <em><a class="externe en" href="http://www.origami.com">Origami</a></em>
+  Un site sur les origamis (les pliages et montages en papier).
+  
+  <em><a class="en externe" href="http://www.onemorelevel.com/">OneMoreLevel</a></em>
+  Des jeux flash.
+  
+  <em><a href="http://www.angryalien.com/" class="en externe">Angry Alien Production</a> :</em>
+  Des films célèbres résumés en trentes secondes avec des lapins. Marrant.
+  
+  <em><a href="http://www.beautifully-webdesign.net/" class="en externe">beautifully : webdesign</a> :</em>
+  Un liste de sites flash.
+  
+  <em><a class="externe fr" href="http://www.charabia.net/gen/index.php">Charabia.net</a> :</em>
+  Un générateur de charabia en tout genre. Rigolo.
+  
+  <em><a class="externe fr" href="http://www.argoteur.com/">L"Argoteur</a> :</em>
+  Change l"écriture des pages de diverses facons : javanais, inversé, etc.... C"est rigolo.
+  
+  <em><a class="externe en" href="http://www.chatcreator.com/">Chat Creator</a> :</em>
+  Un site pour créér vous-m&ecirc;me votre page de chat (temporaire).
+  Donnez un nom a votre page, puis indiquez l"url correspondante aux personnes auxquelles vous voulez parler.
+
+  <em><a href="http://skybeurk.net/" class="fr externe">Skybeurk Awards</a> :</em>
+  Les "pires" skyblogs du net. Navrant.
+  
+  <em><a href="http://www.wormux.org/" class="fr externe">Wormux</a> :</em>
+  Une sorte de remake du jeu Worms, mais open-source.
+  
+  <em><a href="http://www.dogmazic.net/" class="fr externe">Dogmazic</a></em>
+  Un site de musique libre.
+
+  <em><a href="http://jeuxlibres.net/" class="fr externe">Jeux libres</a> :</em>
+  Une liste de jeux vidéos libres.
+ </p>
+
+ <h3>Bureautique/Systèmes d"exploitation</h3>
+ <p class="liste">
+  <em><a class="externe fr" href="http://www.fredcavazza.net/index.php?2006/02/24/1077">FredCavazza</a> :</em>
+  Une suite bureautique en ligne.
+
+  <em><a class="externe en" href="http://www.youos.com/">YouOS</a> :</em>
+  Ce site simule un système d"exploitation dans le navigateur !!
+
+  <em><a class="externe en" href="http://www.visibone.com/font/FontResults.html">VisiBone</a> :</em>
+  Une liste de plusieurs polices de caractères.
+  
+  <em><a class="externe en" href="http://www.geocities.com/ben-fuzzybear/acronyms.html">Geocities.com - Acronymes</a> :</em>
+  Une liste d"acronymes utilisés.
+  
+  <em><a class="externe fr" href="http://membres.lycos.fr/cestquoiwindows/">C"est quoi Windows ?</a> :</em>
+  Un "Linuxien" qui a essayé Windows, et qui raconte son experience. C"est assez parlant.
+ </p>
+
+ <h3>Quelques services en ligne</h3>
+ <p class="liste">
+  <em><a href="http://mihd.net/" class="en externe">Upload - MiHD</a> :</em>
+  Un service d"upload et de stockage de fichiers, pour les partager ensuite.
+
+  <em><a href="http://www.mediafire.com/" class="en externe">MediaFire</a> :</em>
+  Un autre service de stockage.
+ </p>
+
+ <h3>Autres</h3>
+ <p class="liste">
+  <em><a class="externe fr" href="http://www.journaldunet.com/vitesse/">Test de connexion</a></em>
+  
+  <em><a class="externe fr" href="http://www.csszengarden.com/tr/francais/">CSS Zengarden</a> :</em>
+  Une démonstration de la "puissance" du CSS. Choisissez un style, la page est transformé mais le html reste le même.
+  
+  <em><a class="externe en" href="http://www.ultimatebootcd.com/">Ultimate Boot CD</a> :</em>
+  Un des plus populaire CD bootables. Très utile pour dépanner votre ordinateur s"il ne peut plus s"alummer :
+  il y a dessus des antivirus, des logiciels de vérification des disques... etc
+
+  <em><a class="externe fr" href="http://totalementcretin.apinc.org/">Totalement Cretin(s)</a> :</em>
+  Il y a de tout sur Internet. Et parfois, c"est vraiment idiot.
+
+  <em><a class="externe fr" href="http://stopdrm.info/">StopDRM !</a> :</em>
+  Un site fran&ccedil;ais contre les DRM et la loi DADVSI (qui est malheureusement passée...)
+  
+  <em><a class="externe en" href="http://www.webdevout.net/">Web Devout</a> :</em>
+  Un site qui explique plusieurs choses sur les navigateurs (notamment leur attitude face aux standards)
+  
+  <em><a class="externe fr" href="http://www.racketiciel.info/">Non aux Racketiciels</a> :</em>
+  La vente de logiciels avec un ordinateur (vente liée) est interdite :
+  normalement on ne devrait pas vendre Windows par défaut avec les ordinateurs que vous achetez.
+  
+  <em><a href="http://www.leconjugueur.com/" class="fr externe">Le Conjugueur</a> :</em>
+  Donnez un verbe, et il est conjugué à tous les temps !
+ </p>
+</div>
+
+<!--L I E N S-->
+<div id="liens">
+<h2>Liens</h2>
+ <p class="liste">
+  <em><a class="externe fr" href="http://www.mesfavs.com/">MesFavs</a></em>
+  <em><a class="externe fr" href="http://www.annuaire-liens.com/">Annuaire de liens</a></em>
+  <em><a class="externe fr" href="http://www.liensutiles.org/">liensutiles.org</a></em>
+  <em><a class="externe en" href="http://del.icio.us">Del.icio.us</a></em>
+  <em><a class="externe en" href="http://de.lirio.us/">De.lirio.us</a></em>
+  <em><a class="externe en" href="http://sandbox.sourcelabs.com/livemarks/">LiveMarks</a></em>
+  <em><a class="externe en" href="http://www.flavius.ro/">Sites sur les CSS</a></em>
+ </p>
+</div>
+<?php require'autres/source-bas.php';?>
blob - /dev/null
blob + 18ebafdfb39910bed180277f325315c330b48ff3 (mode 644)
--- /dev/null
+++ logiciels/avast.php
@@ -0,0 +1,20 @@
+<?php
+$titre='Avast';
+$head['access'][0]=array('rel'=>'index','href'=>'./','title'=>'Index de la rubrique &#34;Logiciels&#34;');
+require'../autres/source-haut.php'?>
+<h1><img class='t128' alt="Avast!" src="/img/big/avast128.png" />Avast!</h1>
+<p>Avast est un excellent antivirus:</p>
+<ul>
+  <li>Il est gratuit(dans cette version).</li>
+  <li>Il est simple à configurer et à utiliser.</li>
+  <li>Il y a des mises a jour régulières(important pour ce type de logiciel).</li>
+  <li>C'est l'un des antivirus le plus performant, apprécié et utilisé.</li>
+  <li>Il est en français.</li>
+</ul>
+<hr />
+<p>Site officiel : <a href="http://www.avast.com/" hreflang="en">http://www.avast.com/</a></p>
+<p>
+  Télécharger la version 4 de Avast! Home en français (gratuit)
+  <a href="http://files.avast.com/iavs4pro/setupfre.exe">Depuis le site officiel</a>
+</p>
+<?php require'../autres/source-bas.php'?>
blob - /dev/null
blob + 85beb54890dbdcecb64986c823969b68408c6ffb (mode 644)
--- /dev/null
+++ logiciels/ccleaner.php
@@ -0,0 +1,24 @@
+<?php
+$titre='Ccleaner';
+$head['access'][0]=array('rel'=>'index','href'=>'./','title'=>'Index de la rubrique &#34;Logiciels&#34;');
+require'../autres/source-haut.php'?>
+<h1><img class='t128' alt="" src="/img/big/ccleaner128.png" />Craps Cleaner</h1>
+<p>Le logiciels Craps Cleaner est très pratique :</p>
+<ul>
+  <li>Il est gratuit.</li>
+  <li>Il permet plusieurs choses : effacer ses traces, les erreurs du registre(il peut y en avoir des milliers),
+      contrôler les programmes qui se lancent au démarrage, etc...</li>
+  <li>Il protège votre vie privée.</li>
+  <li>Il est en français.</li>
+  <li>Il est très léger (seulement 16 fichiers ou 1.33 Mo).</li>
+  <li>Il et mis &agrave; jour régulièrement.</li>
+  <li>Il est simple d'utilisation et vous pouvez automatiser le nettoyage de votre ordinateur
+      pour ne plus devoir vous en occuper.</li>
+</ul>
+<hr />
+<p>Site officiel : <a href="http://www.ccleaner.com/" hreflang="en">http://www.ccleaner.com</a></p>
+<p>Télécharger la version 1.34.407 :<br />
+<a href="http://www.filehippo.com/download_ccleaner/">Depuis FileHippo</a><br />
+<a href="telecharger/ccsetup134.exe">Depuis mon site.</a></p>
+<p>Voir également : <a href="/configurer/ccleaner.php">Configurer Ccleaner</a></p>
+<?php require'../autres/source-bas.php'?>
blob - /dev/null
blob + 3925fea64c82096e96c1463c6248b2fcbfc7feb0 (mode 644)
--- /dev/null
+++ logiciels/dbpoweramp.php
@@ -0,0 +1,12 @@
+<?php
+$titre='dBpowerAMP Music Converter';
+$head['access'][0]=array('rel'=>'index','href'=>'./','title'=>'Index de la rubrique &#34;Logiciels&#34;');
+require'../autres/source-haut.php'?>
+<h1><img src="/img/big/dbpoweramp128.png" class="t48" alt="" />dBPowerAMP Music Converter</h1>
+<p>Ce logiciel très pratique permet de convertir plusieurs fichiers audios ou vidéos dans plusieurs formats : mp3, wma, ogg, wave...<br />
+   On peut également choisir la qualité de l'encodage, et la fréquence, ou convertir plusieurs pistes à la fois,
+   depuis n'importe quels fichiers.<br />
+   De plus, le logiciel peut aller lui-même chercher les références du fichier sur internet.<br />C'est un logiciel gratuit.</p>
+<hr />
+<p>Site officiel : <a href='http://dbpoweramp.com/dmc.htm' class='en externe'>http://dbpoweramp.com/</a></p>
+<?php require'../autres/source-bas.php'?>
blob - /dev/null
blob + a5ec7f0476ebe3337a5e4baa0bfa17215d6b2ec8 (mode 644)
--- /dev/null
+++ logiciels/firefox.php
@@ -0,0 +1,142 @@
+<?php
+$titre='Firefox / Opera / Lynx';
+$head['access'][0]=array('rel'=>'index','href'=>'./','title'=>'Index de la rubrique &#34;Logiciels&#34;');
+require'../autres/source-haut.php'?>
+
+<h1><img class='t64' alt="" src="/img/moyen/firefox64.png" />Firefox</h1>
+<p>Firefox est une très bonne alternative a un autre navigateur comme Internet Explorer :</p>
+<ul><li>Il est gratuit et open-source.</li>
+    <li>Il permet la navigation par onglets.</li>
+    <li>Il gère les flux RSS.</li>
+    <li>Vous pouvez lui associer des extensions, plugins, thèmes... pour améliorer votre confort de navigation.</li>
+    <li>Il est plus sécurisé (pas d'ActiveX).</li>
+    <li>Il est plus agréable à utiliser.</li>
+    <li>Il possède un filtre anti-pop-up (ces fenêtres agaçantes qui surgissent lorsque vous naviguez).</li>
+    <li>Lors de l'installation, vous pouvez importer tous vos favoris, historiques... Depuis IE ou un autre navigateur.</li>
+    <li>... etc. Il y a tellement d'avantages que je ne peux pas tous les citer.</li></ul>
+<hr />
+<p style="text-align: center;">
+<strong>Pour des raisons de sécurité, je vous recommande de laisser tomber Internet Explorer et d'utiliser Firefox.</strong></p>
+<p>Vous pourrez si vous le voulez continuer &agrave; utiliser Internet Explorer. Cela ne provoquera aucun "bug" dans votre
+   ordinateur et ne changera pas vos habitudes(l'interface, personnalisable grace aux extensions, reste pratiquement la même).</p>
+<hr />
+<p>Sites officiels : <a href="http://www.mozilla-europe.org/fr/products/firefox/" hreflang="fr">http://www.mozilla-europe.org/fr/products/firefox/</a></p>
+<p>Extensions, plugins, thèmes... : <a href="http://extensions.geckozone.org/Firefox/" hreflang="fr">http://extensions.geckozone.org/Firefox/</a> et
+   <a href="https://addons.mozilla.org/firefox/" hreflang="en">https://addons.mozilla.org/firefox/</a></p>
+<p>Télécharger la version 2.0 en français <a href="http://download.mozilla.org/?product=firefox-2.0&amp;os=win&amp;lang=fr">Depuis le site officiel</a></p>
+<hr />
+<h4 id='extensions'>Extensions</h4>
+<p>J'utilise beaucoup d'extensions. Je vous en donne la liste ici :</p>
+<?php
+/*
+<dl><dt><a href=''></a></dt>
+    <dd></dd>
+    <dt><a href=''></a></dt>
+    <dd></dd>
+    <dt><a href=''></a></dt>
+    <dd></dd>
+    <dt><a href=''></a></dt>
+    <dd></dd>
+    <dt><a href=''></a></dt>
+    <dd></dd>
+    <dt><a href=''></a></dt>
+    <dd></dd>
+</dl>
+    <dt><a href=''></a></dt>
+    <dd></dd>*/
+?>
+<ul>
+  <li><a class='fr externe' href="http://extensions.geckozone.org/FireFTP">FireFTP</a><br />Un client FTP très pratique,
+          pas besoin d'en installer un autre comme ceci.</li>
+  <li><a class='fr externe' href="http://extensions.geckozone.org/GetJetableMail">Get jetable mail</a><br />
+          Pour obtenir une adresse jetable sur des sites si vous ne voulez pas donner votre adresse e-mail.
+          Vous pouvez choisir pendant combien de temps les e-mails qui arriveront à cette adresse vous seront renvoyés à votre
+          réelle adresse e-mail.</li>
+  <li><a class='fr externe' href="http://extensions.geckozone.org/SortExtensions">Sort extensions and themes</a><br />Classe alphabétiquement
+          vos extensions, vos thèmes, vos plugins...</li>
+  <li id='webdeveloper'><a class='fr externe' href="http://joliclic.free.fr/mozilla/webdeveloper/">WebDeveloper</a><br />
+          Une extension vraiment très pratique et utile, pour les Webmasters comme tout le monde :<br />
+          Pour les webmasters :
+            <ul>
+              <li>Outils pour valider le code css, html, rss, les liens... d'une page.</li>
+              <li>Vous pouvez voir en quelques clics plusieurs informations sur divers éléments :
+                  blocs, paragraphes, liens, balises...</li>
+              <li>Autres outils pour voir les caractéristiques et la construction d'une page web : tableau, liens, frames...</li>
+              <li>etc...</li>
+            </ul>
+          Pour tout le monde :
+            <ul>
+              <li>Option pour voir le code source d'une page.</li>
+              <li>Reconstruisez &agrave; volonté le code html ou css :
+                  utile pour changer le design a votre gout par exemple.</li>
+              <li>Plusieurs options pour les images.</li>
+              <li>Un bouton pour effacer ses traces.</li>
+              <li>Permet de changer le code PHP.</li>
+              <li>Permet de bloquer les cookies, le cache, les javascripts...</li>
+              <li>etc...</li>
+            </ul>
+  </li>
+  <li id="navibar"><a class='fr externe' href="http://extensions.geckozone.org/Navibar">Navibar</a><br />
+          Une extension qui permet d'afficher le plan d'un site dans la barre latérale.
+          Vous pouvez d'ailleur voir le plan de mon site avec cette extension.
+          Cependant le site qui proposait cette extension n'est plus en ligne, je la propose ici en téléchargement :
+          <a class='fr externe' href="telecharger/firefoxnavibar0101.xpi">telecharger/firefoxnavibar0101.xpi</a></li>
+  <li id="adblockplus"><a class='fr externe' href="http://extensions.geckozone.org/AdblockPlus">Adblock Plus</a><br />
+          Bloque énormément de publicités, quel que soit leur format (Bannières, Flash, JavaScript, Pop-Ups...).
+          Vraiment très efficace</li>
+  <li><a class='en externe' href="https://addons.mozilla.org/firefox/1136/">FilterSet G Updater</a><br />
+          Télécharge et installe automatiquement les nouvelles listes de publicités a bloquer pour AdBlock</li>
+  <li><a class='fr externe' href="http://extensions.geckozone.org/DownloadStatusbar">Download Statusbar</a><br />
+          Remplace le fen&ecirc;tre de téléchargement par des barre de progression en bas de la fen&ecirc;tre de Firefox.
+          Ainsi vous n'avez qu'une fen&ecirc;tre et vous pouvez voir la progression de chaque téléchargement</li>
+  <li><a class='en externe' href="http://roachfiend.com/archives/2005/02/07/bugmenot/">BugMeNot</a><br />
+          Permet d'utiliser les mots de passe du site <a class='fr externe' href="http://www.bugmenot.com">http://www.bugmenot.com</a>.
+          Ce site repertorie plusieurs mots de passe de sites ou l'inscription est obligatoire.
+          Vous pouvez ainsi vous connecter à certains sites sans vous inscrire.</li>
+  <li><a class='en externe' href="https://addons.mozilla.org/firefox/249/">Html Validator</a><br />
+          Vérifie le code Html de chaque page avec le logiciel Tidy. Peut corriger le code s'il n'est pas valide.
+          Vous évite ainsi de passer par le W3C et permet de valider plus rapidement les pages.</li>
+  <li><a class='fr externe' href="http://ersplus.free.fr/spip/article.php?id_article=143">Mass Installer</a><br />
+          Permet d'installer plusieurs extensions en une seule fois</li>
+  <li><a class='en externe' href="http://sage.mozdev.org/">Sage</a><br />
+          Un lecteur de Flux RSS. Il vous permet de gérer plusieurs flux RSS a la fois, affiche chaque flux rss lisiblement, etc...
+          C'est une très bonne extension.</li>
+  <li><a class='fr externe' href="http://extensions.geckozone.org/PearlCrescentPageSaver">Pearl Crescent Page Saver Basic</a><br />
+          Permet de faire une capture au format png d'image d'une page Web,
+          quelle que soient ses dimensions. Beaucoup plus pratique que de faire "enregistrer sous"</li>
+</ul>
+<hr />
+<h1 id="opera"><img class='t128' alt="" src="/img/big/opera128.png" />Opera</h1>
+<p>Opera est un autre très bon navigateur, performant, rapide et gratuit.<br />
+   Il possède un lecteur de flux RSS, la navigation par onglets...<br />
+   Vous pouvez utiliser plusieurs outils pour changer le style, ou afficher certaines options.<br />
+   Par exemple, il y a un mode "accessibilité" ou encore une fonction qui permet d'afficher la structure de la page 
+   (balises html, fichiers attachés...).<br />
+   C'est un bon navigateur, mais aussi un outil pratique pour Webmaster.<br />
+   D'ailleurs il est plus respectueux des standards que Firefox.</p>
+<p>Site officiel : <a hreflang="en" href="http://www.opera.com/">http://www.opera.com/</a></p>
+<p>Télécharger directement depuis le site officiel : 
+   <a href="http://www.opera.com/download/get.pl?id=28418">http://www.opera.com/download/get.pl?id=28418</a></p>
+<hr />
+<h1 id="lynx"><img class='t48' src="/img/moyen/lynx48.png" alt="" />Lynx</h1>
+<p>Lynx est un navigateur en mode texte : pas d'images, pas de CSS, pas de JavaScript...<br />
+   Evidemment il est très restreint, mais c'est la sécurité absolue
+   (à chaque fois qu'un cookie est crée il vous demande si vous l'acceptez).
+   <br />Vous ne pouvez pas non plus utiliser la souris, la navigation se fait au clavier
+   <br />Je ne l'utilise pas comme navigateur, mais plutôt pour tester mon site.</p>
+<p>Site officiel : <a href="http://lynx.isc.org/" class='en externe'>http://lynx.isc.org/</a></p>
+<p>Télécharger Lynx pour Windows 
+   <a href="telecharger/lynx285.exe">Depuis mon site</a><br />
+   Pour Linux : voir la page du site officel : 
+   <a href="http://lynx.isc.org/current/index.html" class='en externe'>http://lynx.isc.org/current/index.html</a>
+</p>
+<p>
+  Quelques liens sur Lynx à voir :<br />
+  Les options dans Lynx : 
+  <a href="http://jp.barralis.com/linux-man/man1/lynx.1.php" hreflang='fr' class='fr externe'>http://jp.barralis.com/linux-man/man1/lynx.1.php</a>
+  <br />Les commandes usuelles :
+  <a href="http://dominique.guebey.club.fr/tekno/lynx/lynx_com.htm" hreflang='fr' class='fr externe'>http://dominique.guebey.club.fr/tekno/lynx/lynx_com.htm</a>
+  <br />Lynx sur Wikipedia : 
+  <a href="http://fr.wikipedia.org/wiki/Lynx_(navigateur)" hreflang='fr' class='fr wiki externe'>http://fr.wikipedia.org/wiki/Lynx_(navigateur)</a>
+</p>
+<?php require'../autres/source-bas.php'?>
blob - /dev/null
blob + 0f5b29e4e8d0afca3b86efef1f7c0051dbe66900 (mode 644)
--- /dev/null
+++ logiciels/iconedit.php
@@ -0,0 +1,18 @@
+<?php
+$titre='IconEdit32';
+$head['access'][0]=array('rel'=>'index','href'=>'./','title'=>'Index de la rubrique &#34;Logiciels&#34;');
+require'../autres/source-haut.php'?>
+<h1><img src="/img/moyen/iconedit48.png" class="t48" alt="" />Icon edit 32</h1>
+<p>
+  IconEdit32 est un éditeur et créateur  d'icones. Vous pouvez créér des icones pour
+  personaliser votre ordinateur, ou des favicones pour vos sites WEB.<br />
+  C'est d'ailleurs avec ce logiciel que j'ai créé  la favicon de ce site.
+</p>
+<p>Vous pouvez créér des icones au format 48x48, 32x32, ou 16x16, en 256, 16 couleurs ou noir et blanc.</p>
+<hr />
+<p>L'accès au fichier est maintenant payant, mais son  utilisation est gratuite.</p>
+<p>Vous pouvez le  télécharger légalement et gratuitement <a href="telecharger/iedit32.zip">depuis mon site</a>
+   ou à l'adresse <a  href="http://www.onlythebestfreeware.com/program.asp?program_id=135" hreflang="en">
+   http://www.onlythebestfreeware.com/program.asp?program_id=135</a>.
+</p>
+<?php require'../autres/source-bas.php'?>
blob - /dev/null
blob + 61cf9c3660273a4617173c9f7c7368538d67a681 (mode 644)
--- /dev/null
+++ logiciels/iconsushi.php
@@ -0,0 +1,14 @@
+<?php
+$titre='@icon Sushi';
+$head['access'][0]=array('rel'=>'index','href'=>'./','title'=>'Index de la rubrique &#34;Logiciels&#34;');
+require'../autres/source-haut.php'?>
+<h1><img src="/img/moyen/aicon32.png" class='t32' alt="@" />@icon Sushi</h1>
+<p>@icon sushi est un logiciel qui vous permet d'extraire des ic&ocirc;nes : L'ic&ocirc;ne d'un programme vous plait ?<br />
+   Utilisez @icon sushi pour extraire l'image d'une dll ou d'un .exe, ou encore d'une image d&eacute;j&agrave; existante.<br />
+  Vous pouvez ensuite &eacute;diter l'image, ou l'enregistrer au format ico/bmp/png.<br />
+  Le fichier C:\Windows\system32\shell32.dll contient &eacute;norm&eacute;ment d'icones. Vous pouvez les extraire avec ce logiciel.</p>
+<hr />
+<p>Site officiel : <a href="http://www.towofu.net/soft/e-aicon.php" hreflang="en">http://www.towofu.net/soft/e-aicon.php</a><br />
+  T&eacute;l&eacute;charger la version 1.20
+  <a href="http://www.towofu.net/cgi-bin/download/download.cgi?name=aicon120setup_e.exe">Depuis le site officiel</a></p>
+<?php require'../autres/source-bas.php'?>
blob - /dev/null
blob + 09ba77ec1e5b9dbb5c4b822ec76aa402044455d7 (mode 644)
--- /dev/null
+++ logiciels/index.php
@@ -0,0 +1,115 @@
+<?php

+$titre='Logiciels';

+$head='<link rel="stylesheet" type="text/css" href="../autres/css/logiciels.css" />';

+require'../autres/source-haut.php'?>

+<h1>Logiciels</h1>

+    <hr />

+    <p class="pintro">

+      Voici plusieurs logiciels pour la plupart gratuits, que je vous recommande.<br />

+      Ils fonctionnent tous sous Windows, et beaucoup existent également pour Linux ou MAC.<br />

+      Attention cependant, les versions des logiciels que je

+      propose en téléchargement sont pour Windows. Si vous voulez

+      les versions d'un autre OS, il faudra vous rendre sur le site

+      officiel.</p>

+ <p>Quels logiciels voulez-vous voir ?<br />

+ || <a href="#internet">Internet</a>|| <a href="#securite">Sécurité</a>|| <a href="#utilitaires">Utilitaires</a>|| <a href="#multimedia">Multimédia</a>|| <a href="#siteprog">Site / Programmation</a>|| <a href="#graphisme">Graphisme / Dessin</a>||</p>

+ <p>Vous pouvez également voir <a href="telecharger/">une page regroupant tous les fichiers a télécharger</a></p>

+ 

+<!--I N T E R N E T-->

+<h2 id="internet">Internet</h2>

+

+  <div class="log"><h6><a href="firefox.php">Firefox</a><span class="log2"> / <a href="firefox.php#opera">Opera</a> / <a href="firefox.php#lynx">Lynx</a></span></h6>

+  <p><a href="firefox.php"><img class='t48' alt="" src="/img/moyen/firefox48.png" /></a>Un navigateur puissant et sécurisé.</p>

+  </div>

+

+  <div class="log"><h6><a href="thunderbird.php">Thunderbird</a></h6>

+  <p><a href="thunderbird.php"><img class='t48' alt="" src="/img/moyen/thunderbird48.png" /></a>Un courrielleur efficace.</p>

+  </div>

+

+  <div class="log"><h6><a href="stardown.php">Star Downloader</a></h6>

+  <p><a href="stardown.php"><img class='t48' alt="" src="/img/moyen/stardown48.png" /></a>Un bon gestionnaire de téléchargements.</p>

+  </div>

+

+

+<!--S E CU R I T E-->

+<h2 id="securite">Sécurité</h2>

+

+  <div class="log"><h6><a href="avast.php">Avast</a></h6>

+  <p><a href="avast.php"><img class='t48' alt="" src="/img/moyen/avast48.png" /></a>Un excellent antivirus.</p>

+  </div>

+

+  <div class="log"><h6><a href="spybot.php">Spybot - Search and Destroy</a><span class="log2"> / <a href="spybot.php#adaware">Ad - Aware</a></span></h6>

+  <p><a href="spybot.php"><img class='t48' alt="" src="/img/moyen/adaware48.png" /></a>De bons anti-spywares.</p>

+  </div>

+

+  <div class="log"><h6><a href="zonealarm.php">Zone Alarm</a></h6>

+  <p><a href="zonealarm.php"><img class='t48' alt="" src="/img/moyen/zonealarm48.png" /></a>Un mur de feu gratuit, simple et efficace.</p>

+  </div>

+

+

+<!--U T I L I T A I R E S-->

+<h2 id="utilitaires">Utilitaires</h2>

+

+  <div class="log"><h6><a href="ccleaner.php">Craps Cleaner</a></h6>

+  <p><a href="ccleaner.php"><img class='t48' alt="" src="/img/moyen/ccleaner48.png" /></a>Faire le ménage sur le disque dur.</p>

+  </div>

+

+  <div class="log"><h6><a href="avast.php">Pagedefrag</a></h6>

+  <p><a href="pagedefrag.php"><img class='t32' alt="" src="/img/moyen/pagedefrag32.png" /></a>Un logiciel gratuit et efficace.</p>

+  </div>

+

+

+<!--M U L T I M E D I A-->

+<h2 id="multimedia">Multimédia</h2>

+

+  <div class="log"><h6><a href="winamp.php">Winamp</a><span class="log2"> / <a href="winamp.php">VLC Media Player</a></span></h6>

+  <p><a href="winamp.php"><img class='t48' alt="" src="/img/moyen/winamp48.png" /></a>Lire tous les fichiers audios et vidéos.</p></div>

+  

+  <div class='log'><h6><a href='dbpoweramp.php'>dBPowerAMP Music Converter</a></h6>

+  <p><a href='dbpoweramp.php'><img src='/img/moyen/dbpoweramp48.png' class='t48' alt='' /></a>Convertir des fichiers multimédia.</p></div>

+

+

+<!--S I T E / P R O G R A M M A T I O N-->

+<h2 id="siteprog">Site / Programmation</h2>

+

+ <!--SITE-->

+ <h3>Site</h3>

+

+  <div class="log"><h6><a href="nvu.php">Nvu</a></h6>

+  <p><a href="nvu.php"><img class='t48' alt="" src="/img/moyen/nvu48.png" /></a>Un bon éditeur xhtml/css.</p></div>

+

+  <div class="log"><h6><a href="xenu.php">Xenu's Link Sleuth</a></h6>

+  <p><a href="xenu.php"><img class='t32' alt="" src="/img/moyen/xenu32.png" /></a>Vérifiez rapidement tous les liens de votre site.</p>

+  </div>

+

+  <div class="log"><h6><a href="tidy.php">TidyGUI</a></h6>

+  <p><a href="tidy.php"><img src="/img/moyen/tidy32.png" alt="" class='t32' /></a>Votre code est-il valide ?</p>

+  </div>

+

+ <!--PROGRAMMATION-->

+ <h3>Programmation</h3>

+

+  <div class="log"><h6><a href="pspad.php">PSPad Editor</a></h6>

+  <p><a href="pspad.php"><img class='t48' alt="" src="/img/moyen/pspad48.png" /></a>Un excellent éditeur multi-codes (java/python/c++/perl/php/html/css/JavaScript/etc....).</p>

+  </div>

+

+

+<!--G R A P H I S M E-->

+<h2 id="graphisme">Graphisme / Dessin</h2>

+

+ <!--I C O N E S-->

+ <h3>Icones</h3>

+

+  <div class="log"><h6><a href="iconedit.php">IconEdit32</a></h6>

+  <p><a href="iconedit.php"><img class='t48' alt="" src="/img/moyen/iconedit48.png" /></a>Créez vos icônes.</p>

+  </div>

+

+  <div class="log"><h6><a href="iconsushi.php">@iconSushi</a></h6>

+  <p><a href="iconsushi.php"><img class='t32' alt="" src="/img/moyen/aicon32.png" /></a>Pour extraire des images de vos logiciels.</p>

+  </div>

+ <!--Utilitaires-->

+ <h3>Utilitaires</h3>

+  <div class="log"><h6><a href="shoot2png.php">Shoot2png</a></h6>

+  <p><a href="shoot2png.php"><img src="/img/moyen/shoot2png32.png" alt="" class='t32' /></a>Faire des captures d'écran rapidement</p>

+  </div>

+<?php require'../autres/source-bas.php'?>

blob - /dev/null
blob + 166372a44a830ecbfadd4374776cd219a426ff52 (mode 644)
--- /dev/null
+++ logiciels/nvu.php
@@ -0,0 +1,42 @@
+<?php
+$titre='Nvu';
+$head['access'][0]=array('rel'=>'index','href'=>'./','title'=>'Index de la rubrique &#34;Logiciels&#34;');
+require'../autres/source-haut.php'?>
+<h1><img class="t128" alt="Nvu"  src="/img/big/nvu128.png" /></h1>
+<p>Nvu est un bon &eacute;diteur&nbsp;
+  <abbr title="What You See Is What You Get : &laquo;ce que vous voyez est ce que vous obtenez&raquo;">WYSIWYG</abbr> :</p>
+<ul><li>Vous pouvez travailler au niveau du code html ou en mode normal
+        (<abbr  title="What You See Is What You Get : &#34;ce que vous voyez est ce que vous obtenez&#34;">WYSIWYG</abbr>).</li>
+    <li>Une fonction est incorpor&eacute;e pour valider directement vos fichiers html avec le validateur du W3C.</li>
+    <li>Il respecte les standards (contrairement à Frontpage et autres(Word ou Publisher qui ne sont m&ecirc;me pas con&ccedil;us pour la
+        r&eacute;alisation de pages WEB!)).</li>
+    <li>Il poss&egrave;de un Client FTP pour publier vos pages et vos fichiers.</li>
+    <li>Il poss&egrave;de &eacute;galement un gestionnaire de sites pour G&eacute;rer plusieurs sites plus simplement.</li>
+    <li>En lui ajoutant des extensions, vous pouvez :
+      <ul>
+        <li>V&eacute;rifier le code html avec <a href="tidy.php">TidyGUI</a> depuis le menu.</li>
+        <li>Editer les regles CSS &agrave; la main.</li>
+        <li>Utiliser un correcteur et nettoyeur de code html en quelques clics.</li></ul></li></ul>
+<hr />
+<p>Site officiel :
+  <a href="http://frenchmozilla.sourceforge.net/nvu/" hreflang="fr">http://frenchmozilla.sourceforge.net/nvu/</a></p>
+<p>T&eacute;l&eacute;charger Nvu
+   <a href="http://frenchmozilla.sourceforge.net/nvu/#install" hreflang='fr' class='fr externe'>Depuis le site officiel</a></p>
+<hr />
+<h5>Extensions :</h5>
+<dl><dt><a href="http://extensions.geckozone.org/HandCoder/" hreflang="fr">HandCoder</a></dt>
+    <dd>Pour ouvrir l'&eacute;diteur de son choix depuis Nvu et &eacute;diter les pages html,
+        mais aussi et surtout pour v&eacute;rifier en quelques clics le code html avec Tidy.</dd>
+    <dt><a href="http://extensions.geckozone.org/HTMLHeader/" hreflang="fr">Html Header</a></dt>
+    <dd>Permet de visualiser les balises contenues dans l'&eacute;l&eacute;ment head et de les &eacute;diter
+        avec une interfacegraphique (sans passer par le code source).</dd>
+    <dt><a href="http://extensions.geckozone.org/KaZcadeS/" hreflang="fr">KaZcadeS</a></dt>
+    <dd>Un &eacute;diteur CSS qui corrige les bugs de l'ancien &eacute;diteur par d&eacute;faut de Nvu
+        (CasCadeS) et qui permet d'&eacute;diter le code (mode expert).</dd>
+    <dt><a href="http://extensions.geckozone.org/NsmExtender/" hreflang="fr">Nsm Extender</a></dt>
+    <dd>Ajoute des fonctions au gestionnaire de sites.</dd>
+    <dt><a hreflang="fr" href="http://extensions.geckozone.org/NvuTutorial/">Nvu Tutorial</a></dt>
+    <dd>Un tutoriel pour apprendre &agrave; utiliser Nvu et faire des pages respectueuses des standards.</dd>
+    <dt><a href="http://extensions.geckozone.org/urlCleaner/" hreflang="fr">Url Cleaner</a></dt>
+    <dd>Transforme les liens absolus en liens relatifs, et autres.</dd></dl>
+<?php require'../autres/source-bas.php'?>
blob - /dev/null
blob + 7f24cc52986188b0f57abf87e88301737aaab4a8 (mode 644)
--- /dev/null
+++ logiciels/pagedefrag.php
@@ -0,0 +1,19 @@
+<?php
+$titre='Pagedefrag';
+$head['access'][0]=array('rel'=>'index','href'=>'./','title'=>'Index de la rubrique &#34;Logiciels&#34;');
+require'../autres/source-haut.php'?>
+<h1><img class='t32' alt="Page Defrag"  src="../img/moyen/pagedefrag32.png" />Pagedefrag</h1>
+<p>Ce logiciel est un tr&egrave;s bon utilitaire pour d&eacute;fragmenter les fichiers systèmes :</p>
+<ul><li>Il peut d&eacute;fragmenter le fichier d'&eacute;change (pagefile.sys).</li>
+    <li>Il est tr&egrave;s l&eacute;ger (3 fichiers sur votre ordinateur ou 132 Ko).</li>
+    <li>Il d&eacute;fragmente &eacute;galement la base de registres.</li></ul>
+<hr />
+<!--<p>Site officiel : 
+Le site a malheuresement été racheté par microsoft :-(
+  <a href="http://www.sysinternals.com/" class='en externe'>http://www.sysinternals.com/</a></p>-->
+<p>T&eacute;l&eacute;charger : <a href="telecharger/pagedefrag.zip">Depuis mon site</a><br />
+  <a href="http://download.sysinternals.com/Files/PageDefrag.zip">Depuis le site officiel</a></p>
+<!--<p>Note : La soci&eacute;t&eacute; Sysinternals qui  distribue ce logiciel gratuitement distribue &eacute;galement
+   plusieurs autres utilitaires. N'h&eacute;sitez pas &agrave; faire un tour sur leur site.
+</p>-->
+<?php require'../autres/source-bas.php'?>
blob - /dev/null
blob + 7cd98f4c956a7abe0b859545ef6e38c5b9788924 (mode 644)
--- /dev/null
+++ logiciels/pspad.php
@@ -0,0 +1,20 @@
+<?php
+$titre='PSPad Editor';
+$head['access'][0]=array('rel'=>'index','href'=>'./','title'=>'Index de la rubrique &#34;Logiciels&#34;');
+require'../autres/source-haut.php'?>
+<h1><img src="/img/big/pspad128.png"  alt="PSPad" class="t128" />PSPad</h1>
+<p>Pspad est un &eacute;diteur multi-codes tr&egrave;s complet :</p>
+<ul><li>Il g&egrave;re les langages Html, CSS, Java, Javascript, PHP, C++, C#, C, Python, Perl et beaucoup d'autres.</li>
+  <li>La coloration syntaxique (colorer le code pour mieux s'y retrouver) est disponible et activ&eacute;e par d&eacute;faut.</li>
+  <li>Vous pouvez en quelques clics dans le menu v&eacute;rifier le code de vos pages html avec <a href="tidy.php">tidy</a>.</li>
+  <li>Un client <abbr  title="File Transfert protocol : Protocole de transfert de fichiers">FTP</abbr>
+      est integr&eacute; pour publier facilement vos fichiers.</li>
+  <li>Vous pouvez voir directement le rendu de vos pages dans le logiciel</li>
+  <li>Vous pouvez valider vos fichiers html, CSS ou RSS depuisle logiciel.</li>
+  <li>Il peut reformater le code html pour le rendre moins lourd.</li></ul>
+<p>C'est vraiment l'&eacute;diteur &agrave; tout  faire et qu'il faut avoir.</p>
+<hr />
+<p>Site officiel : <a href="http://www.pspad.com/fr/" hreflang="fr">http://www.pspad.com/fr/</a></p>
+<p>T&eacute;l&eacute;charger : <a href="telecharger/pspadeditor451.exe">Depuis mon site (version 4.5.1)</a><br />
+   <a  href="http://www.pspad.com/fr/download.php" hreflang="fr">Depuis le site officiel</a></p>
+<?php require'../autres/source-bas.php'?>
blob - /dev/null
blob + b9beab6b10e519e4f1761baf5f9f9d4d890538b2 (mode 644)
--- /dev/null
+++ logiciels/shoot2png.php
@@ -0,0 +1,17 @@
+<?php

+$titre='Shoot2png';

+$head['access'][0]=array('rel'=>'index','href'=>'./','title'=>'Index de la rubrique &#34;Logiciels&#34;');

+require'../autres/source-haut.php'?>

+<h1><!--[if !IE]><--><img class='t48' alt='' src="/img/moyen/shoot2png48.png" /><!--><![endif]-->

+<!--[if IE]><img class='t48' src="/img/moyen/gifsie/shoot2png48.gif" /><![endif]-->Shoot2png</h1>

+<p>Shoot2png est un bon freeware (logiciel gratuit) qui vous permet de prendre des captures d'écran au format png, gif ou jpg.<br />

+   Il permet de capturer tout l'écran, seulement la fenêtre ouverte ou une sélection.<br />

+   Vous pouvez également redimmensionner l'image, ou avoir un aperçu dans votre logiciel de graphisme/dessin par défaut,

+   et il a plusieurs autres fonctionnalités.</p>

+<p>De plus, il ne prend qu'un fichier et ne nécéssite aucune installation ni fichier supplémentaire, et ne laisse pas de trace

+   sur le disque dur.<br />(pour le "désinstaller", il suffir d'effacer le fichier).</p>

+<hr />

+<p>Site officiel : <a href="http://www.scaranet.net/" hreflang="fr">http://www.scaranet.net/</a></p>

+<p>Télécharger  : <a href="telecharger/shoot2png.exe">Depuis mon site (version 1.0.1.0)</a>

+  <a href="http://scaraweb.free.fr/scaranet/download/shoot2png.exe">Depuis le site officiel (Dernière version)</a></p>

+<?php require'../autres/source-bas.php'?>

blob - /dev/null
blob + 5cbafb02814c8f88ab3bc872f4597a3727159198 (mode 644)
--- /dev/null
+++ logiciels/spybot.php
@@ -0,0 +1,37 @@
+<?php
+$titre='Spybot / Ad aware';
+$head['access'][0]=array('rel'=>'index','href'=>'./','title'=>'Index de la rubrique &#34;Logiciels&#34;');
+require'../autres/source-haut.php'?>
+<h1 id='spybot'><img alt="" class='t128' src="/img/big/spybot128.png" />Spybot - Search and destroy</h1>
+<p>Je vous recommande Spybot Search and Destroy :</p>
+<ul>
+  <li>Il trouve la plupart des logiciels malveillants et ind&eacute;sirables.</li>
+  <li>Il est gratuit et open-source.</li>
+  <li>Il est pratique et en fran&ccedil;ais.</li>
+  <li>Il est r&eacute;guli&egrave;rement mis &agrave; jour (important pour ce type de logiciel).</li>
+  <li>Il met &agrave; disposition beaucoup d'options utiles.</li></ul>
+<hr />
+<p><strong><a href="http://www.safer-networking.org/fr/donate/" hreflang="fr">
+   Vous pouvez faire un don aux benevoles qui developpent spybot.</a></strong></p>
+<p>Site officiel :
+   <a href="http://www.safer-networking.org/fr/" hreflang="fr">http://www.safer-networking.org/fr/</a></p>
+<p>T&eacute;l&eacute;charger la version 1.4 : <a href="http://www.safer-networking.org/fr/mirrors/" hreflang="fr">Depuis le  site officiel</a>
+    (choisissez un site miroir) ; ou <a href="telecharger/spybotsd14.exe">Depuis mon site</a></p>
+<p>Autres t&eacute;l&eacute;chargements pour Spybot :
+  <a href="http://www.safer-networking.org/fr/download/" hreflang="fr">http://www.safer-networking.org/fr/download/</a>
+</p>
+<hr />
+<h1 id="adaware"><img class="t128" alt="Ad-aware"  src="/img/big/adaware128.png" />Ad-aware</h1>
+<p>Ad-Aware est un autre bon anti-spyware complémentaire &agrave; spybot :</p>
+<ul><li>Il analyse la base de registre.</li>
+    <li>Il est performant.</li>
+    <li>Il est gratuit.</li>
+    <li>Il est r&eacute;guli&egrave;rement mis &agrave; jour.</li></ul>
+<hr />
+<p>Site officiel : <a href="http://www.lavasoft.de/" hreflang="en">http://www.lavasoft.de/</a></p>
+<p>T&eacute;l&eacute;charger Ad-Aware : <a href="http://www.download.com/3001-8022_4-10399602.html" hreflang="en">Depuis download.com</a></p>
+<p>T&eacute;l&eacute;charger la traduction en fran&ccedil;ais :
+   <a href="http://download.lavasoft.de.edgesuite.net/public/pllangs.exe">Depuis le site officiel</a> ou
+   <a href="telecharger/langs.exe">Depuis mon site</a></p>
+<p><a href="http://www.lavasoft.de/french/support/download/" hreflang="fr">Tous les t&eacute;l&eacute;chargements pour Ad-Aware</a></p>
+<?php require'../autres/source-bas.php'?>
blob - /dev/null
blob + 47efb1c66fcf44048717ad839437bfb93c0177e4 (mode 644)
--- /dev/null
+++ logiciels/stardown.php
@@ -0,0 +1,22 @@
+<?php
+$titre='Star Downloader';
+$head['access'][0]=array('rel'=>'index','href'=>'./','title'=>'Index de la rubrique &#34;Logiciels&#34;');
+require'../autres/source-haut.php'?>
+<h1><img class="t128" alt="Star Downloader"  src="/img/big/stardown128.png" />Star downloader</h1>
+<p>Star downloader est un bon gestionnaire de t&eacute;l&eacute;chargements :</p>
+<ul>
+  <li>Vous pouvez t&eacute;l&eacute;charger plusieurs fichiers en m&ecirc;me temps</li>
+  <li>Si un t&eacute;l&eacute;chargement est trop long,
+      vous pouvez le mettre en pause pour arr&ecirc;ter votre ordinateur et le reprendre plus tard.</li>
+  <li>Il peut "d&eacute;couper" les fichiers que vous t&eacute;l&eacute;charger en plusieurs fichiers
+      pour les t&eacute;l&eacute;charger rapidement.</li>
+  <li>Il est en fran&ccedil;ais.</li>
+  <li>Vous pouvez planifier un t&eacute;l&eacute;chargement,
+      lui demander d'arr&ecirc;ter l'ordinateur apr&egrave;s un t&eacute;l&eacute;chargement termin&eacute;.</li>
+  <li>Vous pouvez lui demander d'analyser automatiquement le fichier avec votre logiciel antivirus
+      lorsque le t&eacute;l&eacute;chargement est termin&eacute;.</li>
+  <li>M&ecirc;me en cas d'erreur (serveur satur&eacute; par exemple),
+      vous pouvez reprendre le t&eacute;l&eacute;chargement sans perte de donn&eacute;es.</li></ul>
+<hr />
+<p>Site officiel : <a href="http://www.stardownloader.com/" hreflang="en">http://www.stardownloader.com/</a></p>
+<?php require'../autres/source-bas.php'?>
blob - /dev/null
blob + eae42ccceaee2f4f61ba9c1181604801ca73f041 (mode 644)
--- /dev/null
+++ logiciels/thunderbird.php
@@ -0,0 +1,30 @@
+<?php
+$titre='Thunderbird';
+$head['access'][0]=array('rel'=>'index','href'=>'./','title'=>'Index de la rubrique &#34;Logiciels&#34;');
+require'../autres/source-haut.php'?>
+<h1><img class="t48" alt="TB"  title="T&eacute;l&eacute;chargez Thunderbird!" src="/img/moyen/thunderbird48.png" />Thunderbird</h1>
+<p>Thunderbird est un très bon logiciel de messagerie :</p>
+<ul>
+  <li>Il est gratuit et open-source.</li>
+  <li>Il peut g&eacute;rer les flux RSS.</li>
+  <li>Vous pouvez lui associer des extensions, plugins, themes...</li>
+  <li>Il est plus agr&eacute;able et plus pratique &agrave; utiliser.</li>
+  <li>Il poss&egrave;de un filtre anti-spam <strong>TRES</strong> efficace : vous pouvez d&eacute;finir vos propres r&egrave;gles
+      selon le contenu, l'exp&eacute;diteur, le sujet.... etc. Il filtre et détecte une grande partie des spams.</li>
+  <li>Il poss&egrave;de &eacute;galement un filtre anti-phishing.
+      (ces faux e-mails qui semblent provenir des banques, mais sont en réalité des escroqueries)</li>
+  <li>Il peut g&eacute;rer plusieurs comptes et les importer de vos anciens logiciels de messagerie.</li>
+  <li>En installant deux extensions, vous pouvez relever les messages de vos comptes Webmail (hotmail, yahoo, aol, lycos....)
+      directement dans ce logiciel.</li></ul>
+<hr />
+<p><a href="http://www.mozilla-europe.org/fr/products/thunderbird/" hreflang="en">Site officiel</a><br />
+   Extensions, plugins... : <a href="http://extensions.geckozone.org/thunderbird/" hreflang="fr">Geckozone</a> ou
+   <a href="https://addons.mozilla.org/thunderbird/extensions/" class='en externe'>Mozilla</a></p>
+<p>T&eacute;l&eacute;charger la version 1.5.0.8
+   <a href="http://download.mozilla.org/?lang=fr&amp;product=thunderbird-1.5.0.8&amp;os=win">Depuis  le site officiel</a></p>
+<p>Avec  Thunderbird, lorsque  vous &eacute;crivez un message, il est possible de corriger  l'orthographe.
+   Mais le dictionnaire en Fran&ccedil;ais n'est pas  inclus par d&eacute;faut dans Thunderbird.<br />
+   Vous pouvez le t&eacute;l&eacute;charger <a href="telecharger/frthunderbird.xpi">depuis mon site</a>.
+   (Il s'installe de la m&ecirc;me fa&ccedil;on qu'une extension)</p>
+<p>Voir également <a href="/configurer/thunderbird.php">“&nbsp;Configurer Thunderbird&nbsp;”</a></p>
+<?php require'../autres/source-bas.php'?>
blob - /dev/null
blob + 245af800f60dd127eabeefae088f343be0c5954c (mode 644)
--- /dev/null
+++ logiciels/tidy.php
@@ -0,0 +1,29 @@
+<?php
+$titre='TidyGUI';
+$head['access'][0]=array('rel'=>'index','href'=>'./','title'=>'Index de la rubrique &#34;Logiciels&#34;');
+require'../autres/source-haut.php'?>
+<h1><img class='t32' alt="" src="/img/moyen/tidy32.png" />TidyGUI</h1>
+<p>Ce logiciel tr&egrave;s pratique vous permet de verifier si il n'y a pas d'erreurs dans vos pages html :</p>
+<ul><li>Il vous les indique et les répare si possible,
+        et vous dit celles qu'il n'a pas pu réparer pour que vous le fassiez vous-m&ecirc;me.</li>
+    <li>Il rend votre code plus lisible pour que vos pages s'affichent le mieux possible.</li>
+    <li>Avec certains éditeurs, ce logiciel est vraiment utile, vu le code qu'ils gén&egrave;rent.</li>
+    <li>Il est gratuit et open-source.</li>
+    <li>il ne prend presque pas de place sur votre ordinateur : Téléchargez le fichier (312 Ko seulement),
+        et c'est bon, vous n'avez rien &agrave; installer, vous pouvez l'utiliser.</li></ul>
+<hr />
+<p>Sites : <a href="http://tidy.sourceforge.net/" hreflang="en">officiel</a> ;<br />Autres : 
+ <a href="http://perso.orange.fr/ablavier/TidyGUI/" hreflang="en">http://perso.orange.fr/ablavier/TidyGUI/</a> &nbsp; &nbsp;
+ <a href="http://www.w3.org/People/Raggett/tidy/" hreflang="en">http://www.w3.org/People/Raggett/tidy/</a></p>
+<p>Télécharger <a href="telecharger/tidygui.exe">Depuis mon site</a> ou
+   <a href="http://perso.orange.fr/ablavier/TidyGUI/TidyGUI-exe.zip">Depuis un autre site</a></p>
+<div class="note"><strong>Notes</strong> :
+  <p class="note">
+   Attention, ce logiciel ne remplace pas la validation du <abbr title="World Wide Web Consortium">W3C</abbr> :
+   Il rep&egrave;re des erreurs non détectées par le validateur W3C et inversement.<br />
+   Il reste donc important de valider vos pages avec 
+   <a href="http://validator.w3.org/" hreflang="en">le validateur W3C</a></p>
+  <p class="note">Il existe également une extension pour Firefox qui intègre Tidy directement dans le navigateur
+   et vérifie automatiquement les pages :
+   <a href="https://addons.mozilla.org/firefox/249/" hreflang="en">https://addons.mozilla.org/firefox/249/</a></p></div>
+<?php require'../autres/source-bas.php'?>
blob - /dev/null
blob + 41b3089cf2220f54d07054a23f4d9476b04de810 (mode 644)
--- /dev/null
+++ logiciels/winamp.php
@@ -0,0 +1,72 @@
+<?php
+$titre='Winamp / VLC Media Player';
+$head['access'][0]=array('rel'=>'index','href'=>'./','title'=>'Index de la rubrique &#34;Logiciels&#34;');
+$head['access'][1]=array('rel'=>'next','href'=>'./winampnotice.php','title'=>'Comment utiliser Winamp');
+$head['css'][0]['filename']='logwinamp';
+require'../autres/source-haut.php'?>
+<h1 style="text-align:center">Winamp / VLC Media Player<br />
+  <img class='t128' style="margin-right:5em" alt="" src="../img/big/logwinamp.png" /><img class='t128' alt="" src="../img/big/vlc128.png" /></h1>
+<p>Ces deux logiciels sont des lecteurs performants :</p>
+<p>Winamp</p>
+<ul>
+  <li>Il peut encoder(enregistrer) en beacoup plus de formats qui sont plus compacts et prennent moins de place.</li>
+  <li>Il g&egrave;re(et peutcréer!) les listes en m3u, ainsi que les vidéos.</li>
+  <li>Il existe des plugins,extensions etskins qui permettent de changer son apparence et de lui ajouter des fonctions.</li>
+  <li>Vous pouvez écouter des centaines de radios sur internet.</li>
+  <li>Il existe un skin qui luidonne l'apparence de Windows Media Player.</li>
+  <li>.....etc</li>
+</ul>
+<p>VLC Media Player</p>
+<ul>
+  <li>Il lit absolument TOUS les formats audio et vidéos, sans que vous n'ayez rien &agrave; installer.</li>
+  <li>Il est gratuit et open-source.</li>
+  <li>Il &agrave; une interfacetr&egrave;s lég&egrave;re, idéale pour les syst&egrave;mes lents, ou si
+      vous ouvrez beaucoup de programmes en m&ecirc;me temps.</li>
+  <li>Il g&egrave;re les listes.</li>
+  <li>....etc</li>
+</ul>
+<hr />
+<table summary="Comparatif de Windamp et de VLC" border="1">
+  <tbody>
+    <tr><th>#</th>
+        <th><img class="t48" alt="Winamp" src="/img/moyen/winamp48.png" /></th>
+        <th><img class="t48" alt="VLC Media Player" src="/img/moyen/vlc48.png" /></th></tr>
+    <tr><th>Avantages</th>
+        <td>Il peutgérer une biblioth&egrave;que de fichiers audio et vidéos.<br /><br />
+            Il peut encoder/décoder(enregistrer/lire) une multitude de formats.<br /><br />
+            Il est gratuit.</td>
+        <td>Il lit tout, absolument tout.<br /><br />
+            Il peut gérer des listes.<br /><br />
+            Il est gratuit, open-source et en fran&ccedil;ais.</td></tr>
+    <tr><th>Inconvénients</th>
+        <td>Il consomme beaucoup de ressources (mais moins que Windows Media Player).<br /><br />
+            Il a été repris par AOL.</td>
+        <td>Il ne peut pas gérer de biblioth&egrave;que.</td></tr>
+    <tr><th>Sites</th>
+        <td>Site officiel : 
+            <a href="http://www.winamp.com" hreflang="en">http://www.winamp.com</a><br /><br />
+            Tr&egrave;s bon site sur Winamp (non-officiel) : 
+            <a href="http://www.winampfr.com/" hreflang="fr">http://www.winampfr.com/</a></td>
+        <td>Site officiel : <a href="http://www.videolan.org/" hreflang="en">http://www.videolan.org/</a></td></tr>
+    <tr><th>Télécharger</th>
+        <td><a href="winampnotice.php"><em>A lire avant de télécharger Winamp</em></a>
+            <table class='dl'>
+              <tbody>
+                <tr><th>Fichier</th><th>Depuis mon site</th><th>Depuis le site officiel</th></tr>
+                <tr><td>Winamp 5.24</td><td><a href="telecharger/winamp524.exe">winamp524.exe</a></td>
+                    <td><a href="/autres/redir.php?redir=Winamp">[Redirection]</a></td></tr>
+                <tr><td>Traduction et dll</td>
+                    <td><a href="telecharger/winampfr.exe">Traduction</a>
+                        <a href="telecharger/ml_disc.dll">Dll</a></td>
+                    <td><a href="/autres/redir.php?redir=TraductionWinamp">[Redirection]</a>
+                        <a href="http://flateric78.free.fr/winampfr/ml_disc.dll">dll</a></td></tr>
+                <tr><td>Skin Windows Media Player</td>
+                    <td><a href="telecharger/wmp10.wal">wmp10.wal</a></td>
+                    <td><a href="/autres/redir.php?redir=SkinWMP">[Redirection]</a></td></tr>
+                <tr><td>Codec Ogg</td>
+                    <td><a href="telecharger/ogg11.exe">ogg11.exe</a></td>
+                    <td><a href="/autres/redir.php?redir=OGGWinamp">[Redirection]</a></td></tr></tbody></table></td>
+        <td>Télécharger VLC (version 0.8.5.0) :
+            <a href="http://www.videolan.org/vlc/download-windows.html" hreflang="en">Depuis le site officiel</a> (choisissez un site miroir)</td></tr>
+            </tbody></table>
+<?php require'../autres/source-bas.php'?>
blob - /dev/null
blob + 7797717b0b35b7cd97f11ffcd851718abc5949eb (mode 644)
--- /dev/null
+++ logiciels/winampnotice.php
@@ -0,0 +1,38 @@
+<?php
+$titre='Winamp : Notice';
+$head['access'][0]=array('rel'=>'index','href'=>'./','title'=>'Index de la rubrique &#34;Logiciels&#34;');
+$head['access'][1]=array('rel'=>'prev','href'=>'./winamp.php','title'=>'Revenir à &#34;Winamp / VLC&#34; dans la rubrique des logiciels');
+$head='<link type="text/css" href="/autres/css/logwinamp.css" rel="stylesheet" />';
+require'../autres/source-haut.php'?>
+<p>Il y a eu une erreur dans le patch de  traduction  en fran&ccedil;ais : les périphériques  externes
+   (lecteurs cd, mp3..) n'étaient plus reconnus!</p>
+<p>Ce probl&egrave;me est maintenant réglé, il faut télécharger le fichier
+   <a href="telecharger/ml_disc.dll">telecharger/ml_disc.dll</a> si vous voulez utiliser le patch de traduction.</p>
+<p>L'installation de Winamp se résume donc  &agrave; :
+    Téléchargez Winamp (<a href="telecharger/winamp524.exe">telecharger/winamp524.exe</a>)
+    et les skins/extensions/patchs/plugins que vous voulez (dont la traduction en fran&ccedil;ais par exemple).</p>
+<p>Installer Winamp, puis les extensions que vous avez  téléchargé(dont la traduction par exemple).</p>
+<p>Si vous avez téléchargé la  traduction en fran&ccedil;ais, téléchargez le fichier
+   <a href="telecharger/ml_disc.dll">telecharger/ml_disc.dll</a> et copiez le dans le dossier plugins
+   du répertoire d'installation de winamp (par défaut C:\Program Files\Winamp\Plugins).
+   Une  fen&ecirc;tre s'ouvre vous demandant si vous &ecirc;tes surs de  vouloir remplacer l'ancien fichier, dites oui.</p>
+<p>C'est bon, vous pouvez utiliser Winamp normalement.</p>
+<p><a href="winamp.php">Retour au logiciel</a></p>
+<hr />
+<table class='dl'>
+ <caption>Télécharger les fichiers</caption>
+  <tbody>
+    <tr><th>Fichier</th><th>Depuis mon site</th><th>Depuis le site officiel</th></tr>
+    <tr><td>Winamp 5.24</td><td><a href="telecharger/winamp524.exe">telecharger/winamp524.exe</a></td><td><a href="/autres/redir.php?redir=Winamp">[Redirection]</a></td></tr>
+    <tr><td>Traduction et dll</td>
+        <td><a href="telecharger/winampfr.exe">Traduction</a>
+            <a href="telecharger/ml_disc.dll">Dll</a></td>
+        <td><a href="/autres/redir.php?redir=TraductionWinamp">[Redirection]</a>
+            <a href="http://flateric78.free.fr/winampfr/ml_disc.dll">dll</a></td></tr>
+    <tr><td>Skin Windows Media Player</td>
+        <td><a href="telecharger/wmp10.wal">telecharger/wmp10.wal</a></td>
+        <td><a href="/autres/redir.php?redir=SkinWMP">[Redirection]</a></td></tr>
+    <tr><td>Codec Ogg</td>
+        <td><a href="telecharger/ogg11.exe">telecharger/ogg11.exe</a></td>
+        <td><a href="/autres/redir.php?redir=OGGWinamp">[Redirection]</a></td></tr></tbody></table>
+<?php require'../autres/source-bas.php'?>
blob - /dev/null
blob + 8382e47624793ff83c16efe2f8c93f04f28f95fb (mode 644)
--- /dev/null
+++ logiciels/xenu.php
@@ -0,0 +1,13 @@
+<?php

+$head['access'][0]=array('rel'=>'index','href'=>'./','title'=>'Index de la rubrique &#34;Logiciels&#34;');

+$titre='Xenu\'s Link Sleuth';

+require'../autres/source-haut.php'?>

+<h1><img class="t32" src="/img/moyen/xenu32.png" alt="Xenu" />Xenu's Link Sleuth</h1>

+<p>Ce freeware très pratique vérifie tous liens d'un site ou d'un fichier local : les pages, les images, les CSS...</p>

+<p>Vous pouvez repérer très vite les liens morts sur votre site et les rectifier.</p>

+<p>Il vous permet également de définir des règles pour vérifier ou pas certains fichiers et urls.</p>

+

+<p>Site officiel : <a href="http://home.snafu.de/tilman/xenulink.html" hreflang="en">http://home.snafu.de/tilman/xenulink.html</a></p>

+<p>Télécharger depuis mon site : <a href="telecharger/xenu.zip">telecharger/xenu.zip</a><br />

+Télécharger depuis le site officiel : <a href="http://home.snafu.de/tilman/XENU.ZIP">http://home.snafu.de/tilman/XENU.ZIP</a></p>

+<?php require'../autres/source-bas.php'?>

blob - /dev/null
blob + 3965d5b6e7639e62c47c7f435bab62ff0d6f8364 (mode 644)
--- /dev/null
+++ logiciels/zonealarm.php
@@ -0,0 +1,19 @@
+<?php
+$titre='Zone alarm';
+$head['access'][0]=array('rel'=>'index','href'=>'./','title'=>'Index de la rubrique &#34;Logiciels&#34;');
+require'../autres/source-haut.php'?>
+<h1><img class='t128' alt="Zone Alarm" src="/img/big/zonealarm128.png" />Zone Alarm</h1>
+<p>Je vous recommande VIVEMENT Zone Alarm en remplacement de  Microsoft  Firewall :</p>
+<ul>
+  <li>Il gère les connexions entrantes ET sortantes contrairement au firewall de Microsoft.</li>
+  <li>Il peut définir des règles (autorisations/interdictions) précises pour chaque logiciel.</li>
+  <li>Il possède une option pour bloquer tout le trafic en deux clics : utiles en cas de problème.</li>
+  <li>Il surveille vos e-mails pour voir s'ils ne contiennent
+      pas de virus ou de liens vers des sites de phishing (arnaque).</li>
+  <li>Vous pouvez le configurer dans les moindres détails.</li>
+  <li>Il est gratuit</li>
+</ul>
+<hr />
+<p>Site officiel : <a hreflang="en" href="http://www.zonelabs.com/">http://www.zonelabs.com/</a></p>
+<p>Voir également : <a  href="/configurer/zonealarm.php">Configurer Zone Alarm</a></p>
+<?php require'../autres/source-bas.php'?>
blob - /dev/null
blob + 9f1bdc11c02aea4f432196bcf04227040bdf9739 (mode 644)
--- /dev/null
+++ logos/index.php
@@ -0,0 +1,354 @@
+<?php
+$head['css'][0]['filename']='logos.css';
+$head['autres']='<!--[if lt IE 7]><script type="text/javascript" src="affichage_png_ie.js"></script><![endif]-->';
+$titre='Logos';
+require'../autres/source-haut.php'?>
+<h1>Logos</h1>
+<hr />
+<p class="pintro">  vous trouverez beaucoup de logos de  logiciels et  autres, trouvés sur internet. Je donne également  des  liens vers des sites d'images, d'icones et de graphisme.
+  <br />
+  <strong>Attention, ces images ne sont pas de moi. Je n'ai aucun droit dessus, elles appartiennent a leurs auteurs respectifs.</strong>
+  <br />  Beaucoup d'images proviennent des sites indiqués
+</p>
+<p class="note">  Cette page contient beaucoup d'images,  il est possible qu'elles ne s'affichent pas toutes au premier  chargement.
+  <br />  Pour régler ce problème vous pouvez
+  <a href="./">RECHARGER LA PAGE</a>.
+</p>
+<!--[if IE]>
+<p>Internet Explorer rencontre des problèmes d'affichage avec cette page (mauvaise disposition/dimensions des images et mauvais affichages).<br />
+Pour régler cela, vous pouvez télécharger un navigateur respectueux des standards, comme <a href="../logiciels/firefox.php">Firefox</a><br />
+<a href="../logiciels/firefox.php">http://sylvain.sab.free.fr/logiciels/firefox.php</a></p>
+<![endif]-->
+<hr />
+<h2 id="logos">Logos</h2>
+  <h3 id="firefox1"><img class="t16" alt="" src="../img/mini/firefox16.png" />Firefox</h3>
+<h4 id="boutons11">Boutons</h4>
+<div class="aa img">
+  <img class="w180 h60" alt="" src="ff/b01.png" />
+  <img class="w180 h60" alt="" src="ff/b02.png" />
+  <img class="w180 h60" alt="" src="ff/b03.png" />
+  <img class="w180 h60" alt="" src="ff/b06.gif" />
+  <img class="w180 h60" alt="" src="ff/b07.gif" />
+  <img class="w180 h60" alt="" src="ff/b08.gif" />
+  <img class="w180 h60" alt="" src="ff/b09.gif" />
+  <img class="w180 h60" alt="" src="ff/b31.png" />
+  <img class="w180 h60" alt="" src="ff/b30.png" />
+  <img class="w120 h60" alt="" src="ff/b15.png" />
+  <img style="width:178px" class="h60" alt="" src="ff/b17.png" />
+  <img style="width:300px" class="h60" alt="" src="ff/b25.gif" />
+  <img class="w180 h60" alt="" src="ff/b32.png" />
+  <img class="w180 h60" alt="" src="ff/b33.png" />
+  <img style="width:220px;height:56px;"  alt="" src="ff/b05.gif" />
+  <img class="w180 h60" alt="" src="ff/b04.gif" />
+  <img class="w180 h60" alt="" src="ff/b29.png" />
+  <img class="w180 h60" alt="" src="ff/b36.png" />
+  <img class="w180 h60" alt="" src="ff/b34.gif" />
+  <img class="w180 h60" alt="" src="ff/b35.png" />
+  <img style="width:153px;height:58px;" alt="" src="ff/b37.png" />
+  <img style="width:158px" class="h60" alt="" src="ff/b38.gif" />
+  <img style="width:158px;" class="h60" alt="" src="ff/b39.gif" />
+  <img class="w120 h60" alt="" src="ff/b41.gif" />
+  <img class="w120 h60" alt="" src="ff/b42.gif" />
+  <img class="w180 h60" alt="" src="ff/b44.png" />
+  <img class="w110 h32" alt="" src="ff/b13.png" />
+  <img class="w110 h32" alt="" src="ff/b14.png" />
+  <img style="width:141px" class="h32" alt="" src="ff/b18.png" />
+  <img style="width:131px" class="h32" alt="" src="ff/b19.png" />
+  <img class="w200 h38" alt="" src="ff/b16.png" />
+  <img style="width:134px;height:15px;" alt="" src="ff/b21.png" />
+  <img style="width:87px;height:13px;"  alt="" src="ff/b22.gif" />
+  <img style="width:185px;height:72px;" alt="" src="ff/b23.png" />
+  <img style="width:150px;height:58px;"  alt="" src="ff/b24.png" />
+  <img style="width:88px;height:31px;" alt="" src="ff/b26.gif" />
+  <img style="width:150px;height:31px;" alt="" src="ff/b27.png" />
+  <img style="width:88px;height:31px;" alt="" src="ff/b28.png" />
+  <img class="w110 h32" alt="" src="ff/b43.gif" />
+  <img class="w180 h60" alt="" src="ff/b45.gif" />
+  <img class="w180 h60" alt="" src="ff/b46.png" />
+  <img style="width:550px;height:150px;" alt="" src="ff/b46.gif" />
+</div>
+<h4 id="crystal11">'Crystalisé'</h4>
+<div class="ab img">
+  <img class="t256" alt="" src="ff2/b01.png" />
+  <img class="t256" alt="" src="ff2/b02.png" />
+  <img class="t256" alt="" src="ff2/b03.png" />
+  <img class="t256" alt="" src="ff2/b24.png" />
+  <img class="t256" alt="" src="ff2/b04.png" />
+  <img class="t256" alt="" src="ff2/b05.png" />
+  <img class="t256" alt="" src="ff2/b06.png" />
+  <img class="t256" alt="" src="ff2/b07.png" />
+  <img class="t256" alt="" src="ff2/b08.png" />
+  <img class="t250" alt="" src="ff2/b09.jpg" />
+  <img class="w196 h196" alt="" src="ff2/b10.jpg" />
+  <img style="width:192px" class="h192" alt="" src="ff2/b11.png" />
+  <img style="width:173px" class="h192" alt="" src="ff2/b12.png" />
+  <img class="t128" alt="" src="ff2/b13.png" />
+  <img class="t128" alt="" src="ff2/b14.png" />
+  <img class="t128" alt="" src="ff2/b15.png" />
+  <img class="t128" alt="" src="ff2/b16.png" />
+  <img class="t128" alt="" src="ff2/b17.png" />
+  <br />
+  <img class="t128" alt="" src="ff2/b18.png" />
+  <img class="t128" alt="" src="ff2/b19.png" />
+  <img class="t128" alt="" src="ff2/b20.png" />
+  <img class="t128" alt="" src="ff2/b21.png" />
+  <img class="t64" alt="" src="ff2/b22.png" />
+  <img class="t64" alt="" src="ff2/b23.jpg" />
+</div>
+<h4 id="dessin11">'Dessin'</h4>
+<div class="ac img">
+  <img class="t128" alt="" src="ff3/b01.png" />
+  <img class="t128" alt="" src="ff3/b02.png" />
+  <img class="t128" alt="" src="ff3/b03.png" />
+  <img class="t128" alt="" src="ff3/b07.png" />
+  <img class="t128" alt="" src="ff3/b08.png" />
+  <img class="t128" alt="" src="ff3/b04.png" />
+  <img class="w80 h80" alt="" src="ff3/b05.png" />
+</div>
+<h4 id="normal11">Normal / Autres</h4>
+<div class="img">
+  <img class="t256" alt="" src="ff4/b01.png" />
+  <img class="t256" alt="" src="ff4/b02.png" />
+  <img class="t256" alt="" src="ff4/b03.png" />
+  <img class="t256" alt="" src="ff4/b04.png" />
+  <img class="t256" alt="" src="ff4/b05.png" />
+  <img style="width:450px;height:435px;" alt="" src="ff4/b06.png" />
+  <img style="width:450px;height:460px;" alt="" src="ff4/b07.jpg" />
+  <img style="width:500px;height:400px;" alt="" src="ff4/b08.png" />
+  <img style="width:154px;height:139px;" alt="" src="ff4/b30.png" />
+  <img style="width:154px;height:139px;" alt="" src="ff4/b31.png" />
+  <br />
+  <img style="width:107px;height:120px;" alt="" src="ff4/b32.gif" />
+  <img class="w110 h110" alt="" src="ff4/b33.gif" />
+  <img style="width:132px;height:100px;" alt="" src="ff4/b37.png" />
+  <br />
+  <br />
+  <img style="width:200px;height:272px;" alt="" src="ff4/b34.png" />
+  <img style="width:200px;height:272px;" alt="" src="ff4/b35.png" />
+  <br />
+  <img style="width:236px;height:247px;" alt="" src="ff4/b36.gif" />
+  <img class="w192 h192" alt="" src="ff4/b09.png" />
+  <img class="w192 h192" alt="" src="ff4/b10.png" />
+  <img style="width:175px;height:175px;" alt="" src="ff4/b11.png" />
+  <img style="width:175px;height:169px;" alt="" src="ff4/b12.jpg" />
+  <img style="width:160px;height:160px;" alt="" src="ff4/b13.png" />
+  <img style="width:150px;height:150px;" alt="" src="ff4/b14.jpg" />
+  <img style="width:150px;height:138px;" alt="" src="ff4/b15.jpg" />
+  <img class="t128" alt="" src="ff4/b16.png" />
+  <img class="t128" alt="" src="ff4/b17.png" />
+  <img class="t128" alt="" src="ff4/b18.png" />
+  <img class="t128" alt="" src="ff4/b19.png" />
+  <img class="t128" alt="" src="ff4/b20.png" />
+  <img class="t128" alt="" src="ff4/b21.png" />
+  <img class="t128" alt="" src="ff4/b22.png" />
+  <img class="w80 h80" alt="" src="ff4/b24.png" />
+  <img style="width:79px;height:77px;" alt="" src="ff4/b25.jpg" />
+  <img class="t48" alt="" src="ff4/b26.png" /><br />
+  <img style="width:800px;height:709px;" alt="" src="ff4/b29.jpg" />
+  <img style="width:640px;height:480px;" alt="" src="ff4/b28.jpg" />
+</div>
+<div class="liens">
+  <hr class="t20" />
+  Plus d'images sur  Firefox :<br />
+  <a href="http://homeusers.brutele.be/jpbardiau/" hreflang="en">http://homeusers.brutele.be/jpbardiau/</a><br />
+  <a href="http://www.mozilla.org/products/firefox/buttons.html" hreflang="en">http://www.mozilla.org/products/firefox/buttons.html</a><br />
+  <a href="http://www.firefox-browser.de/forum/viewtopic.php?t=2657" hreflang="de">http://www.firefox-browser.de/forum/viewtopic.php?t=2657</a><br />
+  <a href="http://www.graphicsguru.com/" hreflang="en">http://www.graphicsguru.com/</a><br />
+  <a href="http://www.firefox-browser.de/forum/viewtopic.php?t=2064" hreflang="de">http://www.firefox-browser.de/forum/viewtopic.php?t=2064</a><br />
+  <a href="http://xul.ru/fun.php" hreflang="ru">http://xul.ru/fun.php</a><br />
+  <a href="http://burntelectrons.org/media/fx-buttons/" hreflang="en">http://burntelectrons.org/media/fx-buttons/</a><br />
+  <a href="http://customxp.net/images/PngFactory/index.php?search=firefox" hreflang="fr">http://customxp.net/images/PngFactory/index.php?search=firefox</a><br />
+  <a href="http://www.geckozone.org/forum/viewtopic.php?t=9503" hreflang="fr">http://www.geckozone.org/forum/viewtopic.php?t=9503</a>
+</div>
+<h3 id="thunderbird2"><img class="t16"  alt="" src="/img/mini/thunderbird16.png" />Thunderbird</h3>
+<h4 id="boutons21">Boutons</h4>
+<div class="ba img">
+  <img style="width:94px;height:15px;" alt="" src="thunder1/b1.png" />
+  <img class="w80 h15" alt="" src="thunder1/b2.gif" />
+  <img class="w80 h15" alt="" src="thunder1/b3.png" />
+  <img class="w110 h32" alt="" src="thunder1/b4.png" />
+  <img style="width:88px;height:31px" alt="" src="thunder1/b6.png" />
+  <img style="width:178px" class="h60" alt="" src="thunder1/b5.png" />
+  <img style="width:125px" class="h80" alt="" src="thunder1/b7.png" />
+  <img style="width:185px;height:105px;"  alt="" src="thunder1/b8.png" />
+</div>
+<h4 id="crystalise22">"Crystalisé"</h4>
+<div class="bb img">
+  <img class="t128" alt="" src="thunder2/b01.png" />
+  <img class="t128" alt="" src="thunder2/b02.png" />
+  <img class="t128" alt="" src="thunder2/b03.png" />
+  <img class="t192" alt="" src="thunder2/b04.png" />
+  <img class="w200 h200"  alt="" src="thunder2/b05.png" />
+  <img class="t256" alt="" src="thunder2/b14.png" />
+  <img class="t256" alt="" src="thunder2/b06.png" />
+  <img class="t256" alt="" src="thunder2/b07.png" />
+  <img class="t256" alt="" src="thunder2/b09.png" />
+  <img class="t256" alt="" src="thunder2/b08.png" />
+  <img class="t256" alt="" src="thunder2/b13.png" />
+  <img class="t256" alt="" src="thunder2/b10.png" />
+  <img class="t256" alt="" src="thunder2/b12.png" />
+  <img class="t256" alt="" src="thunder2/b11.png" />
+</div>
+<h4 id="dessin23">Dessin</h4>
+<div class="bc img">
+  <img class="t128" alt="" src="thunder3/b1.png" />
+  <img class="t128" alt="" src="thunder3/b2.png" />
+  <img class="t128" alt="" src="thunder3/b3.png" />
+  <img class="t256" alt="" src="thunder3/b01.png" />
+</div>
+<h4 id="autres24">Oiseaux</h4>
+<div class="img">
+  <img class="t128" alt="" src="thunder4/b01.png" />
+  <img class="t128" alt="" src="thunder4/b02.png" />
+  <img class="t256" alt="" src="thunder4/b03.png" />
+  <img class="t256" alt="" src="thunder4/b04.png" />
+  <br />
+  <img class="t256" alt="" src="thunder4/b05.png" />
+  <img class="t256" alt="" src="thunder4/b06.png" />
+  <br />
+  <img class="t256" alt="" src="thunder4/b07.png" />
+  <img class="t256" alt="" src="thunder4/b08.png" />
+</div>
+<h4 id="autres25">Autres</h4>
+<div class="be img">
+  <img style="width:286px;height:374px;" alt="" src="thunder5/b01.jpg" />
+  <img style="width:282px;height:225px;"  alt="" src="thunder5/b12.jpg" />
+  <br />
+  <img style="width:205px;height:205px;" alt="" src="thunder5/b02.png" />
+  <img style="width:153px;height:153px;"  alt="" src="thunder5/b07.gif" />
+  <img class="w150 h150" alt="" src="thunder5/b08.png" />
+  <br />
+  <img style="width:339px;height:160px;" alt="" src="thunder5/b03.png" />
+  <br />
+  <img style="width:149px;height:151px;" alt="" src="thunder5/b09.png" />
+  <img class="t128" alt="" src="thunder5/b05.png" />
+  <img class="w80 h80" alt="" src="thunder5/b06.png" />
+  <br />
+  <br />
+  <img style="width:282px;height:215px;" alt="" src="thunder5/b10.png" />
+  <img style="width:293px;height:222px;" alt="" src="thunder5/b11.jpg" />
+  <br />
+  <br />
+  <img style="width:420px;height:303px;" alt="" src="thunder5/b14.jpg" />
+  <img style="width:153px;height:173px;" alt="" src="thunder5/b18.gif" />
+  <br />
+  <img style="width:239px;height:142px;" alt="" src="thunder5/b16.jpg" />
+  <img style="width:300px;height:224px;" alt="" src="thunder5/b15.jpg" />
+  <br />
+  <br />
+  <img style="width:718px;height:251px;" alt="" src="thunder5/b17.png" />
+</div>
+<div  class="liens">
+  <hr class="t20" />
+  Plus d'images sur  Thunderbird :<br />
+  <a hreflang="en" href="http://www.mozilla.org/products/thunderbird/buttons.html">http://www.mozilla.org/products/thunderbird/buttons.html</a><br />
+  <a hreflang="fr" href="http://customxp.net/images/PngFactory/index.php?search=thunderbird">http://customxp.net/images/PngFactory/index.php?search=thunderbird</a>
+</div>
+<h3 id="nvu3"><img class="t16" alt="" src="../img/mini/nvu16.png" />Nvu</h3>
+<div class="ca img">
+  <img class="t256" alt="" src="nvu/b1.png" />
+  <img class="t256" alt="" src="nvu/b2.png" />
+  <br />
+  <img class="t256" alt="" src="nvu/b3.png" />
+  <img class="t256" alt="" src="nvu/b4.png" />
+  <br />
+  <img class="t256" alt="" src="nvu/b5.png" />
+  <img class="t256" alt="" src="nvu/b6.png" />
+  <br />
+  <img class="w80 h15" alt="" src="nvu/b7.gif" />
+  <br />
+  <img class="w80 h15" alt="" src="../img/rect/faitnvu.png" />
+</div>
+<h3 id="mozilla4"><img class="t16"  alt="" src="../img/mini/icmozilla.png" />Mozilla</h3>
+<div class="da img">
+  <img class="t128" alt="" src="mozilla/b01.png" />
+  <img class="t128" alt="" src="mozilla/b02.png" />
+  <img class="t128" alt="" src="mozilla/b03.png" />
+  <img class="t128" alt="" src="mozilla/b04.png" />
+  <img class="t128" alt="" src="mozilla/b05.png" />
+  <img class="t128" alt="" src="mozilla/b06.png" />
+  <br />
+  <img class="t48" alt="" src="mozilla/b13.png" />
+  <img class="t48" alt="" src="mozilla/b12.png" />
+  <img class="t128" alt="" src="mozilla/b07.png" />
+  <img class="t128" alt="" src="mozilla/b08.png" />
+  <img class="t192" alt="" src="mozilla/b09.png" />
+  <br />
+  <img class="t192" alt="" src="mozilla/b10.png" />
+  <img class="t192" alt="" src="mozilla/b11.png" />
+  <img class="t256" alt="" src="mozilla/b14.png" />
+  <br />
+  <img style="width:233px;height:351px;" alt="" src="mozilla/b15.png" />
+  <img style="width:250px;height:367px;" alt="" src="mozilla/b24.gif" />
+  <br />
+  <br />
+  <img style="width:513px;height:513px;" alt="" src="mozilla/b21.png" />
+  <br />
+  <br />
+  <img style="width:125px;height:124px;" alt="" src="mozilla/b22.png" />
+  <img class="w200 h200" alt="" src="mozilla/b20.gif" />
+  <img style="height:160px;" class="w180" alt="" src="mozilla/b25.gif" />
+  <br /><br />
+  <img style="width:339px;height:211px;" alt="" src="mozilla/b16.gif" />
+  <br />
+  <img style="width:390px;height:260px;" alt="" src="mozilla/b28.gif" />
+  <img style="width:392px;height:263px;" alt="" src="mozilla/b26.jpg" />
+  <br />
+  <br />
+  <img style="width:640px;height:480px;" alt="" src="mozilla/b27.png" />
+  <br />
+  <br />
+  <img style="width:380px;height:380px;" alt="" src="mozilla/b29.png" />
+  <img style="width:390px;height:261px;" alt="" src="mozilla/b31.jpg" />
+  <br />
+  <br />
+  <img class="t256" alt="" src="mozilla/b17.png" />
+  <img class="t256" alt="" src="mozilla/b18.png" />
+  <img class="t128" alt="" src="mozilla/b19.png" />
+</div>
+<div class="liens">
+  <hr class="t20" />
+  Plus d'images sur  Mozilla :<br />
+  <a href="http://mozilla.tlk.fr/splash.php" hreflang="fr">http://mozilla.tlk.fr/splash.php</a><br />
+  <a href="http://customxp.net/images/PngFactory/index.php?search=mozilla" hreflang="fr">http://customxp.net/images/PngFactory/index.php?search=mozilla</a><br />
+  <a href="http://www.pali.sk/mozilla/splash.html" hreflang="en">http://www.pali.sk/mozilla/splash.html</a>
+</div>
+<h3 id="autres5">Autres</h3>
+<div class="da img">
+  <img style="width:350px;height:300px;" alt="" src="autres/02.jpg" />
+  <img style="width:144px;height:168px;" alt="" src="autres/03.png" />
+  <br />
+  <br />
+  <img style="width:655px;height:174px;" alt="" src="autres/04.jpg" />
+  <br />
+  <br />
+  <img class="t512" alt="" src="autres/05.png" />
+  <br />
+  <br />
+  <img style="width:172px;height:124px;" alt="" src="autres/06.jpg" />
+  <img style="width:70px;height:16px;" alt="" src="autres/08.png" />
+  <br />
+  <br />
+  <img style="width:640px;height:477px;" alt="" src="autres/07.gif" />
+</div>
+<h3 id="zonealarm6"><img class="t16"  alt="" src="../img/mini/zonealarm16.png" />Zone Alarm</h3>
+<div class="ea img">
+  <img class="t256" alt="" src="za1/b01.png" />
+  <img class="t256" alt="" src="za1/b02.png" />
+  <img class="t256" alt="" src="za1/b03.png" />
+  <br />
+  <img class="t256" alt="" src="za1/b04.png" />
+  <img class="t256" alt="" src="za1/b05.png" />
+  <img class="t256" alt="" src="za1/b06.png" />
+  <br />
+  <img class="t256" alt="" src="za1/b07.png" />
+  <img class="t256" alt="" src="za1/b08.png" />
+  <br />
+  <img class="t256" alt="" src="za1/b09.png" />
+  <img class="t256" alt="" src="za1/b10.png" />
+</div>
+<hr />
+<p>Plus d'images et de logos :<br />
+<a href="../liens.php#images">http://sylvain.sab.free.fr/liens.php#images</a>
+</p>
+<?php require'../autres/source-bas.php'?>
blob - /dev/null
blob + e04db9f7985b73aab21916245350da8b8a220575 (mode 644)
--- /dev/null
+++ mail/bonjour.php
@@ -0,0 +1,8 @@
+<?php

+$destinataire='sylvain';

+$destinataire.='.saboua';

+$arobase='@';

+$domaine='laposte';

+$tld='.net';

+$mail=$destinataire.$arobase.$domaine.$tld;

+?>

blob - /dev/null
blob + 1fddd1f025463f06f841a41dada736c72d958f7e (mode 644)
--- /dev/null
+++ mail/index.php
@@ -0,0 +1,154 @@
+<?php

+if(isset($_POST['message']))

+  $SQL['TypePage']=2;

+else

+  $SQL['TypePage']=1;

+if(strpos($_SERVER['HTTP_ACCEPT'],'application/xhtml+xml')!==false)

+  $TypeMIMEJS='application/x-javascript';

+else

+  $TypeMIMEJS='text/javascript';

+$head['css'][0]['filename']='mail';

+//$head['autres']='<link rel="script" type="'.$TypeMIMEJS.'" href="/autres/scripts/mail.php?TypeMIME='.$TypeMIMEJS.'" />'."\n\t".'<script type="'.$TypeMIMEJS.'" src="/autres/scripts/mail.php?TypeMIME='.$TypeMIMEJS.'"></script>';

+$titre='Me contacter';

+require'../autres/source-haut.php'?>

+<h1>Contact</h1>

+<p>Je ne répondrais pas aux demandes d'aide pour problèmes informatiques en tout genres, je n'ai pas le temps.

+   Il y a déjà plusieurs forums sur internet faits pour ça.</p>

+<?php

+$Previsualiser='<p class="bt">

+<input type="submit" name="previsualiser" id="previsualiser" tabindex="3" value="Previsualiser" /></p>';

+$Envoi="\n".'<p class="bt">

+<input name="envoi" tabindex="4" id="envoi" value="Envoyer" type="submit" /></p>';

+$checkeddefaut='checked="checked" ';

+$checkedbug='';

+$checkedccm='';

+if(isset($_POST['objet']))

+{

+  $objet=htmlentities($_POST['objet']);

+  if($objet=='bug')

+  {$objet='[BUG]';$checkedbug='checked="checked" ';}

+  elseif($objet=='ccm')

+  {$objet='[CCM]';$checkedccm='checked="checked" ';}

+  else

+  {$objet='Discussion';$checkeddefaut='checked="checked" ';}

+}

+$objetecho='

+  <p id="radio">Quel est l\'objet de votre message ?<br />

+  <label for="defaut" id="LabelRadioDefaut"><input type="radio" name="objet" value="defaut" id="defaut" '.$checkeddefaut.'/>Tout et rien, juste discuter</label>

+  <label for="bug" id="LabelRadioBug"><input type="radio" name="objet" value="bug" id="bug" '.$checkedbug.'/>Problème sur ce site</label>

+  <label for="ccm" id="LabelRadioCCM"><input type="radio" name="objet" value="ccm" id="ccm" '.$checkedccm.'/>Je suis membre de CCM</label>

+  </p>';

+if (isset($_POST['message']))

+  {

+    // La variable $verif va nous permettre de vérifier si la sémantique de l'email est bonne

+    $verif='#^[\w.-]+@[\w.-]+\.[a-z]{2,6}$#';

+

+    // On assigne et/ou protège nos variables

+    $votremail=stripslashes(htmlentities($_POST['votremail']));

+    $message=stripslashes(htmlspecialchars($_POST['message'],ENT_NOQUOTES));

+    $envoi=isset($_POST['envoi']);

+    $previsualiser=isset($_POST['previsualiser']);

+    $votremail=trim($votremail);

+    $message=trim($message);

+    $apercu_resultat='<p>Aperçu du résultat :</p>';

+

+

+    /*On vérifie si l'e mail et le message sont pleins, et on agit en fonction.

+      (on affiche Apercu du resultat, tel ou tel champ est vide, etc...*/

+    //Si ca ne vas pas (mal rempli, mail non valide...)

+    if ((empty($message))or(!preg_match($verif,$votremail)))

+      {

+        if (empty($votremail)and(empty($message)))

+          {

+            echo '<p>Tous les champs sont vides.</p>';

+            $message='';

+            $votremail='';

+            $apercu_resultat='';

+          }

+        else

+          {

+            if (empty($votremail))

+             {

+                echo '<p>Vous n\'avez pas donné votre adresse e-mail.</p>';

+                $votremail='';

+              }

+            elseif (!preg_match($verif,$votremail))

+                echo '<p>Votre adresse e-mail n\'est pas valide.</p>';

+            if (empty($message))

+              {

+                echo '<p>Votre message est vide.</p>';

+                $apercu_resultat='';

+                $message='';

+              }

+          }

+      }

+    //Si les deux sont pleins et que l'adresse est valide, on envoie on on prévisualise sans envoi

+    else

+      {

+        $domaine=preg_replace('#[^@]+@(.+)#','$1',$votremail);

+        $DomaineMailExiste=checkdnsrr($domaine,'MX');

+        if (preg_match('#^(sylvain\.sab(oua@laposte\.net|@free\.fr)|ssylvainsab@free\.fr)$#',$votremail))

+          echo '<p>Merci de ne pas entrer l\'adresse du Webmaster !</p>';

+        elseif(!$DomaineMailExiste)

+          echo'<p>Le nom de domaine ('.$domaine.') de l\'adresse e-mail ('.$votremail.') que vous avez donné n\'existe pas.</p>';

+        elseif($previsualiser)

+            {

+              $apercu_resultat='<p>Votre message et votre adresse e-mail sont valides et prêts à être envoyés.

+              <br />Vous n\'avez plus qu\'à cliquer sur le bouton "Envoyer".<br />Prévisualisation :</p>';

+              $Previsualiser='';

+            }

+        elseif($envoi)

+            {

+              require'bonjour.php';

+              if(!function_exists('htmlspecialchars_decode'))

+              {

+                function htmlspecialchars_decode($texte)

+                {

+                  return str_replace( 

+                            array('&amp;','&lt;','&gt;','&#39;','&quot;'),

+                            array('&','<','>','\'','"'),

+                            $texte);

+                }

+              }

+              $objet='[SITE] : '.$objet;

+              $headers='From:'.$votremail."\r\n".'To:'.$mail."\r\n".'Subject:'.$objet."\r\n".'Content-type:text/plain;charset=iso-8859-1'."\r\n".'Sent:'.date('l, F d, Y H:i');

+              if(@mail($mail,htmlspecialchars_decode($objet),htmlspecialchars_decode($message),$headers))

+              {

+                echo '<p>Votre message a bien été envoyé. Merci.</p><p><a href="/">Retour à la page d\'accueil</a></p>';

+                require'../autres/source-bas.php';

+                exit;

+              }

+              echo'<p>Un problème est survenu durant l\'envoi du mail.</p>';

+            }

+        else

+          echo'<p>Une condition innatendue est survenue lors du traitement des informations.</p>';

+      }

+echo $apercu_resultat;

+  }

+else

+  {

+  echo '<p>Vous pouvez me contacter à l\'adresse suivante :<br />

+ <img style="width:276px;height:29px;" alt="L\'adresse e-mail est une image. Vous pouvez utiliser le formulaire de contact." src="mail.gif" />

+</p>

+<p>Ou avec ce formulaire :</p>';

+  $votremail='';$message='';

+  }

+$bas_formulaire=$Previsualiser.$Envoi;

+?>

+<form method="post" action="index.php" enctype="multipart/form-data" id="FormulaireContact">

+  <?php echo $objetecho;?>

+

+  <p id="adr"><label for="votremail">Votre Adresse E-mail<br />

+  <input name="votremail" tabindex="1" size="30" type="text" id="votremail" value="<?php echo $votremail; ?>" /></label></p>

+  

+  <p id="msg"><label for="message">Votre message<br />

+  <textarea tabindex="2" rows="20" cols="120" name="message" id="message"><?php echo $message; ?></textarea>

+  </label></p>

+

+  <?php echo $bas_formulaire;?>

+  <div id="ResultatValidationForm"> </div>

+</form>

+<div><span style="color: rgb(192, 192, 192);">--<br />

+Sylvain</span><br />

+<a href="/">http://sylvain.sab.free.fr/</a></div>

+<?php require'../autres/source-bas.php'?>

\ No newline at end of file
blob - /dev/null
blob + 91c7f18d4656bb7d3054a80c133cac644427f47f (mode 644)
Binary files /dev/null and mail/mail.gif differ
blob - /dev/null
blob + 08f9ff99c35cc3f01274816cd6e88cdbe73241f5 (mode 644)
Binary files /dev/null and mail/mail2.gif differ
blob - /dev/null
blob + 2783cccb8fc221257cdfeb33facd4c95665e8f45 (mode 644)
--- /dev/null
+++ news.php
@@ -0,0 +1,282 @@
+<?php
+$titre='News';
+$head['css'][0]['filename']='news';
+require'autres/source-haut.php'?>
+<h1>News</h1>
+<hr />
+<p style="display:block;">
+  <a href="rss/">
+  <img style="width:80px;height:15px" alt="Flux RSS"  title="Le Flux RSS de ce site." src="img/rect/rectrss.png" /></a>
+  Voir  les news par <em>Flux RSS</em> : <a href="rss/">rss/</a></p>
+<hr />
+<table summary="Quelles news voir ?" class="quevoir" border="1"  cellpadding="2" cellspacing="2">
+<caption>Voir les news de  :</caption>
+ <tbody>
+  <tr><td>Année</td><td colspan="7">Mois</td></tr>
+  <tr><td><a href="#juin06">2006</a></td>
+      <td><a href="#juin06">Juin</a></td>
+      <td><a href="#juillet06">Juillet</a></td>
+      <td><a href="#aout06">Août</a></td>
+      <td><a href="#septembre06">Septembre</a></td>
+      <td><a href="#octobre06">Octobre</a></td>
+      <td><a href="#novembre06">Novembre</a></td>
+      <td><a href="#decembre06">Décembre</a></td></tr>
+  <tr><td><a href="#janvier07">2007</a></td>
+      <td colspan="3"><a href="#janvier07">Janvier</a></td>
+      <td colspan="3"><a href="#fevrier07">Février</a></td>
+      <td><a href="#aout07">Août</a></td></tr></tbody></table>
+<hr />
+<!--A O U T-->
+<h2 id="aout07">Dimanche 9 septembre 2007</h2>
+   <p>Après plus de six mois d'absence, pour diverses raisons, j'ai enfin mis à jour le site !</p>
+   <p>Voici pour commencer, <a href="/cestquoi/gnu-linux">un article sur Linux</a> dans la rubrique
+      "C'est quoi", ainsi qu'<a href="/cestquoi/libre">un article sur le logiciel libre</a>, dans la même rubrique.</p>
+<!--F E V R I E R-->
+<h2 id="fevrier07">Vendredi 2 Février 2007</h2>
+  <p>Ajout d'<a href="/configurer/thunderbird.php">un article pour configurer Thunderbird</a> avec les règles de filtrage et deux astuces.</p>
+<!--J A N V I E R-->
+<h2 id="janvier07">Samedi 27 Janvier 2007</h2>
+  <p>Après l'explication sur les serveurs, j'ai ajouté <a href="/cestquoi/web/hebergement.php">un article sur les hébergeurs et l'hébergement</a>.</p>
+<!--D E C E M B R E-->
+<h2>Samedi 30 Décembre 2006</h2>
+  <p>J'ai ajouté <a href="/apropos/stats.php">une page sur les statistiques du site</a>.
+     Vous y trouverez entre autres le nombre de visiteurs, les pages les plus vues et
+     le nombre de pages qu'ont vu les visiteurs les plus connectés.<br />
+     J'utilise l'adresse IP pour ces statistiques, mais elle est cryptée, c'est à dire transformée.
+     Donc je ne peux pas avoir d'informations sur vous à partir de cette adresse.
+     Par exemple, voici ce que donne "samedi" crypté : 785ee49b7e2b0e5f10791f06364fb8d17291d1d8</p>
+<h2>Mardi 26 Décembre 2006</h2>
+  <p>Joyeux Noël</p>
+  <p>J'ai ajouté <a href="/cestquoi/web/serveur.php">un article sur les notions de client et de serveur</a> sur le Web.</p>
+<h2 id="decembre06">Samedi 9 Décembre 2006</h2>
+  <p><a href='/logiciels/dbpoweramp.php'>dBPowerAMP Music Converter</a>
+     est un logiciel qui permet de convetir des fichiers dans plusieurs formats.</p>
+<!--N O V E M B R E-->
+<h2>Dimanche 26 Novembre 2006</h2>
+    <p>J'ai ajouté beaucoup de <a href='/liens.php'>liens</a>. Ils proviennent notamment des
+       <a href="http://sebsauvage.net/favs.html" hreflang="fr">favoris de sebsauvage</a> et <a href="/pages/">des miens</a>.</p>
+    <p>J'ai également fait des lègères modifications sur l'ensemble du site :</p>
+    <ul><li>Le site est en xhtml 1.1. C'est la dernière version du xhtml, plus stricte.<br />
+            Avec certains navigateurs, la moidre erreur empêche d'afficher la page.
+            De cette façon je sais que mes pages sont parfaitement valides.<br />
+            De plus, le lien pour valider la page en cours ne dirige plus vers le W3C,
+            mais vers le <a href="http://validome.org/" class="fr">validome</a>, bien plus performant.</li>
+        <li>J'ai supprimé les arrangements pour Internet Explorer.
+            Après tout, pourquoi est-ce que je me préoccuperais d'un navigateur qui ne respècte pas les standards ?
+            Pour ceux qui ont ce navigateur, vous pouvez <a href='/logiciels/firefox.php'>en changer</a>.</li>
+        <li>Sur la plupart des pages, la langue du lien
+            (<a hreflang="fr">français</a> ou <a hreflan="en">anglais</a>, ainsi que quelques autres langues) est indiquée.</li></ul>
+  <p>Enfin, j'ai coloré les codes dans les pages suivantes :<br />
+    <a href='/cestquoi/programmation/'>C'est quoi la programmation ?</a><br />
+    <a href='/cestquoi/web/'>C'est quoi  xhtml ?</a><br />
+    <a href='/cestquoi/web/css.php'>C'est quoi les CSS ?</a></p>
+<h2 id="novembre06">Jeudi 2 Novembre 2006</h2>
+    <p>Dans les logiciels, j'ai ajouté <a href="/logiciels/shoot2png.php">Shoot2png</a>,
+        un très bon freeware (logiciel gratuit) pour faire des captures d'écran</p>
+<!--O C T O B R E-->
+<h2>Dimanche 29 Octobre 2006</h2>
+    <p><a href='/apropos/licence.php'>Le contenu de mon site est maintenant sous Licence Creative Commons</a>,
+       une licence plus souple que le copyright.<br />
+       Cette page fait partie de la rubrique "<a href="/apropos/">A propos de ce site</a>".</p>
+<h2>Jeudi 26 Octobre 2006</h2>
+    <p>La version 2.0 de <a href="logiciels/firefox.php">Firefox</a> est enfin disponible ! Vous pouvez voir
+       l'<a href="http://www.commentcamarche.net/actualites/firefox-interview-et-version-2-0-finale-2437007-actualite.php3" hreflang="fr">article
+       correspondant sur ccm</a>, avec les explications de quelques nouveautés.<br />
+       Une nouvelle version de <a href="logiciels/ccleaner.php">Ccleaner</a> est également disponible.<br />
+       Je propose ces deux logiciels en téléchargement.</p>
+<h2>Samedi 21 Octobre 2006</h2>
+  <p>J'ai légèrement refait le design du site (les titres ne sont plus présentés de la même façon) et j'ai allégé mes fichiers css
+         avec le site <a href="http://flumpcakes.co.uk/css/optimiser/" hreflang="en">http://flumpcakes.co.uk/css/optimiser/</a></p>
+  <p><a href="/logiciels/firefox.php#opera">Opera</a> est un bon navigateur, <a href="/logiciels/firefox.php#lynx">Lynx</a>
+         est un navigateur en mode texte.</p>
+  <p><a href="/logiciels/xenu.php">Xenu's Link Sleuth</a> est un freeware utile pour vérifier tous les liens d'un site ou d'un fichier local.</p>
+<h2>Mercredi 11 Octobre 2006</h2>
+  <p>Dans la rubrique "C'est quoi", ajout de "<a href="cestquoi/programmation/">C'est quoi la programmation ?</a>"</p>
+<h2 id="octobre06">Samedi 7 Octobre 2006</h2>
+  <p>J'ai refait la page des logiciels. J'ajoute une petite description pour chaque logiciel,
+         et les images sont pour la plupart aux dimensions 48x48 ou 32x32 pixels.<br />
+         J'ai également ré-organisé légèrement les catégories.<br />
+         <del>Si vous utilisez Internet Explorer, les images seront au format gif. Avec un autre navigateur, elles seront au format png.<br />
+         C'est du au fait que Internet Explorer ne supporte pas la transparence des fichiers png,
+         il les affiche avec un moche fond bleu. J'utilise une regex en php pour changer la source de l'image selon le navigateur.<br />
+         Vous pouvez voir la source de la page en ajoutant "?source" a l'url : <a href="logiciels/?source">logiciels/?source</a></del></p>
+  <p>La page des logos est aussi refaite, mais cela ne se voit pas.
+     J'ai supprimé les tableaux et les attributs alt des images (ce sont des images purement décoratives).</p>
+  <p>Et enfin, j'ai refait le fichier xslt qui affiche mon flux RSS. Il est ici :
+         "<a href="/rss/rss.xslt">/rss/rss.xslt</a>".</p>
+<!--S E P T E M B R E-->
+<h2>Samedi 30 Septembre 2006</h2>
+  <p>J'ai rédigé la page "<a href="cestquoi/web/css.php">C'est quoi les CSS ?</a>".
+         Le CSS est un langage utilisé pour faire la mise en page des sites, en complément du xhtml.</p>
+  <p>Quelques précisions sur le <a href="cestquoi/web/">xhtml</a>.</p>
+  <p>En refaisant la page d'accueil, j'avais oublié les <a href="apropos/accesskeys.php">accesskeys</a> ! C'est refait.</p>
+  <p>J'ai allégé mes images avec le site
+     <a hreflang="en" href="http://tools.dynamicdrive.com/imageoptimizer/">http://tools.dynamicdrive.com/imageoptimizer/</a>.</p>
+<h2>Vendredi 29 Septembre 2006</h2>
+  <p>J'ai ajouté <a href="logiciels/iconsushi.php">@icon Sushi</a>, qui vous permet d'extraire les images de programmes, dll ou d'autres images.</p>
+  <p>J'ai changé la police du site, je trouve que c'est plus lisible.</p>
+<h2>Dimanche 24 Septembre 2006</h2>
+  <p>J'ai changé la page d'accueil : elle n'est plus codée en tableaux.<br />
+      J'ai également ajouté quelques nouvelles images. Je les ai faites sur le site
+  <a href="http://www.lucazappa.com/brilliantMaker/buttonImage.php" hreflang="en">Brilliant button maker</a>.<br />
+      Le menu est aussi changé.</p>
+<h2>Samedi 23 Septembre 2006</h2>
+  <p>Des nouvelles versions de <a href="/logiciels/ccleaner.php">Ccleaner</a> (1.33.385),
+     <a href="logiciels/firefox.php">Firefox</a> (1.5.0.7) et
+     <a href="logiciels/thunderbird.php">Thunderbird</a> (1.5.0.7) sont disponibles.<br />
+         Je les propose en téléchargement.
+         (<a href="http://www.commentcamarche.net/actualites/firefox-thunderbird-1-5-0-7-2379791-actualite.php3" hreflang="fr">
+         Plus d'informations sur les nouvelles versions de Firefox et Thunderbird</a>).</p>
+  <p>Sur la page "<a href="/mail/">Contact</a>",
+     je me suis un peu amusé avec des propriétés CSS 3 (La version des CSS est actuellement la version 2) :
+     Si vous utilisez Firefox, vous verrez des bordures arrondies. J'ai également amélioré le formulaire de contact.</p>
+  <p>Ajout d'une rubrique dans "<a href="cestquoi/web/index.php#balisescomplexes">C'est quoi (x)HTML ?</a>".</p>
+  <p>J'ai refait la page de <a href="/liens.php">Liens</a>. Elle s'affiche plus vite.<br />
+         Vous pouvez également voir <a href="/pages/">la page de del.icio.us</a>.</p>
+  <p>Suite à une suggestion, j'ai refait la vidéo qui explique comment utiliser Ccleaner en deux parties.<br />
+    <a href="temp/?video=ccleaner">1&deg; partie (téléchargement, installation)</a><br />
+    <a href="temp/?video=cleaner2">2&deg; partie (configuration, installation)</a></p>
+<h2>Mercredi 13 Septembre 2006</h2>
+  <p>Le programme Delxml2html, créé par Sébastien Sauvage, permet de transformer ses marques pages del.icio.us en une seule page html.
+     <br />J'ai modifié ce programme, et j'ai rédigé <a href="/delxml/">une page qui explique comment l'utiliser</a>.</p>
+<h2>Mardi 12 Septembre 2006</h2>
+  <p>Il y a quelques temps, je me suis inscrit au service "del.icio.us.".
+     <br />  Ce service permet de partager ses marques pages avec tout le monde. Vous pouvez voir mes marques-pages de différentes fa&ccedil;ons :</p>
+  <ol><li>Directement depuis del.icio.us (mise à jour en temps réel) :
+          <a href="http://del.icio.us/Ssylvainsab/" hreflang="fr">http://del.icio.us/Ssylvainsab/</a></li>
+      <li>Depuis le flux RSS de del.icio.us (mise à jour en temps réel également) :
+          <a href="http://del.icio.us/rss/Ssylvainsab/" hreflang="fr">http://del.icio.us/rss/Ssylvainsab/</a></li>
+      <li>Sur <a href="/pages/">une page de ce site</a> (mise à jour de temps en temps)</li></ol>
+<h2>Dimanche 10 Septembre 2006</h2>
+  <p>J'ai enfin remis à jour la page des logos. J'en ai ajouté beaucoup :<br />
+         Il y a maintenant <a href="/logos/">des logos sur Firefox, thunderbird, Nvu, Mozilla et Zone Alarm</a>.</p>
+  <p>Ajout de la page <a href="/cestquoi/web/">"C'est quoi (x)HTML ?"</a></p>
+<h2>Samedi 9 Septembre 2006</h2>
+  <p>J'ai ajouté beaucoup de <a href="/liens.php">liens</a>.</p>
+<h2 id="septembre06">Dimanche 3 septembre 2006</h2>
+  <p>Pas de news pendant une semaine !<br />
+         Pendant ce temps, j'étais occupé a transferer les fichiers du site a une autre adresse.<br />
+         Le site est a l'adresse http://sylvain.sab.free.fr/</p>
+  <p>il y a eu très peu de mises a jour pendant ce temps. Cependant quelques choses ont changées :</p>
+  <ul><li>La favicône n'est plus la même : <img src='/img/mini/favicon.png' alt='' class='t16' /></li>
+      <li>Je suis inscrit à "<a href="http://del.icio.us/" hreflang="en">del.icio.us</a>". Ce service permet de partager ses marques pages avec d'autres personnes,
+          en les notant sur une page accessible &agrave; tout le monde.<br />Vous pouvez voir les pages que j'ai not&eacute;es &agrave; l'adresse
+          <a hreflang="fr" href="http://del.icio.us/ssylvainsab/">http://del.icio.us/ssylvainsab/</a>.
+          Cette page est également accessible par flux RSS : <a hreflang="fr" href="http://del.icio.us/rss/Ssylvainsab/">http://del.icio.us/rss/Ssylvainsab/</a>.
+          <br />Ce service est bien entendu gratuit et tout le monde peut l'utiliser.</li>
+      <li>J'ai ajouté quelques <a href="/liens.php">nouveaux liens</a>, et fait quelques modifications dans la page "<a href="html.php">html</a>".</li>
+      <li>J'ai rajouté le logiciel <a href="/logiciels/iconedit.php">IconEdit32</a>, un éditeur d'icones.
+              C'est avec ce logiciel que j'ai fait les nouvelles favicones.</li></ul>
+<!--A O U T-->
+<h2>Dimanche 27 août 2006</h2>
+  <p>Ajout d'Accesskeys et d' <a href="/apropos/accesskeys.php">une page</a> qui explique ce que c'est, et comment les utiliser.</p>
+  <p>J'ai eu un problème avec la page des logos, elle est indisponible pour le moment.
+          Mais je suis en train de la refaire et d'y  ajouter beaucoup de logos.</p>
+<h2>Vendredi 25 août 2006</h2>
+  <p>Ajout de plusieurs <a href="logiciels/firefox.php#adblockplus">extensions pour Firefox.</a></p>
+  <p>Ajout d'une page ou sont répertoriés tous les logiciels proposés en téléchargement sur mon site ainsi que leur extensions/plugins/add-on :
+     <a href="/logiciels/telecharger/">/logiciels/telecharger/</a></p>
+<h2>Jeudi 24 août 2006</h2>
+  <p>Sur la page des logiciels, ajout d'une  section pour les sites et de 3 logiciels dans cette section :
+     <a href="logiciels/pspad.php">PSPad Editor</a>, <a href="logiciels/nvu.php">Nvu</a> et <a href="logiciels/tidy.php">TidyGUI</a></p>
+  <p>Une nouvelle version de <a href="logiciels/ccleaner.php">Ccleaner</a>  (la 1.32.345) est disponible. Je la propose en  téléchargement.</p>
+<h2>Mercredi 9 août 2006</h2>
+  <p>Une <a href="/temp/?video=ffonglets">vidéo</a> (400 Ko) qui explique  comment utiliser les onglets dans Firefox.</p>
+<h2>Mardi 8 août 2006</h2>
+  <p>Encore des astuces pour Optimiser Windows. Cette fois-ci,  désactiver les services inutiles.
+     <a href="/configurer/windows/2.php#desactiveservices">configurer/windows/2.php#desactiveservices</a><br />
+     Egalement une vidéo qui explique comment désactiver les  services (elle est dans la page 2 de Windows) :
+     <a href="/temp/?video=stopservice">temp/?video=stopservice</a></p>
+<h2>Lundi 7 août 2006</h2>
+  <p>Ajout d'astuces pour optimiser Windows : <a href="configurer/windows/2.php">configurer/windows/2.php</a></p>
+<h2>Dimanche 6 août 2006</h2>
+  <p>Ajout de <a href="/logiciels/pagedefrag.php">Pagedefrag</a> dans les logiciels,
+     qui est un excellent utilitaire de défragmentation.</p>
+  <p>Ajout d'une page d'astuces pour optimiser Windows. Elle est encore en construction, seule la première partie est terminée.
+     <a href="/configurer/windows/">/configurer/windows/</a>.</p>
+<h2>Samedi 5 août 2006</h2>
+  <p>Ajout de <a href="logiciels/stardown.php">Star Downloader</a> dans les logiciels.
+     C'est un excellent gestionnaire de téléchargements.</p>
+<h2 id="aout06">Vendredi 4 août 2006</h2>
+  <p>J'ai mis des nouveaux boutons dans le menu et sur la page  d'accueil.</p>
+  <p>Le nouveau design est terminé ! Il est sur chaque  page, le site est donc plus "uni". Je vous conseille d'utiliser
+     <a href="logiciels/firefox.php">Firefox</a>, car ce      navigateur respecte  les standards, contrairement à IE.<br />
+     Il y a donc une chose qui fonctionne sous Firefox mais pas sous IE : Lorsque vous cliquez sur un lien,
+     il devient vert sur fond noir dans  Firefox. Dans IE, il reste gris.<br />
+     Quand vous avez cliqué sur un lien, IE le laisse en noir sur  fond noir, ce n'est pas joli.</p>
+  <p>Ajout de liens vers des images Firefox dans la pages logos :
+     <a href="/logos/index.php#firefox">logos/index.php#firefox</a></p>
+  <p>Une nouvelle version de <a href="logiciels/firefox.php">Firefox</a> (1.5.0.6) est disponible.
+     Elle comporte notamment des correctifs de sécurité. Je la propose en téléchargement.</p>
+<!--J U I L L E T-->
+<h2>Dimanche 30 juillet 2006</h2>
+  <p>Ajout d'une sitemap. Si vous utilisez l'extension Navibar pour Firefox, vous pourrez voir dans la barre latérale un plan du site.
+     Je vous recommande cette extension, elle est très  pratique.<br />
+     Sitemap : <a href="/sitemap.rdf">sitemap.rdf</a> &nbsp; &nbsp;
+     Navibar : <a href="logiciels/firefox.php#navibar">logiciels/firefox.php#navibar</a></p>
+  <p>Dans la page "Conseils et astuces pour vos sites WEB et vos pages  html",
+     ajout de "<a href="html.php#sitemap">Faire Une SiteMap</a>".</p>
+<h2>Samedi 29 juillet 2006</h2>
+  <p>Ajout de logos Firefox dans la page "<a href="logos/">Logos</a>",
+     ainsi que de plusieurs liens ou vous touverez des fonds  d'écran et des images Firefox.</p>
+  <p>Une  nouvelle version de <a href="logiciels/thunderbird.php">Thunderbird</a>
+     est parue, la 1.5.0.5  (l'ancienne était la 1.5.0.4).<br />
+     Une nouvelle version de <a href="logiciels/firefox.php">Firefox</a> est également disponible (la 1.5.0.5).</p>
+<h2>Vendredi 28 juillet 2006</h2>
+  <p>Ajout de la page "<a href="logos/">logos</a>". Vous y trouverez toutes les images qui sont sur le site, ainsi que
+     d'autres images qui me plaisent ou qui peuvent servir.
+     Vous pouvez reprendre ces images pour votre site, mais si vous prenez une de celles
+     que j'ai faites moi même <a href="mail/">indiquez le moi</a>.</p>
+  <p>Ajout de la page "<a href="html.php">html</a>". Vous y trouverez des conseils et des astuces pour faire vos sites.</p>
+  <p>J'ai refait la vidéo qui explique comment gérer ses traces avec Firefox :
+     elle était en mauvaise résolution et on la voyait mal. J'ai aussi corrigé quelques fautes d'orthographe et  mentionné l'extension
+     <a href="logiciels/firefox.php#webdeveloper">WebDeveloper</a>. La video est a l'adresse :
+     <a href="/temp/?video=configfirefoxtraces">temp/?video=configfirefoxtraces</a>.</p>
+  <p>Les pages se chargent plus vite pour beaucoup de raisons :</p>
+  <ul><li>Les liens sont raccourcis : il sont en relatif et plus en absolu.</li>
+      <li>J'ai également allégé les fichiers css et html.</li>
+      <li>J'ai réorganisé le site. Si vous trouvez un lien mort, <a href="mail/">écrivez-moi</a>.</li></ul>
+  <p>Le flux RSS du site est enfin adapté! C'est à dire que vous pouvez le voir normalement.</p>
+<h2>Mardi 25 juillet 2006</h2>
+  <p>J'ai réorganisé le répertoire  "<a href="/temp/">temp</a>".
+     <br />La présentation des fichiers, nottament des  vidéos est maintenant sous la forme d'un tableau.</p>
+  <p>Ajout de  l'extension <a href="logiciels/firefox.php#webdevelloper">Web Develloper</a> pour Firefox.</p>
+<h2>Lundi 24 juillet 2006</h2>
+  <p>Le nouveau design du site est presque fini. Il ne reste plus  que la page
+     <a href="liens.php">liens</a>. J'y ajoute en même temps de nouveaux liens.</p>
+  <p>Il y a des nouveaux boutons sur la page d'accueil.
+     Je les ai faits avec le logiciel <a hreflang="fr" href="http://www.gratilog.net/web1.htm#deknop">DeKnop</a>.</p>
+  <p>J'ai également ajouté l'icone <img class='t16' alt="RSS" src="img/mini/minirss.png" />
+     à droite de l'url  qui signale la présence d'un flux RSS sur le site.<br />
+     Il vous suffit de cliquer dessus pour l'ajouter a vos favoris</p>
+<h2>Dimanche 23 juillet 2006</h2>
+  <p>J'ai ajouté un <a href="/rss/">flux RSS</a> (enfin!)</p>
+  <p>J'ai mis à jour la page <a href="logiciels/winamp.php">Winamp</a>
+     dans les <a href="logiciels/">logiciels</a> : tous les téléchargements sont désormais  disponibles.</p>
+  <p>Ajout d'une vidéo qui explique comment télécharger,
+     installer, configurer et utiliser le  logiciel Zone Alarm : <a href="configurer/zonealarm.php">configurer/zonealarm.php</a></p>
+<h2>Mardi 4 Juillet 2006</h2>
+  <p>Ajout de <a href="/logiciels/ccleaner.php">Craps Cleaner</a> dans les logiciels.
+     <br />J'ai fait une <a href="configurer/ccleaner.php">vidéo</a> pour vous montrer comment télécharger,
+     installer, configurer et utiliser ce  logiciel.</p>
+  <p>J'ai oublié de le préciser hier, mais  j'ai ajouté une favicône.<br />
+     C'est la petite image que vous voyez a droite de l'url, elle vous  permettra de reconna&icirc;tre les pages de mon site :
+     <img class='t16' alt="::" title="C'est la favicône"  src="img/mini/favicon.png" />.<br />
+     Ajout de la rubrique <a href="/cestquoi/">C'est quoi</a>.
+     Vous trouverez <a href="/cestquoi/starforce.php">Starforce</a> à cet endroit.</p>
+<h2>Lundi 3 Juillet 2006</h2>
+  <p>Mise à jour de la page <a href="cestquoi/starforce.php">Starforce</a>.</p>
+  <p>Mise à jour de <a href="logiciels/winamp.php">Winamp et VLC Media Player</a> dans les <a href="logiciels/">logiciels</a>.</p>
+<h2 id="juillet06">Samedi 1&deg; Juillet 2006</h2>
+  <p>Mise à jour de <a href="logiciels/firefox.php">Firefox</a>, et
+     ajout de <a href="/logiciels/winamp.php">Winamp et VLC Media Player</a> dans les logiciels. </p>
+<!--J U I N-->
+<h2>Jeudi 29 juin 2006</h2>
+  <p>Ajout de <a href="/logiciels/thunderbird.php">Thunderbird</a>, d'<a href="/logiciels/avast.php">Avast</a>,
+     de <a href="/logiciels/zonealarm.php">Zone Alarm</a> et d'<a href="/logiciels/spybot.php">anti-spywares</a>.</p>
+<h2>Mercredi 28 juin 2006<a id="juin06"></a></h2>
+  <p>Création de mon  site.</p>
+  <p>Mise à jour de la page <a href="mail/">Contact</a>, ainsi que de la page <a href="liens.php">Liens</a>.</p>
+  <p>Ajout de <a href="/logiciels/firefox.php">Firefox</a> dans les logiciels,
+     et de <a href="/configurer/firefox.php">deux vidéos pour vous montrer comment configurer ce logiciel</a>.</p>
+<?php require'autres/source-bas.php';?>
blob - /dev/null
blob + 72edecd60f54d7588d82db5dfb533785fe9abf46 (mode 644)
--- /dev/null
+++ pages/index.php
@@ -0,0 +1,445 @@
+<?php
+$charset='utf-8';
+$head['css'][0]['filename']='stylefavs';
+$head['autres']='<link rel="alternate" type="application/rss+xml" title="Del.icio.us - Sylvain.sab" href="http://del.icio.us/Ssylvainsab/" />'."\n\t".
+  '<meta http-equiv="robots" content="none" />';
+$titre='Bookmarks del.icio.us';
+require'../autres/source-haut.php'?>
+<h1>Bookmarks 2007-02-22</h1>
+<p class="fin"><a href="http://del.icio.us/ssylvainsab/">Page originale</a></p>
+<p>
+<a href="http://images.google.com/imagelabeler/" class="d">Google Image Labeler</a> - <span class="l">http://images.google.com/imagelabeler/</span><br /><span class="n">C'est une nouveaut&eacute; de google : avec quelqu'un choisi au hasard, vous devez attribuer des mots-cl&eacute;s &agrave; une ou plusieurs images. (Tags: fun game)</span><br /><br />
+<a href="http://www.infos-du-net.com/telecharger/mp3DirectCut,0301-460.html" class="d">T&eacute;l&eacute;charger mp3DirectCut</a> - <span class="l">http://www.infos-du-net.com/telecharger/mp3DirectCut,0301-460.html</span><br /><span class="n">un logiciel de d&eacute;coupage de mp3 (Tags: tools mp3 multim&eacute;dia)</span><br /><br />
+<a href="http://www.discosarko.com/disco_sarko.php" class="d">Disco Sarko</a> - <span class="l">http://www.discosarko.com/disco_sarko.php</span><br /><span class="n">arf arf arf. pour faire danser sarkozy. c'est stupide, mais très rigolo ! (Tags: fun activism)</span><br /><br />
+<a href="http://www.laltruiste.com/" class="d">Le guide des langages Web : Les cours</a> - <span class="l">http://www.laltruiste.com/</span><br /><span class="n"> (Tags: programming webmaster)</span><br /><br />
+<a href="http://www.user-agents.org/index.shtml" class="d">List of User-Agents (Spiders, Robots, Browser)</a> - <span class="l">http://www.user-agents.org/index.shtml</span><br /><span class="n">une liste importante. (Tags: system:unfiled)</span><br /><br />
+<a href="http://andreasviklund.com/" class="d">andreasviklund.com</a> - <span class="l">http://andreasviklund.com/</span><br /><span class="n"> (Tags: system:unfiled)</span><br /><br />
+<a href="http://www.christopher-jablonski.com/fr/reperes/accessibilite.shtml" class="d">Web accessible : les "pourquoi" et les "Comment"</a> - <span class="l">http://www.christopher-jablonski.com/fr/reperes/accessibilite.shtml</span><br /><span class="n"> (Tags: accessibilite)</span><br /><br />
+<a href="http://grandstreamdreams.blogspot.com/2006/08/20-free-ways-to-pimp-windows-xp.html" class="d">Grand Stream Dreams: 20 Free Ways to Pimp Windows XP</a> - <span class="l">http://grandstreamdreams.blogspot.com/2006/08/20-free-ways-to-pimp-windows-xp.html</span><br /><span class="n"> (Tags: windows tools)</span><br /><br />
+<a href="http://www.laboratoire-microsoft.org/t/1794/" class="d">Nettoyer PAGEFILE.SYS</a> - <span class="l">http://www.laboratoire-microsoft.org/t/1794/</span><br /><span class="n">pagefile.sys, c'est le fichier de m&eacute;moire de windows, assez lourd et qui contient beaucoup d'informations. (Tags: tools windows)</span><br /><br />
+<a href="http://www.multiproxy.org/" class="d">Home of MultiProxy and Anonymous proxy list</a> - <span class="l">http://www.multiproxy.org/</span><br /><span class="n"> (Tags: tools internet securite)</span><br /><br />
+<a href="http://www.supportware.net/mozilla/" class="d">AusDilecce Extensions</a> - <span class="l">http://www.supportware.net/mozilla/</span><br /><span class="n">des extensions pour firefox et thunderbird (Tags: extension)</span><br /><br />
+<a href="http://www.thenod.info/" class="d">thenod.info</a> - <span class="l">http://www.thenod.info/</span><br /><span class="n">un blog int&eacute;ressant (Tags: blog)</span><br /><br />
+<a href="http://trichoko.free.fr/index.php" class="d">Trichoko</a> - <span class="l">http://trichoko.free.fr/index.php</span><br /><span class="n">un site d'upload d'images (Tags: tools)</span><br /><br />
+<a href="http://novelconcepts.co.uk/FlashElementTD/" class="d">Flash Element TD | Novel Concepts</a> - <span class="l">http://novelconcepts.co.uk/FlashElementTD/</span><br /><span class="n">un jeu tir&eacute; de warcraft (Tags: fun game)</span><br /><br />
+<a href="http://www.face-cache.fr/index.php/2006/12/14/17-le-stop-motion-pour-en-savoir-plus" class="d">Le Stop Motion - Pour en savoir plus ! - Face Cach&eacute;e - D&eacute;couvrez le web diff&eacute;remment</a> - <span class="l">http://www.face-cache.fr/index.php/2006/12/14/17-le-stop-motion-pour-en-savoir-plus</span><br /><span class="n"> (Tags: fun)</span><br /><br />
+<a href="http://www.generation-nt.com/astuces/lire/149/deplacer-le-repertoire-cache-de-firefox/" class="d">D&eacute;placer le r&eacute;pertoire cache de Firefox : Trucs et Astuces Windows XP 2000 2003 NT</a> - <span class="l">http://www.generation-nt.com/astuces/lire/149/deplacer-le-repertoire-cache-de-firefox/</span><br /><span class="n"> (Tags: firefox tools)</span><br /><br />
+<a href="http://www.echosdunet.net/dossiers/dossier_1171_firefox+thunderbird+sauvegarder+ses+parametres.html" class="d">Firefox et Thunderbird : sauvegarder ses paramètres Tuto Soft - EchosDunet</a> - <span class="l">http://www.echosdunet.net/dossiers/dossier_1171_firefox+thunderbird+sauvegarder+ses+parametres.html</span><br /><span class="n"> (Tags: firefox tools)</span><br /><br />
+<a href="http://tina.zevillage.org/news/les-logiciels-libres" class="d">Les logiciels libres</a> - <span class="l">http://tina.zevillage.org/news/les-logiciels-libres</span><br /><span class="n"> (Tags: free libre)</span><br /><br />
+<a href="http://fr.selfhtml.org/html/reference/signes.htm" class="d">SELFHTML: HTML/XHTML / Sommaire de r&eacute;f&eacute;rence HTML /R&eacute;f&eacute;rence HTML pour les caractères</a> - <span class="l">http://fr.selfhtml.org/html/reference/signes.htm</span><br /><span class="n"> (Tags: html)</span><br /><br />
+<a href="http://www.htmlgoodies.com/beyond/reference/article.php/3472611" class="d">So, You Want An "&amp; Command", Huh?</a> - <span class="l">http://www.htmlgoodies.com/beyond/reference/article.php/3472611</span><br /><span class="n">une liste d'entit&eacute;s html (Tags: html)</span><br /><br />
+<a href="http://www.oscommerce-fr.info/forum/index.php?showtopic=17429" class="d">Liste de tutoriels CSS - Forum osCommerce-fr</a> - <span class="l">http://www.oscommerce-fr.info/forum/index.php?showtopic=17429</span><br /><span class="n">quelques aides-m&eacute;moires CSS. (Tags: css)</span><br /><br />
+<a href="http://developpeur.journaldunet.com/tutoriel/css/040601-css-regles-at.shtml" class="d">CSS : les règles @ - JDN D&eacute;veloppeurs</a> - <span class="l">http://developpeur.journaldunet.com/tutoriel/css/040601-css-regles-at.shtml</span><br /><span class="n"> (Tags: css)</span><br /><br />
+<a href="http://www.phpfrance.com/forums/voir_reponse-83074.php" class="d">PHPFrance :: Voir le sujet - [R&eacute;solu] Date et heure au format français</a> - <span class="l">http://www.phpfrance.com/forums/voir_reponse-83074.php</span><br /><span class="n"> (Tags: php sql programming)</span><br /><br />
+<a href="http://www.phpfrance.com/forums/voir_sujet-8323.php" class="d">PHPFrance :: Voir le sujet - Quelques petites manipulations avec les dates (PHP/MySQL)</a> - <span class="l">http://www.phpfrance.com/forums/voir_sujet-8323.php</span><br /><span class="n">sur les dates en php et sql. (Tags: php sql programming)</span><br /><br />
+<a href="http://www.excelabo.net/xl/dates.php" class="d">Les astuces excel d'Excelabo : Les Dates : Formats et Calculs</a> - <span class="l">http://www.excelabo.net/xl/dates.php</span><br /><span class="n">attention, il faut avoir javascript activ&eacute;. (Tags: system:unfiled)</span><br /><br />
+<a href="http://www.zdnet.fr/services/speedtest/speedtest.htm" class="d">Test de bande passante par ZDNet.fr</a> - <span class="l">http://www.zdnet.fr/services/speedtest/speedtest.htm</span><br /><span class="n">un test de vitesse de connexion (Tags: tools)</span><br /><br />
+<a href="http://developpeur.journaldunet.com/tutoriel/dht/060512-5-javascripts-vraiment-utiles.shtml" class="d">5 JavaScripts vraiment utiles - JDN D&eacute;veloppeurs</a> - <span class="l">http://developpeur.journaldunet.com/tutoriel/dht/060512-5-javascripts-vraiment-utiles.shtml</span><br /><span class="n"> (Tags: javascript programming)</span><br /><br />
+<a href="http://quentinc.net/ref/articles/aide-memoire-syntaxe-et-mots-cles-javascript/cde14" class="d">Aide-m&eacute;moire de la syntaxe et des mots-cl&eacute;s javascript -- Le Coin Web de QuentinC</a> - <span class="l">http://quentinc.net/ref/articles/aide-memoire-syntaxe-et-mots-cles-javascript/cde14</span><br /><span class="n"> (Tags: javascript programming)</span><br /><br />
+<a href="http://chameau.moostik.net/" class="d">Statistik</a> - <span class="l">http://chameau.moostik.net/</span><br /><span class="n">Un site de statistiques gratuites. Il y a l'air d'avoir beaucoup de fonctionnalit&eacute;s. (Tags: free tools)</span><br /><br />
+<a href="http://badvista.fsf.org/" class="d">BadVista.org: Stopping Vista adoption by promoting free software — BadVista</a> - <span class="l">http://badvista.fsf.org/</span><br /><span class="n">un site pour emp&ecirc;cher la monopolisation de l'informatique par microsoft avec windows vista. (Tags: activism)</span><br /><br />
+<a href="http://www.gnu.org/philosophy/no-word-attachments.fr.html" class="d">Finissons-en avec les pièces jointes Word</a> - <span class="l">http://www.gnu.org/philosophy/no-word-attachments.fr.html</span><br /><span class="n">c'est vrai que c'est d&eacute;sagr&eacute;able de recevoir des fichiers que l'on ne peut pas lire. (Tags: activism)</span><br /><br />
+<a href="http://www.cssoptimiser.com/" class="d">Online CSS Optimizer / Optimiser</a> - <span class="l">http://www.cssoptimiser.com/</span><br /><span class="n"> (Tags: css)</span><br /><br />
+<a href="http://nicolas.chazot.free.fr/" class="d">3SIP</a> - <span class="l">http://nicolas.chazot.free.fr/</span><br /><span class="n">Un excellent site sur " la s&eacute;curit&eacute; des systèmes informatiques des particuliers". (Tags: securite)</span><br /><br />
+<a href="http://mdbui2.ift.ulaval.ca/Knowledges/Coding_Text/Table_Entites.htm" class="d">Table d'entit&eacute;s</a> - <span class="l">http://mdbui2.ift.ulaval.ca/Knowledges/Coding_Text/Table_Entites.htm</span><br /><span class="n">une autre liste assez complète d'entit&eacute;s html (Tags: html)</span><br /><br />
+<a href="http://jdhosts.net/starwars-rpg/troll/" class="d">Troll Machine - Le Trollodrôme (trollodrome trollesque)</a> - <span class="l">http://jdhosts.net/starwars-rpg/troll/</span><br /><span class="n">Du troll, du troll, et encore du troll. (Tags: fun)</span><br /><br />
+<a href="http://video.google.fr/videoplay?docid=-8996055986353195886&amp;pr=goog-sl" class="d">Les OGM sont ils dangereux pour la sant&eacute;? L'&eacute;tude qui accuse - Google Video</a> - <span class="l">http://video.google.fr/videoplay?docid=-8996055986353195886&amp;pr=goog-sl</span><br /><span class="n"> (Tags: activism)</span><br /><br />
+<a href="http://www.gnu.org/philosophy/can-you-trust.fr.html" class="d">Pouvez-vous faire confiance &agrave; votre ordinateur ? - Projet GNU - Free Software Foundation/Fondation pour le Logiciel Libre (FSF/FLL)</a> - <span class="l">http://www.gnu.org/philosophy/can-you-trust.fr.html</span><br /><span class="n">Un article sur l'informatique d&eacute;loyale, avec quelques liens en bas de page pour agir. (Tags: activism)</span><br /><br />
+<a href="http://totalementcretin.apinc.org/blog/2007/01/29/384-microsoft-a-invente-le-monde" class="d">Microsoft a invent&eacute; le monde - Totalement Cretin(s)</a> - <span class="l">http://totalementcretin.apinc.org/blog/2007/01/29/384-microsoft-a-invente-le-monde</span><br /><span class="n">Waow. La c'est cr&eacute;tin. TRES. impressionnant (Tags: activism)</span><br /><br />
+<a href="http://www.libre-musique-mp3.com/" class="d">Musique libre de droit - illustration musicale</a> - <span class="l">http://www.libre-musique-mp3.com/</span><br /><span class="n"> (Tags: free music libre gratuit)</span><br /><br />
+<a href="http://www.boxson.net/" class="d">BOXSON # Accueil # musique libre et gratuite: telecharger des mp3, des OGG et partager vos morceaux!</a> - <span class="l">http://www.boxson.net/</span><br /><span class="n"> (Tags: free music libre gratuit)</span><br /><br />
+<a href="http://rezal404.org/wikini/wakka.php?wiki=Mp3Legal" class="d">LeWiki404:Mp3Legal</a> - <span class="l">http://rezal404.org/wikini/wakka.php?wiki=Mp3Legal</span><br /><span class="n">une liste de sites de musique libre. (Tags: free music libre gratuit)</span><br /><br />
+<a href="http://www.auboutdufil.com/" class="d">T&eacute;l&eacute;charger et &eacute;couter de la musique libre</a> - <span class="l">http://www.auboutdufil.com/</span><br /><span class="n">un site de podcasting (blog de musique) (Tags: free music libre gratuit blog)</span><br /><br />
+<a href="http://www.keopz.com/" class="d">Keopz.com - La nouvelle plate-forme de la musique libre et gratuite</a> - <span class="l">http://www.keopz.com/</span><br /><span class="n"> (Tags: free music gratuit libre)</span><br /><br />
+<a href="http://www.dogmazic.net/index.php?op=edito" class="d">Dogmazic.net, musique libre - Accueil</a> - <span class="l">http://www.dogmazic.net/index.php?op=edito</span><br /><span class="n">un autre site de musique libre de droits. (Tags: free music libre gratuit)</span><br /><br />
+<a href="http://suis-jeleseulcommecela.hautetfort.com/" class="d">Vous reprendrez bien un peu d'humanisme ?</a> - <span class="l">http://suis-jeleseulcommecela.hautetfort.com/</span><br /><span class="n">un blog (Tags: blog)</span><br /><br />
+<a href="http://kirk-www.jamendo.com/fr/artist/madameolga/" class="d">Jamendo : Madame Olga</a> - <span class="l">http://kirk-www.jamendo.com/fr/artist/madameolga/</span><br /><span class="n">j'aime bien aussi. (Tags: music free libre gratuit)</span><br /><br />
+<a href="http://www.davidtmx.com/" class="d">www.davidTMX.com</a> - <span class="l">http://www.davidtmx.com/</span><br /><span class="n">un artiste d&eacute;couvert sur jamendo.com, un site de musique libre. j'aime bien ! (Tags: fun music free libre gratuit)</span><br /><br />
+<a href="http://yansanmo.no-ip.org/xhtml/" class="d">XHTML 1.0 Strict</a> - <span class="l">http://yansanmo.no-ip.org/xhtml/</span><br /><span class="n">une autre liste de balises html (Tags: html)</span><br /><br />
+<a href="http://www.tutoriaux.biz/" class="d">Aux Tutoriaux Français-Tutorial et Aide Pour Logiciels</a> - <span class="l">http://www.tutoriaux.biz/</span><br /><span class="n"> (Tags: system:unfiled)</span><br /><br />
+<a href="http://www.webmaster-toolkit.com/html-entity-chart.shtml" class="d">HTML Entity Chart :: Webmaster Toolkit</a> - <span class="l">http://www.webmaster-toolkit.com/html-entity-chart.shtml</span><br /><span class="n">une liste d'entit&eacute;s (Tags: system:unfiled)</span><br /><br />
+<a href="http://uitest.com/en/check/" class="d">UITest.com: Site Check – Web Site Test</a> - <span class="l">http://uitest.com/en/check/</span><br /><span class="n">Un site qui donne directement plusieurs liens (validations, etc) &agrave; partir d'une url. (Tags: system:unfiled)</span><br /><br />
+<a href="http://www.fakenamegenerator.com/index.php" class="d">Fake Name Generator</a> - <span class="l">http://www.fakenamegenerator.com/index.php</span><br /><span class="n">permet de cr&eacute;er une fausse identit&eacute;. un peu comme bugmenot. (Tags: tools internet)</span><br /><br />
+<a href="http://www.prendreuncafe.com/blog/post/2006/11/22/12-astuces-optimisation-performances-php" class="d">12 astuces d'optimisation de performance PHP - Prendre un Caf</a> - <span class="l">http://www.prendreuncafe.com/blog/post/2006/11/22/12-astuces-optimisation-performances-php</span><br /><span class="n">encore (Tags: php programming)</span><br /><br />
+<a href="http://www.estvideo.com/dew/pages/phpbench/" class="d">optimisation php</a> - <span class="l">http://www.estvideo.com/dew/pages/phpbench/</span><br /><span class="n"> (Tags: system:unfiled)</span><br /><br />
+<a href="http://www.toutjavascript.com/savoir/optimiser.php3" class="d">Optimiser son site</a> - <span class="l">http://www.toutjavascript.com/savoir/optimiser.php3</span><br /><span class="n">un autre article sur l'optimisation. (Tags: php sql programming bdd)</span><br /><br />
+<a href="http://www.erreursdefilms.com/" class="d">Erreurs de films.com</a> - <span class="l">http://www.erreursdefilms.com/</span><br /><span class="n">un site qui montre quelques erreurs de tournage, ou clins d'oeil dans les films. il y en a beaucoup. (Tags: fun)</span><br /><br />
+<a href="http://pbnaigeon.developpez.com/tutoriel/PHP/apostrophe-guillemet/" class="d">Apostrophes ou guillemets : lesquels choisir ? - Club d'entraide des d&eacute;veloppeurs francophones</a> - <span class="l">http://pbnaigeon.developpez.com/tutoriel/PHP/apostrophe-guillemet/</span><br /><span class="n">un autre article sur l'ioptimisation php (Tags: php programming)</span><br /><br />
+<a href="http://calebegg.com/grad/" class="d">Gradient generator</a> - <span class="l">http://calebegg.com/grad/</span><br /><span class="n"> (Tags: tools)</span><br /><br />
+<a href="http://infoagogo.free.fr/" class="d">Info &agrave; gogo | La programmation pour les d&eacute;butants</a> - <span class="l">http://infoagogo.free.fr/</span><br /><span class="n">un site int&eacute;ressant (Tags: programming)</span><br /><br />
+<a href="http://www.tux-life.com/" class="d">Tux-Life - Élever votre Tux !</a> - <span class="l">http://www.tux-life.com/</span><br /><span class="n"> (Tags: fun)</span><br /><br />
+<a href="http://www.offthewrist.com/index.jsp?id=ff" class="d">OFF THE WRIST - Free Games and online toys</a> - <span class="l">http://www.offthewrist.com/index.jsp?id=ff</span><br /><span class="n">un jeu qui consiste &agrave; taper l&amp;#39;alphabet le plus rapidement. (Tags: fun)</span><br /><br />
+<a href="http://wapedia.mobi/" class="d">Mobile Encyclopedia</a> - <span class="l">http://wapedia.mobi/</span><br /><span class="n">une encycolp&eacute;die pour lire les articles de wikip&eacute;dia sur portable ou pda. Il y a un problème au niveau de l&amp;#39;encodage (d&eacute;clar&eacute; en utf-8 au lieu de iso) (Tags: free site)</span><br /><br />
+<a href="http://extensions.geckozone.org/ColorZilla" class="d">ColorZilla - Geckozone - Extensions en français pour Mozilla, Firefox, Thunderbird et Nvu</a> - <span class="l">http://extensions.geckozone.org/ColorZilla</span><br /><span class="n">une extension pour utiliser des palettes de couleur, entre (beaucoup) d'autres. (Tags: firefox_extension)</span><br /><br />
+<a href="http://www.frekenceflash.com/index.php?page=divers" class="d">Fr&eacute;kence Flash Xtreme - Le monde de l'inconscient - Tous les meilleurs jeux et animations du moment sont sur Fr&eacute;kence Flash Xtreme</a> - <span class="l">http://www.frekenceflash.com/index.php?page=divers</span><br /><span class="n">une quantit&eacute; d'images qui parodient "Luc, je suis ton père". (Tags: fun)</span><br /><br />
+<a href="http://dl.free.fr/" class="d">Free - Envoyez vos documents</a> - <span class="l">http://dl.free.fr/</span><br /><span class="n">un service de stockage en ligne (Tags: internet tools)</span><br /><br />
+<a href="http://www.netalya.com/" class="d">Portail d'informations sur les Nouvelles Technologies et Internet : Cours, Dossiers, Livres, Ressources gratuites, offres d'emploi...</a> - <span class="l">http://www.netalya.com/</span><br /><span class="n"> (Tags: system:unfiled)</span><br /><br />
+<a href="http://www.webyus.com/" class="d">w e b y u s . c o m</a> - <span class="l">http://www.webyus.com/</span><br /><span class="n">un service pour surfer anonymement sur internet. (Tags: web tools)</span><br /><br />
+<a href="http://www.kessels.com/JkDefrag/" class="d">JkDefrag v3.5</a> - <span class="l">http://www.kessels.com/JkDefrag/</span><br /><span class="n">un logiciel de d&eacute;fragmentation libre (Tags: tools free)</span><br /><br />
+<a href="http://projet.unix.free.fr/" class="d">Projet Unix/Linux</a> - <span class="l">http://projet.unix.free.fr/</span><br /><span class="n">un site sur l'histoire de linux (Tags: linux site)</span><br /><br />
+<a href="http://userbarscity.armatronic.com/" class="d">UserbarsCity</a> - <span class="l">http://userbarscity.armatronic.com/</span><br /><span class="n"> (Tags: graphics)</span><br /><br />
+<a href="http://www.spreadfirefox.com/?q=affiliates/homepage" class="d">affiliates homepage | Spread Firefox</a> - <span class="l">http://www.spreadfirefox.com/?q=affiliates/homepage</span><br /><span class="n">quelques logos firefox (Tags: firefox graphics)</span><br /><br />
+<a href="http://www.vie-privee.org/" class="d">F&eacute;d&eacute;ration Informatique et Libert&eacute;s</a> - <span class="l">http://www.vie-privee.org/</span><br /><span class="n"> (Tags: system:unfiled)</span><br /><br />
+<a href="http://www.info-graphistes.com/" class="d">Info-Graphistes.com</a> - <span class="l">http://www.info-graphistes.com/</span><br /><span class="n"> (Tags: tutoriel graphics)</span><br /><br />
+<a href="http://tutmarks.com/" class="d">TUTMarks - didacticiels, guides et tutoriaux sur internet</a> - <span class="l">http://tutmarks.com/</span><br /><span class="n"> (Tags: tutoriel)</span><br /><br />
+<a href="http://freewares-tutos.blogspot.com/" class="d">Freewares &amp; Tutos</a> - <span class="l">http://freewares-tutos.blogspot.com/</span><br /><span class="n">un blog ou sont r&eacute;f&eacute;renc&eacute;s plusieurs tutoriels de logiciels gratuits/open-source (Tags: logiciels tutoriel)</span><br /><br />
+<a href="http://classes.scriptsphp.org/" class="d">Classes.ScriptsPHP.org - Ressources PHP</a> - <span class="l">http://classes.scriptsphp.org/</span><br /><span class="n"> (Tags: php programming)</span><br /><br />
+<a href="http://www.commentcamarche.net/forum/affich-2304797-fai-saisir-le-juge-qd-on-est-dans-son-droit" class="d">FAI:saisir le juge qd on est dans son droit!</a> - <span class="l">http://www.commentcamarche.net/forum/affich-2304797-fai-saisir-le-juge-qd-on-est-dans-son-droit</span><br /><span class="n">une histoire qui finit bien (Tags: activism loi)</span><br /><br />
+<a href="http://giminik.developpez.com/xhtml/" class="d">Outil XHTML 1.1 Hi&eacute;rarchie - La balise html, ses attributs, ses &eacute;v&eacute;nements, son utilit&eacute; et sa syntaxe.</a> - <span class="l">http://giminik.developpez.com/xhtml/</span><br /><span class="n"> (Tags: xhtml)</span><br /><br />
+<a href="http://www.guidelinux.org/" class="d">GuideLinux.Org</a> - <span class="l">http://www.guidelinux.org/</span><br /><span class="n"> (Tags: linux site)</span><br /><br />
+<a href="http://www.cyber-protect.fr/" class="d">Cyber-Protect.Fr - Votre Protection Informatique - Protection de la vie priv&eacute;e</a> - <span class="l">http://www.cyber-protect.fr/</span><br /><span class="n"> (Tags: securite)</span><br /><br />
+<a href="http://www.vulgarisation-informatique.com/failles-php.php" class="d">Failles PHP &agrave; &eacute;viter</a> - <span class="l">http://www.vulgarisation-informatique.com/failles-php.php</span><br /><span class="n"> (Tags: securite php)</span><br /><br />
+<a href="http://www.glossaire.be/glossaire_abreviation_x_anglais_francais.htm" class="d">ORDINATEUR = glossaire bilingue (A/F) : ABREVIATION informatique WXYZ (lexique, traduction)</a> - <span class="l">http://www.glossaire.be/glossaire_abreviation_x_anglais_francais.htm</span><br /><span class="n">une liste d'abr&eacute;viations (Tags: liste)</span><br /><br />
+<a href="http://tinymce.moxiecode.com/" class="d">TinyMCE Javascript Content Editor by Moxiecode Systems AB</a> - <span class="l">http://tinymce.moxiecode.com/</span><br /><span class="n">un &eacute;diteur html (Tags: system:unfiled)</span><br /><br />
+<a href="http://www.mono-1.com/monoface/main.html" class="d">monoface</a> - <span class="l">http://www.mono-1.com/monoface/main.html</span><br /><span class="n">marrant. trouv&eacute; sur htp://del.icio.us/sebsauvage/ (Tags: fun)</span><br /><br />
+<a href="http://video.google.fr/videoplay?docid=4748185074137523658" class="d">Installation de Fedora - Google Video</a> - <span class="l">http://video.google.fr/videoplay?docid=4748185074137523658</span><br /><span class="n">une vid&eacute;o qui explique comment installer cette distribution (Tags: linux)</span><br /><br />
+<a href="http://www.dedibox.fr/" class="d">Dedibox - Votre serveur d&eacute;di&eacute; pour 29,99 Euros / mois trafic illimit&eacute;</a> - <span class="l">http://www.dedibox.fr/</span><br /><span class="n"> (Tags: serveur)</span><br /><br />
+<a href="http://www.kimsufi.com/" class="d">KIMSUFI, votre serveur d&eacute;di&eacute;, tout simplement suffisant.</a> - <span class="l">http://www.kimsufi.com/</span><br /><span class="n"> (Tags: serveur)</span><br /><br />
+<a href="http://aeris.11vm-serv.net/cours/internet/histoire.html" class="d">AERIS - Cours - Comprendre Internet - Historique</a> - <span class="l">http://aeris.11vm-serv.net/cours/internet/histoire.html</span><br /><span class="n">une histoire d'internet (Tags: article)</span><br /><br />
+<a href="http://www.uzine.net/article2143.html" class="d">[uZine 3] Le HTML dans le potage</a> - <span class="l">http://www.uzine.net/article2143.html</span><br /><span class="n"> (Tags: system:unfiled)</span><br /><br />
+<a href="http://sebastienguillon.com/traduction/types-de-media-xhtml#summary" class="d">Les types de M&eacute;dia XHTML</a> - <span class="l">http://sebastienguillon.com/traduction/types-de-media-xhtml#summary</span><br /><span class="n"> (Tags: system:unfiled)</span><br /><br />
+<a href="http://www.geckozone.org/forum/viewtopic.php?t=38659" class="d">Geckozone :: Voir le sujet - Du XHTML 1.1 envoy&eacute; au format text/html</a> - <span class="l">http://www.geckozone.org/forum/viewtopic.php?t=38659</span><br /><span class="n">des indications int&eacute;ressants (Tags: xhtml valide)</span><br /><br />
+<a href="http://www.w3.org/2003/03/Translations/byLanguage?language=fr" class="d">French Translations of W3C Documents</a> - <span class="l">http://www.w3.org/2003/03/Translations/byLanguage?language=fr</span><br /><span class="n"> (Tags: w3c)</span><br /><br />
+<a href="http://video.google.com/videoplay?docid=6570869723386259299&amp;q=mentos+diet" class="d">Mentos diet coke rocket - Google Video</a> - <span class="l">http://video.google.com/videoplay?docid=6570869723386259299&amp;q=mentos+diet</span><br /><span class="n">une autre vid&eacute;o de m&eacute;lange coca+mentos. C'est quand m&ecirc;me parfois dangeureux, vaut mieux pas s'en inspirer... (Tags: fun)</span><br /><br />
+<a href="http://fr.ekopedia.org/Accueil" class="d">Accueil - Ekopedia</a> - <span class="l">http://fr.ekopedia.org/Accueil</span><br /><span class="n">"Ekopedia est un projet d'encyclop&eacute;die pratique traitant des techniques alternatives de vie. L'encyclop&eacute;die est gratuite, &eacute;crite coop&eacute;rativement et son contenu est librement r&eacute;utilisable." (Tags: libre free)</span><br /><br />
+<a href="http://browsers.evolt.org/" class="d">evolt.org - Browser Archive</a> - <span class="l">http://browsers.evolt.org/</span><br /><span class="n">une liste de navigateurs (Tags: browser)</span><br /><br />
+<a href="http://code.google.com/webstats/index.html" class="d">Google Code: Web Authoring Statistics</a> - <span class="l">http://code.google.com/webstats/index.html</span><br /><span class="n">les statistiques d'un milliard de pages index&eacute;es par google. (Tags: system:unfiled)</span><br /><br />
+<a href="http://homepage.mac.com/rcrews/software/validator/" class="d">Validator</a> - <span class="l">http://homepage.mac.com/rcrews/software/validator/</span><br /><span class="n">un autre validateur html/xhtml/xml (Tags: valide)</span><br /><br />
+<a href="http://www.hixie.ch/advocacy/xhtml.fr/#p7" class="d">Servir du XHTML en tant que text/html jug&eacute; n&eacute;faste</a> - <span class="l">http://www.hixie.ch/advocacy/xhtml.fr/#p7</span><br /><span class="n">Un article int&eacute;ressant, &agrave; lire. (Tags: xhtml valide)</span><br /><br />
+<a href="http://www.hebserv.net/" class="d">HebServ -- H&eacute;bergement gratuit - Accueil</a> - <span class="l">http://www.hebserv.net/</span><br /><span class="n"> (Tags: system:unfiled)</span><br /><br />
+<a href="http://www.rhien.org/?wiki=Accueil" class="d">RHIEN - R&eacute;seau d'H&eacute;bergeurs Ind&eacute;pendants et ENgag&eacute;s : Accueil</a> - <span class="l">http://www.rhien.org/?wiki=Accueil</span><br /><span class="n">un site d'h&eacute;bergeurs et de services d'h&eacute;bergement &agrave; but non lucratif (Tags: free)</span><br /><br />
+<a href="http://expreg.com/rex_article.php?art=grossir" class="d">REGEX - REGEXP - Expressions r&eacute;gulières en PHP - Les article d'expreg - Les billets de Fred</a> - <span class="l">http://expreg.com/rex_article.php?art=grossir</span><br /><span class="n">un autre article sur la valeur d'un octet (1 Ko=1000 octets, 1Kio=1024 octets) (Tags: article)</span><br /><br />
+<a href="http://www.funxhtml.com/CH2/corriges_ch2.txt" class="d">http://www.funxhtml.com/CH2/corriges_ch2.txt</a> - <span class="l">http://www.funxhtml.com/CH2/corriges_ch2.txt</span><br /><span class="n">un fichier texte sur le javascript avec es m&eacute;thodes qui s'appliquent au xhtml 1.1 (Tags: javascript)</span><br /><br />
+<a href="http://tastalian.free.fr/" class="d">Studios Tastalian :: Cours de Programmation :: Jeux vid&eacute;o et applications libres</a> - <span class="l">http://tastalian.free.fr/</span><br /><span class="n">un site sur la programmation et le libre (Tags: programming libre)</span><br /><br />
+<a href="http://www.logicielmac.com/logiciel/section-Editeur%20de%20Site.html" class="d">LogicielMac.com - Section - Editeur de Site</a> - <span class="l">http://www.logicielmac.com/logiciel/section-Editeur%20de%20Site.html</span><br /><span class="n">plusieurs logiciels pour webmaster sous MAC (Tags: webmaster)</span><br /><br />
+<a href="http://fr2.php.net/mysql_unbuffered_query" class="d">PHP: mysql_unbuffered_query - Manual</a> - <span class="l">http://fr2.php.net/mysql_unbuffered_query</span><br /><span class="n">"Ex&eacute;cute une requ&ecirc;te SQL sans mobiliser les r&eacute;sultats MySQL". Donc &agrave; utiliser pour l'insertion ou la modification de donn&eacute;es qu'on ne r&eacute;cupère pas (Tags: sql optimisation programming)</span><br /><br />
+<a href="http://www.wannabrowser.com/" class="d">wannaBrowser | http user agent spoofing</a> - <span class="l">http://www.wannabrowser.com/</span><br /><span class="n">un service qui permet de se faire passer pour un autre navigateur que le sien. (Tags: internet tools)</span><br /><br />
+<a href="http://www.spam-report.net/fr/" class="d">SpamReport pour FireFox : Reporter un Spam dans l'index de Google</a> - <span class="l">http://www.spam-report.net/fr/</span><br /><span class="n">Extension  qui permet de d&eacute;noncer un site  anormalement positionn&eacute; dans Google, grace &agrave; diverses techniques (par exemple : le cloaking, qui permet d'afficher une page diff&eacute;rent aux robots des moteurs de recherche : http://en.wikipedia.org/Cloaking ) (Tags: activism firefox_extension)</span><br /><br />
+<a href="http://www.pcmag.com/article2/0,1895,1558903,00.asp" class="d">IconEdit32: Download It Here</a> - <span class="l">http://www.pcmag.com/article2/0,1895,1558903,00.asp</span><br /><span class="n">un autre lien pour t&eacute;l&eacute;charger IconEdit32. Il faut s'enregistrer, mais on peut utiliser BugMeNot. (Tags: graphics icon)</span><br /><br />
+<a href="http://www.infini-fr.com/" class="d">Infini : l'encyclop&eacute;die de l'informatique et de la programmation</a> - <span class="l">http://www.infini-fr.com/</span><br /><span class="n"> (Tags: system:unfiled)</span><br /><br />
+<a href="http://www.expreg.com/expreg_article.php?art=timestamp" class="d">REGEX - REGEXP - Expressions r&eacute;gulières en PHP - Les articles d'expreg.com</a> - <span class="l">http://www.expreg.com/expreg_article.php?art=timestamp</span><br /><span class="n">un article int&eacute;ressant sur les facons d'utiliser les dates et le temps dans les requ&ecirc;tes MySQL (Tags: php sql programming)</span><br /><br />
+<a href="http://www.emakers.info/radio/" class="d">.: Radio Live :. - La musique continuellement libre !</a> - <span class="l">http://www.emakers.info/radio/</span><br /><span class="n">une radio de musique libre (Tags: free)</span><br /><br />
+<a href="http://www.igloo-fr.org/" class="d">iGloo-fr.org - L'autre façon de communiquer</a> - <span class="l">http://www.igloo-fr.org/</span><br /><span class="n">un système de blogs (Tags: blog site)</span><br /><br />
+<a href="http://tools.wikimedia.de/~essjay/nqt.php" class="d">Network Query Tool</a> - <span class="l">http://tools.wikimedia.de/~essjay/nqt.php</span><br /><span class="n">et un autre (Tags: internet tools)</span><br /><br />
+<a href="http://www.dshield.org/ipinfo.php" class="d">DShield - IP Info</a> - <span class="l">http://www.dshield.org/ipinfo.php</span><br /><span class="n">un autre service qui permet d'obtenir des infos &agrave; propos d'une adresse IP. (Tags: internet tools)</span><br /><br />
+<a href="http://www.ripe.net/fcgi-bin/whois" class="d">Query the RIPE Database</a> - <span class="l">http://www.ripe.net/fcgi-bin/whois</span><br /><span class="n">ce site permet d'avoir des informations (beaucoup d'informations) sur une adresse IP. (Tags: internet tools)</span><br /><br />
+<a href="http://fsffrance.org/gpl/gpl-fr.fr.html" class="d">FSF France - Licence Publique G&eacute;n&eacute;rale GNU</a> - <span class="l">http://fsffrance.org/gpl/gpl-fr.fr.html</span><br /><span class="n"> (Tags: system:unfiled)</span><br /><br />
+<a href="http://www.siteduzero.com/tuto-3-13921-1-utiliser-firefox-sous-linux-et-windows-en-meme-temps.html" class="d">Utiliser Firefox sous Linux et Windows en m&ecirc;me temps - Le Site du Z&eacute;ro</a> - <span class="l">http://www.siteduzero.com/tuto-3-13921-1-utiliser-firefox-sous-linux-et-windows-en-meme-temps.html</span><br /><span class="n">pratique. ca permet d'avoir le m&ecirc;me profil avec firefox sous linux et windows (Tags: system:unfiled)</span><br /><br />
+<a href="http://www.dogpile.com/" class="d">Dogpile Web Search Home Page</a> - <span class="l">http://www.dogpile.com/</span><br /><span class="n">un moteur de recherche qui semble performant (Tags: tools internet)</span><br /><br />
+<a href="http://ubuntu.wordpress.com/" class="d">Ubuntu Blog</a> - <span class="l">http://ubuntu.wordpress.com/</span><br /><span class="n">un blog (Tags: blog)</span><br /><br />
+<a href="http://www.vladstudio.com/wallpapers/" class="d">Wallpapers Gallery | Vladstudio.com - free desktop wallpapers, high resolution, widescreen and dual-monitor images, web design and development</a> - <span class="l">http://www.vladstudio.com/wallpapers/</span><br /><span class="n">d'autres fonds d'&eacute;cran (Tags: graphics)</span><br /><br />
+<a href="http://www.smashingmagazine.com/2006/12/07/selected-wallpapers-for-desktop-and-web-design/" class="d">Selected Wallpapers: For Desktop &amp; Web-Design | Smashing Magazine</a> - <span class="l">http://www.smashingmagazine.com/2006/12/07/selected-wallpapers-for-desktop-and-web-design/</span><br /><span class="n">des fonds d'&eacute;cran. pour firefox : http://3couleurs.blogspot.com/2005/01/wallpapers-firefox.html (Tags: graphics)</span><br /><br />
+<a href="http://www.phpdebutant.org/article49.php" class="d">Bienvenue sur PHP D&eacute;butant</a> - <span class="l">http://www.phpdebutant.org/article49.php</span><br /><span class="n">pour faire des statistiques, mais ici on utilise des sessions. (Tags: php programmin)</span><br /><br />
+<a href="http://www.un-programmeur-php.ca/articles/ajax.php" class="d">Articles - Qu'est-ce qu'AJAX et comment l'utiliser</a> - <span class="l">http://www.un-programmeur-php.ca/articles/ajax.php</span><br /><span class="n">un autre tutoriel sur l'Ajax (Tags: ajax javascript programming)</span><br /><br />
+<a href="http://www.lephpfacile.com/howto/index.php?p=8" class="d">:: Le PHP Facile :: Comment faire ? - Un script de statistiques</a> - <span class="l">http://www.lephpfacile.com/howto/index.php?p=8</span><br /><span class="n">un moyen simple, sans cookie. L'adresse ip est cependant utilis&eacute;e mais on peut faire un sha1 ou md5. (Tags: php programming)</span><br /><br />
+<a href="http://www.robots.darkseoteam.com/meta-robots.php" class="d">La balise meta robots</a> - <span class="l">http://www.robots.darkseoteam.com/meta-robots.php</span><br /><span class="n">plusieurs infos sur le fonctionnement de cette balise et des robots. (Tags: web)</span><br /><br />
+<a href="http://www.ephemail.net/" class="d">Adresse email jetable Ephemail. antispam ephemere temporaire jetable gratuite</a> - <span class="l">http://www.ephemail.net/</span><br /><span class="n"> (Tags: tools)</span><br /><br />
+<a href="http://www.stylexp.net/" class="d">stylexp.net</a> - <span class="l">http://www.stylexp.net/</span><br /><span class="n"> (Tags: system:unfiled)</span><br /><br />
+<a href="http://deathball.net/notpron/" class="d">Notpron - The Hardest Riddle Available on the Internet</a> - <span class="l">http://deathball.net/notpron/</span><br /><span class="n">un jeu ou vous devez chercher des indices pour r&eacute;soudre des &eacute;nigmes. (Tags: fun)</span><br /><br />
+<a href="http://perso.orange.fr/oncle.dom/humour/pere_noel/pere_noel.htm" class="d">Le père No&#235;l</a> - <span class="l">http://perso.orange.fr/oncle.dom/humour/pere_noel/pere_noel.htm</span><br /><span class="n">trouv&eacute; via http://quentinc.net/forum/topic130-noyeux-jo%EBl/ (Tags: fun)</span><br /><br />
+<a href="http://developpeur.journaldunet.com/tutoriel/dht/040127_changer_curseur.shtml" class="d">CSS : Modifier l'&eacute;tat du curseur - JDNet D&eacute;veloppeurs</a> - <span class="l">http://developpeur.journaldunet.com/tutoriel/dht/040127_changer_curseur.shtml</span><br /><span class="n">les curseurs CSS possibles. (Tags: css)</span><br /><br />
+<a href="http://www.clamav.net/" class="d">ClamAVâ„¢: Project News</a> - <span class="l">http://www.clamav.net/</span><br /><span class="n">un antivirus open-source (Tags: open-source securite antivirus)</span><br /><br />
+<a href="http://www.drivl.com/posts/view/494" class="d">Drivl.com | What code DOESN'T do in real life (that it does in the movies)</a> - <span class="l">http://www.drivl.com/posts/view/494</span><br /><span class="n"> (Tags: fun)</span><br /><br />
+<a href="http://www.netgear-forum.com/forum/index.php?showtopic=31299" class="d">Installation de ndiswrapper sous Mandrake/Mandriva - NETGEAR Forum</a> - <span class="l">http://www.netgear-forum.com/forum/index.php?showtopic=31299</span><br /><span class="n">pour installer une carte r&eacute;seau negear sous linux (Tags: tools linux)</span><br /><br />
+<a href="http://www.htmlvalidator.com/htmlval/screenshots.html" class="d">CSE HTML Validator Pro Screen Shots</a> - <span class="l">http://www.htmlvalidator.com/htmlval/screenshots.html</span><br /><span class="n">un logiciel pour valider du html en local. (Tags: valide)</span><br /><br />
+<a href="http://www.tutoriaux-excalibur.com/starforce-3.htm" class="d">StarForce&amp;Starforce 3 comment les contourner</a> - <span class="l">http://www.tutoriaux-excalibur.com/starforce-3.htm</span><br /><span class="n">&agrave; lire : http://sylvain.sab.free.fr/cestquoi/starforce.php (Tags: tools securite activism)</span><br /><br />
+<a href="http://www.jeunes-webmasters.com/" class="d">Scripts PHP pour Webmasters - JeunesWebmasters.com</a> - <span class="l">http://www.jeunes-webmasters.com/</span><br /><span class="n">a voir (Tags: php programming)</span><br /><br />
+<a href="http://www.scriptet.com/simple-map-fr.html" class="d">Simple site map generator in Xml, Html or text file format</a> - <span class="l">http://www.scriptet.com/simple-map-fr.html</span><br /><span class="n">un logiciel pour faire un plan de site web (Tags: tools)</span><br /><br />
+<a href="http://www.pluxml.org/" class="d">Pluxml.org - Blog ou Cms &agrave; l'Xml</a> - <span class="l">http://www.pluxml.org/</span><br /><span class="n">"Aussi l&eacute;ger qu'une plume et motoris&eacute; &agrave; l'Xml" (Tags: blog)</span><br /><br />
+<a href="http://www.project-yoshi.net/" class="d">Elevez votre Yoshi en ligne sur Project-Yoshi.net</a> - <span class="l">http://www.project-yoshi.net/</span><br /><span class="n"> (Tags: fun game)</span><br /><br />
+<a href="http://extensions.geckozone.org/Tempomail" class="d">Tempomail</a> - <span class="l">http://extensions.geckozone.org/Tempomail</span><br /><span class="n">une extension pour firefox qui permet d'avoir des adresses e mail temporaires. voir aussi "Get jetable mail" (Tags: firefox_enxtension)</span><br /><br />
+<a href="http://qwix.media-box.net/" class="d">BLOGIX, le blog de J&eacute;rôme aka qwix</a> - <span class="l">http://qwix.media-box.net/</span><br /><span class="n"> (Tags: blog)</span><br /><br />
+<a href="http://www.tlcc.com/admin/tips.nsf/ibmtipsview/783263610C515C4D8525716800533816" class="d">TLCC Developer tip for WebSphere, Notes and Domino - Create Better Looking Tables for Web Browsers and Internet Mail</a> - <span class="l">http://www.tlcc.com/admin/tips.nsf/ibmtipsview/783263610C515C4D8525716800533816</span><br /><span class="n"> (Tags: system:unfiled)</span><br /><br />
+<a href="http://149.222.51.71/ilias/docs/html/layout_inc.html" class="d">ILIAS DOC</a> - <span class="l">http://149.222.51.71/ilias/docs/html/layout_inc.html</span><br /><span class="n"> (Tags: system:unfiled)</span><br /><br />
+<a href="http://www.generation-nt.com/astuces/lire/234/reinstaller-completement-le-protocole-tcp-ip/" class="d">R&eacute;installer complètement le protocole TCP/IP : Trucs et Astuces Windows XP 2000 2003 NT</a> - <span class="l">http://www.generation-nt.com/astuces/lire/234/reinstaller-completement-le-protocole-tcp-ip/</span><br /><span class="n"> (Tags: system:unfiled)</span><br /><br />
+<a href="http://www.quirksmode.org/" class="d">QuirksMode - for all your browser quirks</a> - <span class="l">http://www.quirksmode.org/</span><br /><span class="n"> (Tags: css)</span><br /><br />
+<a href="http://browsers.evolt.org/?ie/32bit" class="d">evolt.org - Browser Archive</a> - <span class="l">http://browsers.evolt.org/?ie/32bit</span><br /><span class="n">hm. on peut t&eacute;l&eacute;charger les anciennes versions de IE, de la 1 &agrave; la 6. si vous aimez les virus, l'ins&eacute;curit&eacute; mais que vous d&eacute;testez ce qui est pratique c'est pour vous :D (Tags: browser activism)</span><br /><br />
+<a href="http://www-ipst.u-strasbg.fr/pat/program/javascript/" class="d">petit cours javascript P. TRAU</a> - <span class="l">http://www-ipst.u-strasbg.fr/pat/program/javascript/</span><br /><span class="n"> (Tags: javascript)</span><br /><br />
+<a href="http://mozinet.free.fr/moz/fcn/tester_deboguer.html" class="d">Mozinet - Utiliser Mozilla pour tester et d&eacute;boguer les sites Web - Henrik Gemal</a> - <span class="l">http://mozinet.free.fr/moz/fcn/tester_deboguer.html</span><br /><span class="n"> (Tags: tools programming)</span><br /><br />
+<a href="http://lepatron.tapor.ualberta.ca/" class="d">"Le Patron" - Aide &agrave; la r&eacute;daction</a> - <span class="l">http://lepatron.tapor.ualberta.ca/</span><br /><span class="n">un correcteur orthographique (Tags: system:unfiled)</span><br /><br />
+<a href="http://www.la-grange.net/accessibilite/table_of_contents.html" class="d">Plongez dans l'accessibilit&eacute; : Sommaire</a> - <span class="l">http://www.la-grange.net/accessibilite/table_of_contents.html</span><br /><span class="n">complet (Tags: accessible)</span><br /><br />
+<a href="http://www.wireimage.com/" class="d">WireImage.com – The Largest Entertainment Photo &amp; Video Archive</a> - <span class="l">http://www.wireimage.com/</span><br /><span class="n">un service pour stocker des photos et images. (Tags: tolls internet graphics)</span><br /><br />
+<a href="http://blueballfixed.ytmnd.com/" class="d">Blue Ball Machine (Classic GIF Returned)</a> - <span class="l">http://blueballfixed.ytmnd.com/</span><br /><span class="n">un gif anim&eacute; rigolo. (Tags: fun)</span><br /><br />
+<a href="http://www.ruby-doc.org/docs/beginner-fr/xhtml/index.html" class="d">Apprenez Ruby</a> - <span class="l">http://www.ruby-doc.org/docs/beginner-fr/xhtml/index.html</span><br /><span class="n"> (Tags: ruby programming)</span><br /><br />
+<a href="http://formats-ouverts.org/blog/2006/12/07/1029-france24-halde-et-telethon-pas-de-lien-hypertexte#content" class="d">France24, Halde et T&eacute;l&eacute;thon : pas de lien hypertexte ! - Pour les formats ouverts !</a> - <span class="l">http://formats-ouverts.org/blog/2006/12/07/1029-france24-halde-et-telethon-pas-de-lien-hypertexte#content</span><br /><span class="n">"l'interdiction d'&eacute;tablir des liens hypertextes sans autorisation". bein voyons. il y en a qui n'ont pas compris le principe d'internet, &agrave; savoir l'&eacute;change. (Tags: system:unfiled)</span><br /><br />
+<a href="http://www.aful.org/gdt/interop/" class="d">AFUL : Groupe de travail sur l'interop&eacute;rabilit&eacute;</a> - <span class="l">http://www.aful.org/gdt/interop/</span><br /><span class="n"> (Tags: accessible)</span><br /><br />
+<a href="http://www.dallaway.com/sloppy/" class="d">Sloppy - the slow proxy for dial-up modem speed simulation (slow down)</a> - <span class="l">http://www.dallaway.com/sloppy/</span><br /><span class="n">un logiciel qui permet de simuler un d&eacute;bit de connexion inf&eacute;rieur &agrave; sa connexion r&eacute;elle (trouv&eacute; sur http://del.icio.us/sebsauvage/ ) (Tags: tools internet)</span><br /><br />
+<a href="http://dev.mysql.com/doc/refman/5.0/fr/mysql-optimization.html" class="d">MySQL AB :: Manuel de r&eacute;f&eacute;rence MySQL 5.0 :: 7 Optimisation de MySQL</a> - <span class="l">http://dev.mysql.com/doc/refman/5.0/fr/mysql-optimization.html</span><br /><span class="n"> (Tags: bdd mysql)</span><br /><br />
+<a href="http://www.nosoftwarepatents.com/" class="d">No Software Patents!</a> - <span class="l">http://www.nosoftwarepatents.com/</span><br /><span class="n">no aux brevets logiciels. (http://www.nosoftwarepatents.com/fr/m/intro/index.html ) (Tags: activism)</span><br /><br />
+<a href="http://u-m-p.fr/" class="d">RESO - ANTI SARKO - le site militant contre Nicolas Sarkozy</a> - <span class="l">http://u-m-p.fr/</span><br /><span class="n"> (Tags: activism)</span><br /><br />
+<a href="http://www.labanlieuesexprime.org/article.php3?id_article=1492" class="d">Ton choix pour 2007 c’est S&eacute;golène ou Sarkozy, vive la d&eacute;mocratie. C’est ça l’avenir de la France ? ... (LBS)</a> - <span class="l">http://www.labanlieuesexprime.org/article.php3?id_article=1492</span><br /><span class="n"> (Tags: system:unfiled)</span><br /><br />
+<a href="http://www.raslfront.org/" class="d">Ras l'front - accueil</a> - <span class="l">http://www.raslfront.org/</span><br /><span class="n">Un site contre le racisme. A propos de Sarkozy : "le voil&agrave; pris d'une fr&eacute;n&eacute;sie guerrière &agrave; l'encontre des sans-papiers, de leurs enfants , qu'il expulse &agrave; tour de bras." (Tags: activism)</span><br /><br />
+<a href="http://www.ljouanneau.com/blog/2004/04/06/262-la-section-cdata-en-xml" class="d">La section CDATA en Xml - jy[B]log</a> - <span class="l">http://www.ljouanneau.com/blog/2004/04/06/262-la-section-cdata-en-xml</span><br /><span class="n">comment faire du javascript avec application/xhtml+xml. a garder PRECIEUSEMENT !! (Tags: javascript xhtml standards programming)</span><br /><br />
+<a href="http://quentinc.net/" class="d">Accueil -- Le Coin Web de QuentinC</a> - <span class="l">http://quentinc.net/</span><br /><span class="n">un site int&eacute;ressant (Tags: site)</span><br /><br />
+<a href="http://www.opera.com/docs/specs/" class="d">Web Specifications Supported in Opera 9 - CSS</a> - <span class="l">http://www.opera.com/docs/specs/</span><br /><span class="n"> (Tags: browser)</span><br /><br />
+<a href="http://bob.developpez.com/phpxslt/" class="d">XML/XSL avec PHP - Club d'entraide des d&eacute;veloppeurs francophones</a> - <span class="l">http://bob.developpez.com/phpxslt/</span><br /><span class="n">pour parser du xml avec php (Tags: php xml programming)</span><br /><br />
+<a href="http://pecl.php.net/package/bcompiler" class="d">PECL :: Package :: Bcompiler</a> - <span class="l">http://pecl.php.net/package/bcompiler</span><br /><span class="n">le php peut &ecirc;tre compil&eacute; (Tags: php programming tools)</span><br /><br />
+<a href="http://www.naholyr.com/home/index.php" class="d">Naholyr Devnotes - Accueil</a> - <span class="l">http://www.naholyr.com/home/index.php</span><br /><span class="n">Un site int&eacute;r&eacute;ssant (Tags: blog)</span><br /><br />
+<a href="http://www.lumadis.be/regex/index.php" class="d">Regex - Expressions r&eacute;gulières PCRE</a> - <span class="l">http://www.lumadis.be/regex/index.php</span><br /><span class="n"> (Tags: php programming)</span><br /><br />
+<a href="http://www.weebls-stuff.com/games/Rock+Scissors+Paper+Multiplayer/" class="d">Weebls Stuff - Rock Scissors Paper Multiplayer</a> - <span class="l">http://www.weebls-stuff.com/games/Rock+Scissors+Paper+Multiplayer/</span><br /><span class="n">pour jouer au chi fu mi sur internet !! (Tags: fun)</span><br /><br />
+<a href="http://www.brandspankingnew.net/archive/2006/12/hohoho.html" class="d">HoHoHo! : Design : Brand Spanking New</a> - <span class="l">http://www.brandspankingnew.net/archive/2006/12/hohoho.html</span><br /><span class="n">des icones (Tags: graphics icons)</span><br /><br />
+<a href="http://onsmalltalk.com/programming/my-personal-pet-peeves-i-see-in-other-peoples-code/" class="d">My Personal Pet Peeves I See in Other People’s Code</a> - <span class="l">http://onsmalltalk.com/programming/my-personal-pet-peeves-i-see-in-other-peoples-code/</span><br /><span class="n">trouv&eacute; sur les liens de sebsauvage(http://del.icio.us/sebsauvage/ ) (Tags: programming)</span><br /><br />
+<a href="http://secretgeek.net/GradientMaker.asp" class="d">secretGeek's Gradient Maker</a> - <span class="l">http://secretgeek.net/GradientMaker.asp</span><br /><span class="n">un outil pour faire des gradients (Tags: graphics tools)</span><br /><br />
+<a href="http://www.dbpoweramp.com/shutdown.htm" class="d">dBpowerAMP</a> - <span class="l">http://www.dbpoweramp.com/shutdown.htm</span><br /><span class="n">un programme pour arr&ecirc;ter windows plus rapidement (Tags: tools)</span><br /><br />
+<a href="http://www.w3.org/Style/CSS/current-work" class="d">CSS: Under Construction</a> - <span class="l">http://www.w3.org/Style/CSS/current-work</span><br /><span class="n">de la documentation sur les CSS (Tags: css)</span><br /><br />
+<a href="http://www.chez.com/xml/" class="d">XML Francophone</a> - <span class="l">http://www.chez.com/xml/</span><br /><span class="n">un site pour apprendre le xml et ses d&eacute;riv&eacute;s (Tags: xml)</span><br /><br />
+<a href="http://www.siteduzero.com/forum-83-4711-p1-tutoriaux.html" class="d">Tutoriaux - Le Site du Z&eacute;ro</a> - <span class="l">http://www.siteduzero.com/forum-83-4711-p1-tutoriaux.html</span><br /><span class="n">une liste de sites sur html, php, flash, javascript, etc (Tags: xhtml css php javascript flash xml programming)</span><br /><br />
+<a href="http://schneegans.de/sv/" class="d">XML Schema Validator</a> - <span class="l">http://schneegans.de/sv/</span><br /><span class="n">un autre validateur (Tags: xhtml valide)</span><br /><br />
+<a href="http://www.cleancss.com/" class="d">Clean CSS - A Resource for Web Designers - Optmize and Format your CSS</a> - <span class="l">http://www.cleancss.com/</span><br /><span class="n">il y a la m&ecirc;me chose ici : http://www.cdburnerxp.se/cssparse/css_optimiser.php (Tags: css)</span><br /><br />
+<a href="http://wiki.media-box.net/documentation/css" class="d">documentation css - Ressources Mediabox - Wiki</a> - <span class="l">http://wiki.media-box.net/documentation/css</span><br /><span class="n"> (Tags: css)</span><br /><br />
+<a href="http://www.totoffe.net/" class="d">Le site de Totoffe</a> - <span class="l">http://www.totoffe.net/</span><br /><span class="n">int&eacute;ressant (Tags: system:unfiled)</span><br /><br />
+<a href="http://www.pouipouidesign.net/" class="d">Portail - pouipouidesign v.6 ... et pourquoi pas ? ©2006</a> - <span class="l">http://www.pouipouidesign.net/</span><br /><span class="n">un blog int&eacute;ressant (Tags: system:unfiled)</span><br /><br />
+<a href="http://www.stopie.com/" class="d">StopIE: Help stop Internet Explorer, the worlds most popular and worst internet browser - StopIE.com</a> - <span class="l">http://www.stopie.com/</span><br /><span class="n">un site contre IE (Tags: activism browser)</span><br /><br />
+<a href="http://pompage.net/pompe/separation/" class="d">POMPAGE - S&eacute;parer le comportement de la structure</a> - <span class="l">http://pompage.net/pompe/separation/</span><br /><span class="n">c'est &agrave; dire n'utiliser aucun attribut onevent dans le code html. (Tags: xhtml css valide)</span><br /><br />
+<a href="http://pompage.net/pompe/lirespec/" class="d">POMPAGE - Comment lire une sp&eacute;cification du W3C</a> - <span class="l">http://pompage.net/pompe/lirespec/</span><br /><span class="n">(les dtd) (Tags: system:unfiled)</span><br /><br />
+<a href="http://diabolhuile.free.fr/index.php" class="d">Diabolhuile.free.fr</a> - <span class="l">http://diabolhuile.free.fr/index.php</span><br /><span class="n">un site sur le diabolo, avec plusieurs figures (Tags: fun)</span><br /><br />
+<a href="http://pompage.net/pompe/sitestandard/" class="d">POMPAGE - Mon site Web est standard ! Et le vôtre ?</a> - <span class="l">http://pompage.net/pompe/sitestandard/</span><br /><span class="n"> (Tags: system:unfiled)</span><br /><br />
+<a href="http://www.oswd.org/" class="d">Open Source Web Design - Download free web design templates.</a> - <span class="l">http://www.oswd.org/</span><br /><span class="n"> (Tags: css)</span><br /><br />
+<a href="http://www.geneeweb.com/" class="d">GeneeWeb - le cr&eacute;ateur de site ! Cr&eacute;er son site est gratuit, facile et rapide avec GeneeWeb !</a> - <span class="l">http://www.geneeweb.com/</span><br /><span class="n"> (Tags: system:unfiled)</span><br /><br />
+<a href="http://www.toutjavascript.com/reference/reference.php?ref=RegExp&amp;parent=0" class="d">Objet : RegExp - R&eacute;f&eacute;rence Tout JavaScript.com</a> - <span class="l">http://www.toutjavascript.com/reference/reference.php?ref=RegExp&amp;parent=0</span><br /><span class="n"> (Tags: javascript)</span><br /><br />
+<a href="http://blog.alsacreations.com/2004/09/09/58-parents-et-enfants" class="d">Parents et enfants - Blog Alsacr&eacute;ations : XHTML, CSS et Standards web</a> - <span class="l">http://blog.alsacreations.com/2004/09/09/58-parents-et-enfants</span><br /><span class="n">pour savoir quel &eacute;l&eacute;ment peut contenir quels autres (Tags: xhtml)</span><br /><br />
+<a href="http://web-modules.net/#" class="d">Web-Modules >> Services pour Webmaster</a> - <span class="l">http://web-modules.net/#</span><br /><span class="n">plusieurs petits scripts int&eacute;r&eacute;ssants (Tags: webmaster)</span><br /><br />
+<a href="http://www.ultrairprod.info/tutoriaux-photoshop/index.php" class="d">Tutoriaux-Photoshop :: Tutoriaux Adobe Photoshop ::</a> - <span class="l">http://www.ultrairprod.info/tutoriaux-photoshop/index.php</span><br /><span class="n"> (Tags: graphics)</span><br /><br />
+<a href="http://www.siteduzero.com/tuto-3-11537-1-eviter-les-injections-sql.html" class="d">Eviter les injections SQL - Le Site du Z&eacute;ro</a> - <span class="l">http://www.siteduzero.com/tuto-3-11537-1-eviter-les-injections-sql.html</span><br /><span class="n"> (Tags: securite)</span><br /><br />
+<a href="http://video.google.com/videoplay?docid=5695044769427318137&amp;q=mentos+diet" class="d">The NEW EXTREME WAY To Do the Diet Coke Mentos Reaction Explosion - Google Video</a> - <span class="l">http://video.google.com/videoplay?docid=5695044769427318137&amp;q=mentos+diet</span><br /><span class="n">waow ! une sorte de mini fus&eacute;e avec des mentos et du coca.(voir aussi : http://www.siteduzero.com/forum-83-50236.html ) (Tags: fun)</span><br /><br />
+<a href="http://distrowatch.com/" class="d">DistroWatch.com: Put the fun back into computing. Use Linux, BSD.</a> - <span class="l">http://distrowatch.com/</span><br /><span class="n">pour t&eacute;l&eacute;charger des distributions linux (beaucoup de pub malheureusement) (Tags: linux)</span><br /><br />
+<a href="http://www.commentcamarche.net/forum/affich-1823800-m-sarkozy-nous-spamme" class="d">M. Sarkozy nous spamme ?</a> - <span class="l">http://www.commentcamarche.net/forum/affich-1823800-m-sarkozy-nous-spamme</span><br /><span class="n"> (Tags: activism)</span><br /><br />
+<a href="http://blog.aelor.net/" class="d">Ubuntu's Stories</a> - <span class="l">http://blog.aelor.net/</span><br /><span class="n">un blog int&eacute;ressant (trouv&eacute; sur les liens de sebsauvage) (Tags: blog)</span><br /><br />
+<a href="http://developpeur.journaldunet.com/imprimer/tutoriel/dht/051103-javascript-ajax-conseils.shtml" class="d">8 conseils pour le d&eacute;veloppement Ajax</a> - <span class="l">http://developpeur.journaldunet.com/imprimer/tutoriel/dht/051103-javascript-ajax-conseils.shtml</span><br /><span class="n"> (Tags: ajax programming)</span><br /><br />
+<a href="http://www.iana.org/assignments/media-types/" class="d">IANA | MIME Media Types</a> - <span class="l">http://www.iana.org/assignments/media-types/</span><br /><span class="n"> (Tags: server)</span><br /><br />
+<a href="http://httpd.apache.org/docs/2.0/howto/htaccess.html" class="d">Apache Tutorial: .htaccess files - Apache HTTP Server</a> - <span class="l">http://httpd.apache.org/docs/2.0/howto/htaccess.html</span><br /><span class="n"> (Tags: server)</span><br /><br />
+<a href="http://www.aidejavascript.com/" class="d">Aide Javascript</a> - <span class="l">http://www.aidejavascript.com/</span><br /><span class="n">et aussi du php (Tags: javascript php programming)</span><br /><br />
+<a href="http://tecfa.unige.ch/themes/FAQ-FL/controle_diff_page_web/htaccess.html" class="d">Cr&eacute;ation d'un fichier htaccess pour g&eacute;rer l'accès. des pages web.</a> - <span class="l">http://tecfa.unige.ch/themes/FAQ-FL/controle_diff_page_web/htaccess.html</span><br /><span class="n"> (Tags: system:unfiled)</span><br /><br />
+<a href="http://www.framasoft.net/article1988.html" class="d">SciTE - Éditeurs de Texte - Logiciels Libres - Framasoft</a> - <span class="l">http://www.framasoft.net/article1988.html</span><br /><span class="n">ce logiciel a l'air int&eacute;ressant (Tags: logiciel open-source)</span><br /><br />
+<a href="http://www.htmlvalidator.com/" class="d">CSE HTML Validator - Professional HTML Syntax Checker and HTML Editor</a> - <span class="l">http://www.htmlvalidator.com/</span><br /><span class="n">mouais. payant et pas forc&eacute;ment performant, mais on ne sait jamais (Tags: xhtml validateur)</span><br /><br />
+<a href="http://www.htmlhelp.com/tools/validator/" class="d">Le validateur HTML du WDG</a> - <span class="l">http://www.htmlhelp.com/tools/validator/</span><br /><span class="n">encore un (Tags: xhtml valide)</span><br /><br />
+<a href="http://blog.alsacreations.com/2004/06/09/22-display-vous-connaissez" class="d">Display, vous connaissez ? - Blog Alsacr&eacute;ations : XHTML, CSS et Standards web</a> - <span class="l">http://blog.alsacreations.com/2004/06/09/22-display-vous-connaissez</span><br /><span class="n">elle peut prendre plusieurs de valeurs utiles (Tags: css)</span><br /><br />
+<a href="http://forum.alsacreations.com/faq/#item42" class="d">Comment bien d&eacute;calrer XHTML 1.1 ?</a> - <span class="l">http://forum.alsacreations.com/faq/#item42</span><br /><span class="n">il faut le d&eacute;clarer en application/xhtml+xml, point barre (Tags: xhtml site valide)</span><br /><br />
+<a href="http://extensions.geckozone.org/SmartMiddleClick" class="d">SmartMiddleClick - Geckozone</a> - <span class="l">http://extensions.geckozone.org/SmartMiddleClick</span><br /><span class="n">Par d&eacute;faut, lors d'un clique-milieu sur un lien javascript, Firefox ouvre un nouvel onglet vide. Cette extension corrige ce problème et permet l'ouverture des liens en javascript dans un nouvel onglet. Elle permet donc -entre autres- d'ouvrir des pages, (Tags: firefox firefox_extension)</span><br /><br />
+<a href="http://www.tonwebmaster.com/zones_webmasters/cours_php_actions_fichier.php" class="d">cours php (&eacute;crire, lire, cr&eacute;er supprimer un fichier) ! [Ton Webmaster .com]</a> - <span class="l">http://www.tonwebmaster.com/zones_webmasters/cours_php_actions_fichier.php</span><br /><span class="n">beaucoup de fonction pour le traitement des fichiers (Tags: php programming)</span><br /><br />
+<a href="http://www.siteduzero.com/forum-83-91185-p1-js-colorisation-syntaxique-instantanee.html" class="d">[JS] Colorisation Syntaxique Instantan&eacute;e - Le Site du Z&eacute;ro</a> - <span class="l">http://www.siteduzero.com/forum-83-91185-p1-js-colorisation-syntaxique-instantanee.html</span><br /><span class="n">plusieurs liens int&eacute;ressants vers des essais de coloration syntaxique instantan&eacute;e (en plusieurs langages) (Tags: programming)</span><br /><br />
+<a href="http://remouk.alt-tab.org/2006/11/14/le-gars-qui-ne-savait-pas-faire-de-musique/" class="d">Ma&icirc;tre shteshitsu » Le gars qui ne savait pas faire de musique</a> - <span class="l">http://remouk.alt-tab.org/2006/11/14/le-gars-qui-ne-savait-pas-faire-de-musique/</span><br /><span class="n">marrant (Tags: fun)</span><br /><br />
+<a href="http://www.colorjack.com/studio/" class="d">ColorJack: Color Generator</a> - <span class="l">http://www.colorjack.com/studio/</span><br /><span class="n">une palette de couleurs (trouv&eacute;e sur les liens de sebsauvage) (Tags: graphics fun)</span><br /><br />
+<a href="http://www.elizium.nu/scripts/lemmings/" class="d">All lemmingsâ„¢ accounted for!</a> - <span class="l">http://www.elizium.nu/scripts/lemmings/</span><br /><span class="n">Un petit jeu amusant (Tags: fun)</span><br /><br />
+<a href="http://www.inquisitorx.com/beta/" class="d">Inquisitor - Instant Search</a> - <span class="l">http://www.inquisitorx.com/beta/</span><br /><span class="n">Permet de faire une recherche avec plusieurs moteurs de recherche en lançant instantan&eacute;ment la recherche a chaque nouvelle lettre tap&eacute;e. (Tags: fun service)</span><br /><br />
+<a href="http://tiny.media.mit.edu/" class="d">Tiny Icon Factory</a> - <span class="l">http://tiny.media.mit.edu/</span><br /><span class="n">vous pouvez cr&eacute;er des icônes qui seront ajout&eacute;es &agrave; des milliers d'autres (trouv&eacute; via :http://del.icio.us/sebsauvage/ ) (Tags: icon graphics fun)</span><br /><br />
+<a href="http://xhtml-css.net/" class="d">XHTML and CSS</a> - <span class="l">http://xhtml-css.net/</span><br /><span class="n"> (Tags: xhtml css)</span><br /><br />
+<a href="http://xhtmlcsskits.xooit.net/base.html" class="d">DKG-FMR</a> - <span class="l">http://xhtmlcsskits.xooit.net/base.html</span><br /><span class="n">Waow.... un &eacute;diteur de xhtml/css/js en temps r&eacute;el ! (un pop-up s'ouvre pour voir le r&eacute;sultat) avec eds fragments de code, les balises a port&eacute;e, etc... (Tags: ajax fun web2.0)</span><br /><br />
+<a href="http://www.chevrel.org/fr/extensions/" class="d">Mes extensions pour Firefox/thunderbird/Nvu</a> - <span class="l">http://www.chevrel.org/fr/extensions/</span><br /><span class="n"> (Tags: firefox_extension)</span><br /><br />
+<a href="http://www.blog-and-blues.org/weblog/2004/08/16/275-encodage-caracteres-xhtml" class="d">Sp&eacute;cifier l'encodage des caractères d'un document (X)HTML août 2004 Weblog - Blog &amp; Blues</a> - <span class="l">http://www.blog-and-blues.org/weblog/2004/08/16/275-encodage-caracteres-xhtml</span><br /><span class="n"> (Tags: valide xhtml)</span><br /><br />
+<a href="http://www.numabilis.com/blog/2006-09-05-applet_object_ou_embed" class="d">Applet, Object ou Embed ? | Numabilis</a> - <span class="l">http://www.numabilis.com/blog/2006-09-05-applet_object_ou_embed</span><br /><span class="n"> (Tags: system:unfiled)</span><br /><br />
+<a href="http://eric.hurtebis.chez-alice.fr/embed.htm" class="d">Essais EMBED</a> - <span class="l">http://eric.hurtebis.chez-alice.fr/embed.htm</span><br /><span class="n"> (Tags: system:unfiled)</span><br /><br />
+<a href="http://www.opera-fr.com/" class="d">Opera-Fr.com :: Communaut&eacute; francophone des utilisateurs d'opera</a> - <span class="l">http://www.opera-fr.com/</span><br /><span class="n"> (Tags: browser)</span><br /><br />
+<a href="http://webdod.free.fr/injections_sql.txt" class="d">Injections sql</a> - <span class="l">http://webdod.free.fr/injections_sql.txt</span><br /><span class="n"> (Tags: securite bdd)</span><br /><br />
+<a href="http://tourneffaceur.free.fr/" class="d">L'&eacute;cole de tournage d'effaceur - pen spinning</a> - <span class="l">http://tourneffaceur.free.fr/</span><br /><span class="n">des vid&eacute;os impresionnantes (Tags: fun)</span><br /><br />
+<a href="http://www.php.net/manual/fr/ref.tidy.php" class="d">PHP: Tidy - Manual</a> - <span class="l">http://www.php.net/manual/fr/ref.tidy.php</span><br /><span class="n">une extension pour php qui permet d'indenter le code html g&eacute;n&eacute;r&eacute;. (Tags: php programming)</span><br /><br />
+<a href="http://www.info-3000.com/phpmysql/listecompletefonction.php" class="d">Liste des fonctions PHP</a> - <span class="l">http://www.info-3000.com/phpmysql/listecompletefonction.php</span><br /><span class="n">une liste complète (cependant les fonctions sont celles d'anciennes versions de php) (Tags: php)</span><br /><br />
+<a href="http://www.presence-pc.com/forum/ppc/Programmation/test-presence-fichier-distant-is_file-sujet-1000-1.htm" class="d">Test de la présence d'un fichier hébregé sur un serveur distant [PHP]</a> - <span class="l">http://www.presence-pc.com/forum/ppc/Programmation/test-presence-fichier-distant-is_file-sujet-1000-1.htm</span><br /><span class="n">pratique (Tags: php programming)</span><br /><br />
+<a href="http://forum.ubuntu-fr.org/viewtopic.php?id=44965" class="d">Forum Ubuntu-fr.org / Wine est un Windows XP valide!</a> - <span class="l">http://forum.ubuntu-fr.org/viewtopic.php?id=44965</span><br /><span class="n">Ou "Comment faire croire qu'on a Windows en deux clics au super-logiciel-de-la-mort-qui-tue de Microsoft" (Tags: activism fun os)</span><br /><br />
+<a href="http://alliance.bugiweb.com/phpPetitions/modele/test/index_anti_verrous.html" class="d">Campagne Anti-Verrous</a> - <span class="l">http://alliance.bugiweb.com/phpPetitions/modele/test/index_anti_verrous.html</span><br /><span class="n">un site contre la loi dadvsi et tout ce qui tourne autour (Tags: activism article site)</span><br /><br />
+<a href="http://www.gnu.org/philosophy/categories.fr.html#ProprietarySoftware" class="d">Cat&eacute;gories de logiciels libres et non libres - Projet GNU - Free Software Foundation/Fondation pour le Logiciel Libre (FSF/FLL)</a> - <span class="l">http://www.gnu.org/philosophy/categories.fr.html#ProprietarySoftware</span><br /><span class="n"> (Tags: article)</span><br /><br />
+<a href="http://www.gnu.org/philosophy/free-software-for-freedom.fr.html" class="d">Pourquoi «Free Software» est-il meilleur que «Open Source» - Projet GNU - Free Software Foundation/Fondation pour le Logiciel Libre (FSF/FLL)</a> - <span class="l">http://www.gnu.org/philosophy/free-software-for-freedom.fr.html</span><br /><span class="n"> (Tags: article)</span><br /><br />
+<a href="http://www.kde-look.org/index.php?xcontentmode=22" class="d">KDE-Look.org</a> - <span class="l">http://www.kde-look.org/index.php?xcontentmode=22</span><br /><span class="n">une librairie d'icônes (Tags: graphics)</span><br /><br />
+<a href="http://www.scaranet.net/" class="d">scaranet.net</a> - <span class="l">http://www.scaranet.net/</span><br /><span class="n">un site interessant, et le logiciel shoot2png est très bien ! (Tags: freeware site)</span><br /><br />
+<a href="http://www.dotclear.net/" class="d">Accueil - DotClear - DotClear 2</a> - <span class="l">http://www.dotclear.net/</span><br /><span class="n">un excellent logiciel libre et gratuit utilis&eacute; pour la conception de blogs (Tags: blog open-source freeware)</span><br /><br />
+<a href="http://fockniouzes.zaup.org/" class="d">.::[FockNiouzes]::. - Webradio libre associative.</a> - <span class="l">http://fockniouzes.zaup.org/</span><br /><span class="n">un site de musique libre (Tags: system:unfiled)</span><br /><br />
+<a href="http://www.tousenprison.info/index.html" class="d">A nous la guillotine</a> - <span class="l">http://www.tousenprison.info/index.html</span><br /><span class="n">un site sur la loi DADVSI (Tags: activism)</span><br /><br />
+<a href="http://www.goldzoneweb.info/" class="d">GoLDZoNE Web HoSTING - L'h&eacute;bergeur web gratuit pour tous</a> - <span class="l">http://www.goldzoneweb.info/</span><br /><span class="n">un h&eacute;bergeur gratuit qui a l'air interessant (Tags: system:unfiled)</span><br /><br />
+<a href="http://www.editions-eyrolles.com/css2/tests/couleur/couleur9.htm" class="d">Tests css</a> - <span class="l">http://www.editions-eyrolles.com/css2/tests/couleur/couleur9.htm</span><br /><span class="n"> (Tags: css)</span><br /><br />
+<a href="http://www.wormux.org/wiki/fr/index.php" class="d">Wormux</a> - <span class="l">http://www.wormux.org/wiki/fr/index.php</span><br /><span class="n">G&eacute;nial ! Un clone open source de Worms ! (trouv&eacute; via : http://del.icio.us/sebsauvage/ (Tags: fun games)</span><br /><br />
+<a href="http://yansanmo.no-ip.org/w3c-validator/" class="d">Validation HTML/XHTML</a> - <span class="l">http://yansanmo.no-ip.org/w3c-validator/</span><br /><span class="n">encore un validateur xhtml/xml, qui a l'air bon aussi. Le site est interessant (voir : http://yansanmo.no-ip.org/ ) (Tags: valide)</span><br /><br />
+<a href="http://scaraweb.free.fr/scaranet/www/?page=index&amp;z=shoot2png" class="d">Scaramanga's</a> - <span class="l">http://scaraweb.free.fr/scaranet/www/?page=index&amp;z=shoot2png</span><br /><span class="n">Shoot2Png, un logiciel pour faire des captures d'&eacute;cran. Il a l'air bien (Tags: system:unfiled)</span><br /><br />
+<a href="http://cui.unige.ch/~robin0/configuration.xhtml" class="d">Configuration</a> - <span class="l">http://cui.unige.ch/~robin0/configuration.xhtml</span><br /><span class="n">Plusieurs logiciels int&eacute;ressants ainsi qu'une liste d'extensions pour Firefox (Tags: firefox_extension logiciel)</span><br /><br />
+<a href="http://www.kopikol.net/" class="d">kopikol.net</a> - <span class="l">http://www.kopikol.net/</span><br /><span class="n">un annuaire de sites (Tags: fun)</span><br /><br />
+<a href="http://bbcomposer.elitwork.com/" class="d">BBComposer : Editeur BBCode int&eacute;gr&eacute; &agrave; Mozilla Firefox</a> - <span class="l">http://bbcomposer.elitwork.com/</span><br /><span class="n">une extension qui permet d'&eacute;diter en mode WYSIWYG une page, avec le langage xhtml, bbcode, ou xbbcode (Tags: firefox_extension xhtml)</span><br /><br />
+<a href="http://www.codeshttp.com/" class="d">Liste complète des codes HTTP</a> - <span class="l">http://www.codeshttp.com/</span><br /><span class="n"> (Tags: system:unfiled)</span><br /><br />
+<a href="http://extensions.geckozone.org/FireBug" class="d">FireBug</a> - <span class="l">http://extensions.geckozone.org/FireBug</span><br /><span class="n">cette extension permet de voir le traffic xmlhttprequest, les fonctions javascript, d&eacute;bugger certaines pages ou scripts.... (Tags: firefox_extension)</span><br /><br />
+<a href="http://www.pygame.org/projects/20/308/" class="d">pygame - python game development</a> - <span class="l">http://www.pygame.org/projects/20/308/</span><br /><span class="n">un site de d&eacute;veloppement de jeux en python (Tags: python programming games fun)</span><br /><br />
+<a href="http://abcdelasecurite.free.fr/chkrootkit.org/download/index.html" class="d">chkrootkit -- locally checks for signs of a rootkit</a> - <span class="l">http://abcdelasecurite.free.fr/chkrootkit.org/download/index.html</span><br /><span class="n">un anti-rootkit (Tags: anti-rootkit securite)</span><br /><br />
+<a href="http://clb56.freezee.org/" class="d">clb56 - Tests en d&eacute;veloppement web - Page d'accueil.</a> - <span class="l">http://clb56.freezee.org/</span><br /><span class="n"> (Tags: webmaster tools)</span><br /><br />
+<a href="http://www.info-actu.info/" class="d">Info-Actu</a> - <span class="l">http://www.info-actu.info/</span><br /><span class="n">un site interessant (Tags: system:unfiled)</span><br /><br />
+<a href="http://membres.lycos.fr/cybertux/" class="d">Tux</a> - <span class="l">http://membres.lycos.fr/cybertux/</span><br /><span class="n">une galerie de png de pingouins :) (Tags: graphics png)</span><br /><br />
+<a href="http://www.exquisses.com/gecko/test.php?texte=Mettez+un+texte" class="d">test.php (Image PNG, 180x60 pixels)</a> - <span class="l">http://www.exquisses.com/gecko/test.php?texte=Mettez+un+texte</span><br /><span class="n">pour mettre du texte sur une image (Tags: fun)</span><br /><br />
+<a href="http://www.certifyr.com/" class="d">Official Web 2.0 Certifyr</a> - <span class="l">http://www.certifyr.com/</span><br /><span class="n">on aura tout vu (Tags: web2.0)</span><br /><br />
+<a href="http://www.gtopala.com/" class="d">SIW - System Information for Windows</a> - <span class="l">http://www.gtopala.com/</span><br /><span class="n">un logiciel pour avoir diff&eacute;rentes informations sur son ordinateur (windows). (Tags: windows tools)</span><br /><br />
+<a href="http://www.fleiner.com/bots/" class="d">How to keep bad robots</a> - <span class="l">http://www.fleiner.com/bots/</span><br /><span class="n">une explicaion sur les robots qui visitent les sites pour les indexer. (Tags: system:unfiled)</span><br /><br />
+<a href="http://www.la-grange.net/w3c/html4.01/interact/scripts.html#h-18.2.3" class="d">Les scripts dans les documents HTML</a> - <span class="l">http://www.la-grange.net/w3c/html4.01/interact/scripts.html#h-18.2.3</span><br /><span class="n">les &eacute;vènement relatifs aux actions de la souris : onclick, onmouseover, etc.... (Tags: javascript)</span><br /><br />
+<a href="http://marc.golinvaux.free.fr/shamrock/session.php" class="d">shamrock</a> - <span class="l">http://marc.golinvaux.free.fr/shamrock/session.php</span><br /><span class="n">un autre os en ligne. (Tags: os web2.0)</span><br /><br />
+<a href="http://jojaba.free.fr/" class="d">Le site de JoJaBa</a> - <span class="l">http://jojaba.free.fr/</span><br /><span class="n">slogan du site : "Traduction d'extensions Mozilla et utilisation de PLume CMS". Un bon site, m&ecirc;me s'il n'est plsu mis a jour. (Tags: firefox_extension)</span><br /><br />
+<a href="http://plone.org/" class="d">plone.org — plone.org</a> - <span class="l">http://plone.org/</span><br /><span class="n">un autre cms open source (cf guppy) qui a l'air interessant (Tags: cms free)</span><br /><br />
+<a href="http://dean.edwards.name/IE7/" class="d">/IE7/</a> - <span class="l">http://dean.edwards.name/IE7/</span><br /><span class="n">une librairie javascript qui permet de "faire fonctionner" certaines propri&eacute;t&eacute;s CSS par IE. Quand est ce qu'on aura plus besoin de recourir a tant de manipulations avec ce navigateur ? (Tags: activism browser javascript)</span><br /><br />
+<a href="http://totalementcretin.apinc.org/blog/2006/10/26/370" class="d">IE7: easier and more secure (2) - Totalement Cretin(s)</a> - <span class="l">http://totalementcretin.apinc.org/blog/2006/10/26/370</span><br /><span class="n">youpi ! encore des failles de s&eacute;curit&eacute; dans IE ! Qu'est ce qu'ils sont g&eacute;n&eacute;reux chez microsoft ! (Tags: activism browser)</span><br /><br />
+<a href="http://skybeurk.net/" class="d">Skybeurk Awards : Les Pires SkyBlogs du Net</a> - <span class="l">http://skybeurk.net/</span><br /><span class="n">je d&eacute;teste les skyblogs (Tags: fun blog)</span><br /><br />
+<a href="http://www.squarefree.com/bookmarklets/webdevel.html" class="d">Web Development Bookmarklets</a> - <span class="l">http://www.squarefree.com/bookmarklets/webdevel.html</span><br /><span class="n">quelques scripts javascripts (Tags: javascript)</span><br /><br />
+<a href="http://www.lemondeduweb.net/" class="d">Lemondeduweb</a> - <span class="l">http://www.lemondeduweb.net/</span><br /><span class="n">un site/blog interessant (Tags: blog)</span><br /><br />
+<a href="http://gabbly.com/" class="d">Gabbly</a> - <span class="l">http://gabbly.com/</span><br /><span class="n">ce site permet de chatter avec les visiteurs d'un autre site. Une fen&ecirc;tre s'ouvre par-dessus la page du site visit&eacute;. Tout ca sans aucune installation, c'est imm&eacute;diat. Essayez par exemple http://gabbly.com/sylvain.sab.free.fr/ (Tags: fun chat)</span><br /><br />
+<a href="http://wiki.creativecommons.org/MozCC" class="d">MozCC - CcWiki</a> - <span class="l">http://wiki.creativecommons.org/MozCC</span><br /><span class="n">Une extension pour Firefox qui permet de voir les d&eacute;tails d'une licence Creative Commons d'un site. (Tags: firefox firefox_extension)</span><br /><br />
+<a href="http://www.commentcamarche.net/actualites/firefox-interview-et-version-2-0-finale-2437007-actualite.php3" class="d">Firefox - Interview et version 2.0 finale - Logiciels/Systèmes - Actualit&eacute;s</a> - <span class="l">http://www.commentcamarche.net/actualites/firefox-interview-et-version-2-0-finale-2437007-actualite.php3</span><br /><span class="n">bon t&eacute;l&eacute;chargement :) (Tags: firefox)</span><br /><br />
+<a href="http://www.commentcamarche.net/faq/sujet-244-lutter-contre-les-spammeurs" class="d">Lutter contre les spammeurs</a> - <span class="l">http://www.commentcamarche.net/faq/sujet-244-lutter-contre-les-spammeurs</span><br /><span class="n"> (Tags: antispam securite)</span><br /><br />
+<a href="http://www.peutetreunereponse.net/" class="d">Peut-&ecirc;tre une r&eacute;ponse ?</a> - <span class="l">http://www.peutetreunereponse.net/</span><br /><span class="n">plusieurs astuces pour webmaster et autres. interessant (Tags: webmaster)</span><br /><br />
+<a href="http://fr.selfhtml.org/" class="d">SELFHTML</a> - <span class="l">http://fr.selfhtml.org/</span><br /><span class="n">Une liste de balises, fonction et propri&eacute;t&eacute;s html/css/jS.... Trouv&eacute; via : http://www.commentcamarche.net/forum/affich-2433992 (Tags: xhtml css javascript webmaster)</span><br /><br />
+<a href="http://openweb.eu.org/articles/objet_xmlhttprequest/" class="d">Openweb.eu.org - L'objet XMLHttpRequest</a> - <span class="l">http://openweb.eu.org/articles/objet_xmlhttprequest/</span><br /><span class="n"> (Tags: ajax programming)</span><br /><br />
+<a href="http://siddh.developpez.com/articles/ajax/" class="d">Web 2.0, allez plus loin avec AJAX et XMLHttpRequest - Club d'entraide des d&eacute;veloppeurs francophones</a> - <span class="l">http://siddh.developpez.com/articles/ajax/</span><br /><span class="n"> (Tags: ajax programming)</span><br /><br />
+<a href="http://www.xul.fr/xml-ajax.html" class="d">Ajax et XMLHttpRequest</a> - <span class="l">http://www.xul.fr/xml-ajax.html</span><br /><span class="n"> (Tags: ajax programming tutoriel)</span><br /><br />
+<a href="http://fr.wikibooks.org/wiki/Programmation_PHP" class="d">Programmation PHP - Wikibooks</a> - <span class="l">http://fr.wikibooks.org/wiki/Programmation_PHP</span><br /><span class="n">une r&eacute;f&eacute;rence sur la programmation en php sur wikipedia (Tags: php programming)</span><br /><br />
+<a href="http://www.css3.info/selectors-test/index.html" class="d">CSS Selectors testsuite - CSS3 . info</a> - <span class="l">http://www.css3.info/selectors-test/index.html</span><br /><span class="n">un test pour voir quels sont les selceteurs css 3 compatibles avec votre navigateur (Tags: css)</span><br /><br />
+<a href="http://rakaz.nl/item/how_well_do_browsers_support_css_selectors" class="d">rakaz - How well do browsers support CSS Selectors?</a> - <span class="l">http://rakaz.nl/item/how_well_do_browsers_support_css_selectors</span><br /><span class="n"> (Tags: css)</span><br /><br />
+<a href="http://www.cdburnerxp.se/cssparse/css_optimiser.php" class="d">CSS Formatteur et Optimiseur (bas&eacute; sur CSSTidy 1.2)</a> - <span class="l">http://www.cdburnerxp.se/cssparse/css_optimiser.php</span><br /><span class="n">un autre très bon optimiseur de code css (Tags: css)</span><br /><br />
+<a href="http://flumpcakes.co.uk/css/keyboard#" class="d">CSS Keyboard : flumpCakes</a> - <span class="l">http://flumpcakes.co.uk/css/keyboard#</span><br /><span class="n">un faux clavier entièrement en CSS ! (Tags: css)</span><br /><br />
+<a href="http://flumpcakes.co.uk/css/optimiser/" class="d">Online CSS Optimiser/Optimizer : flumpCakes</a> - <span class="l">http://flumpcakes.co.uk/css/optimiser/</span><br /><span class="n"> (Tags: css)</span><br /><br />
+<a href="http://developer.mozilla.org/fr/docs/AJAX:Premiers_pas" class="d">AJAX:Premiers pas - MDC</a> - <span class="l">http://developer.mozilla.org/fr/docs/AJAX:Premiers_pas</span><br /><span class="n">un tutoriel sur ajax (Tags: ajax programming webmaster)</span><br /><br />
+<a href="http://fr2.php.net/manual/fr/reserved.variables.php#reserved.variables.server" class="d">PHP: Variables pr&eacute;d&eacute;finies - Manual</a> - <span class="l">http://fr2.php.net/manual/fr/reserved.variables.php#reserved.variables.server</span><br /><span class="n">la doc php sur les variables superglobales (Tags: php)</span><br /><br />
+<a href="http://www.phpscripts-fr.net/scripts/scripts.php?cat=MailingList+%2F+NewsLetter" class="d">PHPScripts - Scripts PHP / MySQL - MailingList / NewsLetter</a> - <span class="l">http://www.phpscripts-fr.net/scripts/scripts.php?cat=MailingList+%2F+NewsLetter</span><br /><span class="n"> (Tags: php)</span><br /><br />
+<a href="http://www.developpez.net/forums/archive/index.php/f-241.html" class="d">Outils [Archives] - Forum des d&eacute;veloppeurs</a> - <span class="l">http://www.developpez.net/forums/archive/index.php/f-241.html</span><br /><span class="n">une faq sur php (Tags: php)</span><br /><br />
+<a href="http://greenmarocain.blog.jeuxvideo.com/25.php" class="d">BashFR.org, ... - La Maroquinerie (greenmarocain)</a> - <span class="l">http://greenmarocain.blog.jeuxvideo.com/25.php</span><br /><span class="n">Je cite : "Sur BashFR ( http://www.bashfr.org ), on trouve des conversations marrantes trouv&eacute;es sur des forums, chats, etc. Je vais mettre ici celles qui parlent de jeux vid&eacute;o. Pour certaines, avec le titre du jeu avant, c'est moins drôle, y a moins de (Tags: fun)</span><br /><br />
+<a href="http://www.commentcamarche.net/actualites/suggestions-pour-firefox-3-2425727-actualite.php3" class="d">Suggestions pour Firefox 3</a> - <span class="l">http://www.commentcamarche.net/actualites/suggestions-pour-firefox-3-2425727-actualite.php3</span><br /><span class="n"> (Tags: firefox)</span><br /><br />
+<a href="http://desencyclopedie.wikia.com/wiki/D%C3%A9sencyclop%C3%A9die:Accueil" class="d">D&eacute;sencyclop&eacute;die:Accueil - D&eacute;sencyclop&eacute;die</a> - <span class="l">http://desencyclopedie.wikia.com/wiki/D%C3%A9sencyclop%C3%A9die:Accueil</span><br /><span class="n">une parodie de Wikipedia (Tags: fun)</span><br /><br />
+<a href="http://www.macbidouille.com/articles/218/" class="d">MacBidouille.com : Bidouille hardware sur Mac</a> - <span class="l">http://www.macbidouille.com/articles/218/</span><br /><span class="n">Je cite : "Cet article d&eacute;taille comment faire cohabiter Mac OS X, Linux, Windows XP et Windows Vista sur un m&ecirc;me Mac Pro." (Tags: os windows linux)</span><br /><br />
+<a href="http://www.keime.fr/projets.html" class="d">Quelques logiciels</a> - <span class="l">http://www.keime.fr/projets.html</span><br /><span class="n"> (Tags: freeware)</span><br /><br />
+<a href="http://www.phptools4u.com/site/2002/06/04/97-variables-utiles-en-php" class="d">PHPTools4U.com : Variables utiles en PHP</a> - <span class="l">http://www.phptools4u.com/site/2002/06/04/97-variables-utiles-en-php</span><br /><span class="n">surtout des variables serveur (Tags: php)</span><br /><br />
+<a href="http://www.expreg.com/" class="d">REGEX - REGEXP - Expressions r&eacute;gulières</a> - <span class="l">http://www.expreg.com/</span><br /><span class="n">un site sur les regex en php (Tags: php)</span><br /><br />
+<a href="http://koivi.com/ie-png-transparency/" class="d">PNG-24 Alpha Transparency With Microsoft Internet Explorer</a> - <span class="l">http://koivi.com/ie-png-transparency/</span><br /><span class="n"> (Tags: graphics webmaster)</span><br /><br />
+<a href="http://www.ryxeo.com/index.php/2006/07/12/56-notre-site-a-t-il-des-problemes-avec-internet-explorer" class="d">Notre site a-t-il des problèmes avec Internet Explorer™? - RyX&eacute;o SARL</a> - <span class="l">http://www.ryxeo.com/index.php/2006/07/12/56-notre-site-a-t-il-des-problemes-avec-internet-explorer</span><br /><span class="n">"Les internautes ne s'aperçoivent donc pas du manque et pensent qu'Internet Explorer est un bon navigateur".    Sic.... (Tags: activism)</span><br /><br />
+<a href="http://web-modules.net/" class="d">Web-Modules >> Services pour Webmaster</a> - <span class="l">http://web-modules.net/</span><br /><span class="n"> (Tags: webmaster)</span><br /><br />
+<a href="http://www.commentcamarche.net/faq/sujet-188-utiliser-des-accents-et-autres-caracteres-speciaux" class="d">Utiliser des accents et autres caractères sp&eacute;ciaux</a> - <span class="l">http://www.commentcamarche.net/faq/sujet-188-utiliser-des-accents-et-autres-caracteres-speciaux</span><br /><span class="n">pour utiliser des accents dans les langages de programmation (Tags: caractere speciaux)</span><br /><br />
+<a href="http://www.liutilities.com/products/wintaskspro/processlibrary/" class="d">Windows Process Library</a> - <span class="l">http://www.liutilities.com/products/wintaskspro/processlibrary/</span><br /><span class="n">une autre liste de processus (Tags: tools windows)</span><br /><br />
+<a href="http://www.opensourcecms.com/" class="d">OpenSourceCMS - Home</a> - <span class="l">http://www.opensourcecms.com/</span><br /><span class="n">un site de CMS open source. (les cms permettent de faire un site complet sans s'y connaitre) (Tags: free gratuit webmaster site)</span><br /><br />
+<a href="http://www.exalead.fr/search" class="d">Exalead</a> - <span class="l">http://www.exalead.fr/search</span><br /><span class="n">un nouveau moteur de recherche (Tags: system:unfiled)</span><br /><br />
+<a href="http://www.csstopsites.com/resources/" class="d">CSS Top Sites Resources</a> - <span class="l">http://www.csstopsites.com/resources/</span><br /><span class="n"> (Tags: css)</span><br /><br />
+<a href="http://www.css3.info/preview/" class="d">CSS3 Preview - CSS3 . info</a> - <span class="l">http://www.css3.info/preview/</span><br /><span class="n">un apercu de ce que permettron les CSS 3 (trouv&eacute; via les liens de sebsauvage) (Tags: css webmaster)</span><br /><br />
+<a href="http://www.apachefriends.org/fr/xampp-linux.html" class="d">apache friends - xampp pour linux</a> - <span class="l">http://www.apachefriends.org/fr/xampp-linux.html</span><br /><span class="n">un serveur ? (Tags: system:unfiled)</span><br /><br />
+<a href="http://www.linux-area.info/" class="d">Linux-area</a> - <span class="l">http://www.linux-area.info/</span><br /><span class="n">un site qui a l'air interessant (sur Linux) (Tags: os linux)</span><br /><br />
+<a href="http://afpy.org/" class="d">AFPY — Association Francophone PYthon</a> - <span class="l">http://afpy.org/</span><br /><span class="n"> (Tags: python programming)</span><br /><br />
+<a href="http://www.w3.org/Style/css3-selectors-updates/WD-css3-selectors-20010126.fr.html" class="d">CSS3 module: W3C Selectors</a> - <span class="l">http://www.w3.org/Style/css3-selectors-updates/WD-css3-selectors-20010126.fr.html</span><br /><span class="n">plusieurs pseudo classes parfois utiles. certaines sont CSS 2 (Tags: css)</span><br /><br />
+<a href="http://media-convert.com/convert/" class="d">Media Convert - free and on line - convert and split sound, ringtones, images, docs</a> - <span class="l">http://media-convert.com/convert/</span><br /><span class="n">un convertisseur de fichiers en ligne. beaucoup de formats support&eacute;s. (Tags: system:unfiled)</span><br /><br />
+<a href="http://www.cssplay.co.uk/book/index.html" class="d">A css mouseover</a> - <span class="l">http://www.cssplay.co.uk/book/index.html</span><br /><span class="n">une excellente utilisation des CSS. Comme d'habitude, ne fonctionne pas sous IE. (Tags: css)</span><br /><br />
+<a href="http://xmlfr.org/w3c/TR/xslt/" class="d">Transformations XSL (XSLT)</a> - <span class="l">http://xmlfr.org/w3c/TR/xslt/</span><br /><span class="n">les recommandations du W3C (Tags: webmaster xml xslt)</span><br /><br />
+<a href="http://seb.prevot.free.fr/csscursor.html" class="d">Changement de curseurs en CSS</a> - <span class="l">http://seb.prevot.free.fr/csscursor.html</span><br /><span class="n"> (Tags: css)</span><br /><br />
+<a href="http://www.xs4all.nl/~jvdkuyp/flash/see.htm" class="d">Icon War</a> - <span class="l">http://www.xs4all.nl/~jvdkuyp/flash/see.htm</span><br /><span class="n"> (Tags: fun)</span><br /><br />
+<a href="http://blog.virgule.info/" class="d">ツ blog.virgule.info</a> - <span class="l">http://blog.virgule.info/</span><br /><span class="n">un autre blog interessant sur divers sujets (entre autres l'informatique) (Tags: blog article)</span><br /><br />
+<a href="http://www.petitiononline.com/msiepng/petition.html" class="d">Proper PNG Support in Internet Explorer for Windows Petition</a> - <span class="l">http://www.petitiononline.com/msiepng/petition.html</span><br /><span class="n">Ah, esperons que cette p&eacute;tition se fera entendre et aura un impact (IE ne supporte pas les png transparents, vachement pratique d'utiliser les gifs.....) (Tags: webmaster browser article activism)</span><br /><br />
+<a href="http://blogzinet.free.fr/index.php?2004/09/22/359-liens-mozilla-vs-ie-essentiels" class="d">Liens Mozilla vs IE essentiels - BlogZiNet</a> - <span class="l">http://blogzinet.free.fr/index.php?2004/09/22/359-liens-mozilla-vs-ie-essentiels</span><br /><span class="n">Pourquoi FF est mieux que IE. On pourait aussi dire : "Pourquoi IE est le moins avanc&eacute; des navigateurs graphiques". (Tags: browser article)</span><br /><br />
+<a href="http://www.biologeek.com/contact/mail_encoder.php.txt" class="d">Mail encoder</a> - <span class="l">http://www.biologeek.com/contact/mail_encoder.php.txt</span><br /><span class="n">des fonctions php qui permettraient d'encoder un e mail (Tags: php webmaster securite)</span><br /><br />
+<a href="http://msdn.microsoft.com/workshop/essentials/whatsnew/whatsnew_70_scr.asp" class="d">What's New in Internet Explorer 7 (Script)</a> - <span class="l">http://msdn.microsoft.com/workshop/essentials/whatsnew/whatsnew_70_scr.asp</span><br /><span class="n"> (Tags: article browser)</span><br /><br />
+<a href="http://www.biologeek.com/" class="d">Biologeek : Ubuntu, bio-informatique et geekeries libres d'un bio-informaticien au quotidien.</a> - <span class="l">http://www.biologeek.com/</span><br /><span class="n">un bon site que j'aurais du marquer plus tôt. (Tags: webmaster article site)</span><br /><br />
+<a href="http://www.codeblocks.org/" class="d">Code::Blocks IDE - Open Source, Cross-platform Free C++ IDE</a> - <span class="l">http://www.codeblocks.org/</span><br /><span class="n">un &eacute;diteur C/C++ open source (Tags: programming logiciel gratuit freeware)</span><br /><br />
+<a href="http://www.acces-pour-tous.net/fichiers_communs/access.php?rub=sigles" class="d">Les sigles, acronymes et autres abr&eacute;viations</a> - <span class="l">http://www.acces-pour-tous.net/fichiers_communs/access.php?rub=sigles</span><br /><span class="n"> (Tags: webmaster accessibilite)</span><br /><br />
+<a href="http://www.stervinou.com/projets/rss/" class="d">Jean-Yves Stervinou > RSS 2.0 traduction française</a> - <span class="l">http://www.stervinou.com/projets/rss/</span><br /><span class="n">un article interessant sur le format rss (Tags: webmaster xml)</span><br /><br />
+<a href="http://www.monrss.info/" class="d">Mon RSS :: Des flux RSS et des Podcast pour &ecirc;tre au courant de l'actualit&eacute;</a> - <span class="l">http://www.monrss.info/</span><br /><span class="n"> (Tags: g&eacute;n&eacute;ral)</span><br /><br />
+<a href="http://www.googlefight.com/index.php?lang=fr_FR" class="d">Google Fight : proposez un combat avec googleFight</a> - <span class="l">http://www.googlefight.com/index.php?lang=fr_FR</span><br /><span class="n"> (Tags: fun)</span><br /><br />
+<a href="http://www.siteduzero.com/forum-83-55210-p1-linux-sur-la-toile.html" class="d">Linux sur la Toile - Le Site du Z&eacute;ro</a> - <span class="l">http://www.siteduzero.com/forum-83-55210-p1-linux-sur-la-toile.html</span><br /><span class="n">Une liste utile de sites sur Linux. (Tags: os linux)</span><br /><br />
+<a href="http://www.commentcamarche.net/actualites/mandriva-2007-dans-les-bacs-2406038-actualite.php3" class="d">Mandriva 2007 dans les bacs</a> - <span class="l">http://www.commentcamarche.net/actualites/mandriva-2007-dans-les-bacs-2406038-actualite.php3</span><br /><span class="n"> (Tags: os linux)</span><br /><br />
+<a href="http://www.commentcamarche.net/forum/affich-2407608-le-reve-americain" class="d">Le r&ecirc;ve am&eacute;ricain...</a> - <span class="l">http://www.commentcamarche.net/forum/affich-2407608-le-reve-americain</span><br /><span class="n"> (Tags: activism)</span><br /><br />
+<a href="http://www.commentcamarche.net/forum/affich-2406267-nouvelle-loi-sur-la-surveillance-electronique" class="d">Nouvelle loi sur la surveillance &eacute;lectronique</a> - <span class="l">http://www.commentcamarche.net/forum/affich-2406267-nouvelle-loi-sur-la-surveillance-electronique</span><br /><span class="n">En plus, les Etats unis sont en train de faire voter une loi quipermettrait d'emprisonner et de *torturer* n'importe qui sur le territoire am&eacute;ricain. Mais vous inqui&eacute;tez pas hein, c'est les d&eacute;fenseurs du monde libre. (Tags: activism)</span><br /><br />
+<a href="http://www.hoaxbuster.com/" class="d">HoaxBuster - Premiere ressource francophone sur les hoax</a> - <span class="l">http://www.hoaxbuster.com/</span><br /><span class="n">Ce site recense  des chaines qui existent. Si vous recevez un mail group&eacute; avec un contenu bidon, c'est surement une chaine. Voici comment envoyer un mail group&eacute;  en cachant les destinataires : http://sylvain.sab.free.fr/autres/temp/mailccibss.gif (Tags: securite)</span><br /><br />
+<a href="http://www.videoronk.com/" class="d">::.VideoRonk.:: Your favorite videos</a> - <span class="l">http://www.videoronk.com/</span><br /><span class="n">ce site mermet d'enregistrer des videos de google, youtube, et autres sites de vid&eacute;o en ligne. Trouv&eacute; comme pas mal d'autres sur http://del.icio.us/sebsauvage/ (Tags: fun)</span><br /><br />
+<a href="http://labs.digg.com/swarm/" class="d">digg labs / swarm</a> - <span class="l">http://labs.digg.com/swarm/</span><br /><span class="n">Une animation en flash qui permet de voir les liens post&eacute;s dans digg. Lorsque l'on pointe la souris sur un lien, on voit les liens en rapport. (Tags: fun)</span><br /><br />
+<a href="http://www.liveplasma.com/" class="d">liveplasma music, movies, search engine and discovery engine</a> - <span class="l">http://www.liveplasma.com/</span><br /><span class="n">Entrez le nom d'un artiste, vous aurez des artistes qui y ressemblent. En plus, c'est marrant de se balader dans ce truc : ) (Tags: fun)</span><br /><br />
+<a href="http://www.ndesign-studio.com/resources/links/" class="d">Links</a> - <span class="l">http://www.ndesign-studio.com/resources/links/</span><br /><span class="n">des liens interresants. (Tags: webmaster fun site)</span><br /><br />
+<a href="http://www.ndesign-studio.com/resources/mini-pixel-icons/" class="d">Mini Pixel Icons</a> - <span class="l">http://www.ndesign-studio.com/resources/mini-pixel-icons/</span><br /><span class="n">Oh, plein d'icones, g&eacute;nial. Trouv&eacute; via les liens de sebsauvage (http://del.icio.us/sebsauvage/ ) (Tags: images)</span><br /><br />
+<a href="http://openweb.eu.org/articles/zoom_image/" class="d">Openweb.eu.org - Zoom d'images avec les CSS</a> - <span class="l">http://openweb.eu.org/articles/zoom_image/</span><br /><span class="n">Modifier une image au survol par la souris (Tags: css webmaster)</span><br /><br />
+<a href="http://www.codes-sources.com/" class="d">CodeS-SourceS.com</a> - <span class="l">http://www.codes-sources.com/</span><br /><span class="n"> (Tags: system:unfiled)</span><br /><br />
+<a href="http://www.branchez-vous.com/actu/06-09/10-295504.html" class="d">Torpark : un Firefox anonyme et gratuit</a> - <span class="l">http://www.branchez-vous.com/actu/06-09/10-295504.html</span><br /><span class="n">voir &eacute;galement http://internetauxpetitsoignons.50webs.com/ et http://matrix.samizdat.net/crypto/AnonApps/#firefox (Tags: browser)</span><br /><br />
+<a href="http://openweb.eu.org/articles/cascade_css/" class="d">Openweb.eu.org - Cascade CSS et **priorit&eacute; des s&eacute;lecteurs**</a> - <span class="l">http://openweb.eu.org/articles/cascade_css/</span><br /><span class="n">quelles règles CSS les navigateurs suivent-ils en premier ? (Tags: webmaster CSS)</span><br /><br />
+<a href="http://openweb.eu.org/articles/validation_formulaire/" class="d">Openweb.eu.org - Bien valider ses formulaires avec Javascript</a> - <span class="l">http://openweb.eu.org/articles/validation_formulaire/</span><br /><span class="n"> (Tags: webmaster accessibilite)</span><br /><br />
+<a href="http://openweb.eu.org/articles/css_impression/" class="d">Openweb.eu.org - Une feuille de style pour l'impression</a> - <span class="l">http://openweb.eu.org/articles/css_impression/</span><br /><span class="n">Attention : l'attribut "title" d'une balise link pour ins&eacute;rer un CSS doit prendre une valeur selon le media utilis&eacute;, par exemple "Ecran" ou "Impression", et non "Design par defaut du site" par exemple. (Tags: css webmaster)</span><br /><br />
+<a href="https://addons.mozilla.org/firefox/1429/" class="d">IE View Lite</a> - <span class="l">https://addons.mozilla.org/firefox/1429/</span><br /><span class="n">Cette extension permet d'ouvrir une page dans IE. Il existe une extension similaire qui utilise opera. (Tags: firefox firefox_extension)</span><br /><br />
+<a href="http://www.siteduzero.com/tuto-3-8314-1-css-les-compteurs.html#ss_part_1" class="d">[CSS] Les compteurs - Le Site du Z&eacute;ro</a> - <span class="l">http://www.siteduzero.com/tuto-3-8314-1-css-les-compteurs.html#ss_part_1</span><br /><span class="n">Une facon pratique de num&eacute;roter ses titres pour faire des chapitres. Mais bon, comme d'habitude, ne fonctionne pas sous IE.... (Tags: css)</span><br /><br />
+<a href="http://svmblogs.vnunet.fr/svm/2006/09/windows_vista_c.html" class="d">SVM: Windows Vista cr&eacute;e des emplois</a> - <span class="l">http://svmblogs.vnunet.fr/svm/2006/09/windows_vista_c.html</span><br /><span class="n">Sisi, c'est vrai ! Et il ne faut pas prendre Linux hein, ca coute de l'argent a Microsft. Une analyse d&eacute;taill&eacute;e : http://nauges.typepad.com/my_weblog/2006/09/windows_vista_l.html (Tags: fun)</span><br /><br />
+<a href="http://extensions.geckozone.org/DragDeGo/" class="d">DragDeGo - Geckozone - Extensions pour Firefox</a> - <span class="l">http://extensions.geckozone.org/DragDeGo/</span><br /><span class="n">cette extension a l'air très pratique (Tags: firefox firefox_extension)</span><br /><br />
+<a href="http://web-sniffer.net/" class="d">View HTTP Request and Response Header</a> - <span class="l">http://web-sniffer.net/</span><br /><span class="n"> (Tags: webmaster)</span><br /><br />
+<a href="http://css.alsacreations.com/Tutoriels-PHP/style-switcher-php" class="d">Faire un Style switcher (changement d'habillage) en PHP - Alsacr&eacute;ations</a> - <span class="l">http://css.alsacreations.com/Tutoriels-PHP/style-switcher-php</span><br /><span class="n"> (Tags: webmaster)</span><br /><br />
+<a href="http://forum.alsacreations.com/faq/#item56" class="d">Comment faire un arrière-plan &eacute;tirable ? - Alsacreations</a> - <span class="l">http://forum.alsacreations.com/faq/#item56</span><br /><span class="n">faire une image d'arrière plan qui s'agranda it ou se r&eacute;tr&eacute;cit avec le texte. (Tags: webmaster css)</span><br /><br />
+<a href="http://perso.orange.fr/coin.des.experts/" class="d">Le Coin des Experts</a> - <span class="l">http://perso.orange.fr/coin.des.experts/</span><br /><span class="n">quelques trucs utiles ? (Tags: system:unfiled)</span><br /><br />
+<a href="http://www.michaelbach.de/ot/index.html" class="d">Optical Illusions and Visual Phenomena</a> - <span class="l">http://www.michaelbach.de/ot/index.html</span><br /><span class="n">oh, un site sur les illutsion d'optique.... (Tags: fun)</span><br /><br />
+<a href="https://addons.mozilla.org/firefox/938" class="d">Dr.Web anti-virus link checker :: Mozilla Add-ons</a> - <span class="l">https://addons.mozilla.org/firefox/938</span><br /><span class="n">cete extension pour firefox permet de v&eacute;rifier si un fichier ne comporte pas de virus avant de le t&eacute;l&eacute;charger (Tags: firefox firefox_extension)</span><br /><br />
+<a href="http://ptaff.ca/xhtml/#css" class="d">XHTML:: Comment r&eacute;ussir</a> - <span class="l">http://ptaff.ca/xhtml/#css</span><br /><span class="n">un article interessant (Tags: webmaster xhtml)</span><br /><br />
+<a href="http://www.openweb.eu.org/articles/caracteres_illegaux/" class="d">Codage valide des caractères Windows ill&eacute;gaux en HTML et XHTML</a> - <span class="l">http://www.openweb.eu.org/articles/caracteres_illegaux/</span><br /><span class="n">une autre liste de caractères sp&eacute;ciaux (Tags: caractere speciaux)</span><br /><br />
+<a href="http://christ.bouthier.free.fr/index.html" class="d">Christophe Bouthier</a> - <span class="l">http://christ.bouthier.free.fr/index.html</span><br /><span class="n">un site qui a l'air interessant (Tags: site)</span><br /><br />
+<a href="http://forum.alsacreations.com/posting.php?action=newp&amp;tid=5547&amp;fid=20&amp;p=1&amp;q=48507" class="d">Donner le bon type MIME - Alsacr&eacute;ations</a> - <span class="l">http://forum.alsacreations.com/posting.php?action=newp&amp;tid=5547&amp;fid=20&amp;p=1&amp;q=48507</span><br /><span class="n">Serait-ce enfin la solution pour envoyer le bon type MIME selon le navigateur ? On dirait. Mais il faut activer le module url rewriting. (grrrr). Petit rappel : IE ne gère pas correctement la version 1.1 de http ni le type application/xhtml+xml (remarq (Tags: webmaster)</span><br /><br />
+<a href="http://www.validome.org/lang/fr/html/sidebar/" class="d">Barre lat&eacute;rale - Validateur HTML / XHTML / XML / WML</a> - <span class="l">http://www.validome.org/lang/fr/html/sidebar/</span><br /><span class="n">un plug-in pour IE qui permet de valider des sites WEB. En plus, le validateur a l'air très performant. (Tags: webmaster valid)</span><br /><br />
+<a href="http://wikipython.flibuste.net/" class="d">FrontPage - Wiki Python Fr</a> - <span class="l">http://wikipython.flibuste.net/</span><br /><span class="n">un site sur Python (Tags: programming)</span><br /><br />
+<a href="http://florian54.over-blog.net/" class="d">le blog florian54 par: Florian</a> - <span class="l">http://florian54.over-blog.net/</span><br /><span class="n">un blog interessant (Tags: blog fun)</span><br /><br />
+<a href="http://www.googoo.fr/lecteur_universel/" class="d">Lecteur de Fichiers Universel Online</a> - <span class="l">http://www.googoo.fr/lecteur_universel/</span><br /><span class="n">a tester (Tags: webmaster)</span><br /><br />
+<a href="http://www.w3.org/TR/html4/types.html" class="d">Basic HTML data types</a> - <span class="l">http://www.w3.org/TR/html4/types.html</span><br /><span class="n">les differents types de soctypes, de medias, de balises link/meta, etc.... très utile et complet (Tags: webmaster)</span><br /><br />
+<a href="http://download.zonelabs.com/bin/free/fr/zaAFR1079.html" class="d">Nouvelle version de ZA</a> - <span class="l">http://download.zonelabs.com/bin/free/fr/zaAFR1079.html</span><br /><span class="n">Une nouvelle version de Zone Alarm est disponible. Mais vu ce qui s'est pass&eacute; avec la pr&eacute;c&eacute;dente version, je vous coseille d'attendre avant de la t&eacute;l&eacute;charger. (Tags: logiciels securite)</span><br /><br />
+<a href="http://t2net.fr/outils/edit2web/index.html" class="d">edit2web</a> - <span class="l">http://t2net.fr/outils/edit2web/index.html</span><br /><span class="n">cette extension permet d'&eacute;diter le code d'une page, pour enlever les publicit&eacute;s par exemple (Tags: firefox firefox_extension)</span><br /><br />
+<a href="https://addons.mozilla.org/firefox/2703/" class="d">Snapper</a> - <span class="l">https://addons.mozilla.org/firefox/2703/</span><br /><span class="n">encore un extension qui permet cette fois de faire des captures d'&eacute;cran (Tags: firefox firefox_extension)</span><br /><br />
+<a href="https://addons.mozilla.org/firefox/2109/" class="d">Firefox Extension Backup</a> - <span class="l">https://addons.mozilla.org/firefox/2109/</span><br /><span class="n">Cette extension permet de sauvegarder vos mots de passe, historique, marque pages.... etc. Ressemble un peu a MozBackup (Tags: firefox firefox_extension)</span><br /><br />
+<a href="http://extensions.geckozone.org/vrs/" class="d">View-source-chart</a> - <span class="l">http://extensions.geckozone.org/vrs/</span><br /><span class="n">Cette extension pour Firefox permet de voir la source d'une page (Tags: firefox firefox_extension)</span><br /><br />
+<a href="http://tagsoup.com/-dev/null-/css/fixed/" class="d">Fixed Positioning for Windows Internet Explorer</a> - <span class="l">http://tagsoup.com/-dev/null-/css/fixed/</span><br /><span class="n">Encore une astce qui permet de contourner les bugs CSs d'IE (Tags: webmaster css)</span><br /><br />
+<a href="http://gcyrillus.free.fr/trucs_css/" class="d">Astuces</a> - <span class="l">http://gcyrillus.free.fr/trucs_css/</span><br /><span class="n">encore des astuces (Tags: webmaster)</span><br /><br />
+<a href="http://www.siteduzero.com/forum-83-6123-53117.html#r53117" class="d">Astuces xhtml/css</a> - <span class="l">http://www.siteduzero.com/forum-83-6123-53117.html#r53117</span><br /><span class="n">pratique (Tags: webmaster)</span><br /><br />
+<a href="http://www.commentcamarche.net/faq/sujet-893-messagerie-adresses-serveurs-pop-et-smtp-des-fai" class="d">[Messagerie] Adresses serveurs POP ET SMTP des FAI</a> - <span class="l">http://www.commentcamarche.net/faq/sujet-893-messagerie-adresses-serveurs-pop-et-smtp-des-fai</span><br /><span class="n"> (Tags: messagerie)</span><br /><br />
+<a href="http://fr.creativecommons.org/contrats.htm" class="d">Creative Commons France - les 6 contrats</a> - <span class="l">http://fr.creativecommons.org/contrats.htm</span><br /><span class="n"> (Tags: system:unfiled)</span><br /><br />
+<a href="http://www.w3.org/QA/Tips/" class="d">W3C QA - Quality Tips for Webmasters</a> - <span class="l">http://www.w3.org/QA/Tips/</span><br /><span class="n">des recommandations sur ce qu'il ne faut pas faire sur un site (Tags: webmaster)</span><br /><br />
+<a href="http://www.useit.com/alertbox/9605.html" class="d">Top Ten Mistakes in Web Design (Jakob Nielsen's Alertbox)</a> - <span class="l">http://www.useit.com/alertbox/9605.html</span><br /><span class="n">les 10 choses les plus exsap&eacute;rantes sur un site. (Tags: fun site)</span><br /><br />
+<a href="http://osswin.sourceforge.net/" class="d">The OSSwin project: Open Source for Windows!</a> - <span class="l">http://osswin.sourceforge.net/</span><br /><span class="n">Une liste de projets libres pour Windows (Tags: freeware gratuit windows)</span><br /><br />
+<a href="http://labs.google.com/" class="d">Google Labs</a> - <span class="l">http://labs.google.com/</span><br /><span class="n">des moteurs de recherches sp&eacute;cifiques de Google (Tags: web)</span><br /><br />
+<a href="http://labs.google.com/accessible/" class="d">Google Accessible Search</a> - <span class="l">http://labs.google.com/accessible/</span><br /><span class="n">Une version de google qui affiche en premier les sites les plus accessibles. (Tags: web webmaster site)</span><br /><br />
+<a href="http://cyberzoide.developpez.com/html/navigateurs/" class="d">Comparatif des navigateurs web - Club d'entraide des d&eacute;veloppeurs francophones</a> - <span class="l">http://cyberzoide.developpez.com/html/navigateurs/</span><br /><span class="n">Une liste très complète de navigateurs (d'ailleurs, regardez le classement.... Firefox est premier partout :) (Tags: browser web)</span><br /><br />
+<a href="http://www.commentcamarche.net/forum/affich-236418-nous-les-informaticiens" class="d">Nous les informaticiens</a> - <span class="l">http://www.commentcamarche.net/forum/affich-236418-nous-les-informaticiens</span><br /><span class="n">.... (Tags: fun)</span><br /><br />
+<a href="http://www.commentcamarche.net/forum/affich-2139295-ware" class="d">-ware</a> - <span class="l">http://www.commentcamarche.net/forum/affich-2139295-ware</span><br /><span class="n">Marrant (Tags: fun)</span><br /><br />
+<a href="http://jojaba.free.fr/traductions.htm" class="d">Traduction d'extensions pour les logiciels Mozilla</a> - <span class="l">http://jojaba.free.fr/traductions.htm</span><br /><span class="n">un site qui a l'air interessant. (Tags: extensions)</span><br /><br />
+<a href="http://danzcontrib2.free.fr/statistiques.php" class="d">Statistiques Navigateurs, d&eacute;tecter le navigateur avec PHP</a> - <span class="l">http://danzcontrib2.free.fr/statistiques.php</span><br /><span class="n"> (Tags: php webmaster site)</span><br /><br />
+<a href="http://friendlybit.com/html/encyclopedia-of-html-elements/" class="d">Encyclopedia of HTML elements - Friendly Bit</a> - <span class="l">http://friendlybit.com/html/encyclopedia-of-html-elements/</span><br /><span class="n">Une liste des balises html (encore) (Tags: xhtml webmaster site)</span><br /><br />
+<a href="http://www.amaryllidaceae.org/web-jardin/CSS/moz-border-radius.htm" class="d">-moz-border-radius : coins ronds avec Gecko</a> - <span class="l">http://www.amaryllidaceae.org/web-jardin/CSS/moz-border-radius.htm</span><br /><span class="n">Des exemples concrets sur l'utilisation des propri&eacute;t&eacute;s CSS 3 (Tags: css webmaster)</span><br /><br />
+<a href="http://xulfr.org/wiki/Reference/Css" class="d">wiki XULfr - Reference/Css</a> - <span class="l">http://xulfr.org/wiki/Reference/Css</span><br /><span class="n">Les propri&eacute;t&eacute;s CSS 3 (support&eacute;s par Firefox et autres navigateurs utilisant le moteur de rendu Gecko) qui s'appliquent aux bordures. (Tags: css webmaster)</span><br /><br />
+<a href="http://www.framasoft.net/article2077.html" class="d">AMSN - IRC / Chat - Logiciels Libres - Framasoft</a> - <span class="l">http://www.framasoft.net/article2077.html</span><br /><span class="n">aMSN remplace ais&eacute;ment MSN messenger. (Tags: chat messagerie)</span><br /><br />
+<a href="http://entraide.aceboard.fr/" class="d">Forum Entraide des Helpers</a> - <span class="l">http://entraide.aceboard.fr/</span><br /><span class="n">Un forum qui pourra vous rendre service si vous avez un problème de malware (Tags: securite)</span><br /><br />
+<a href="http://www.htmlhelp.com/" class="d">HTML Help by The Web Design Group</a> - <span class="l">http://www.htmlhelp.com/</span><br /><span class="n">un site qui a l'air interessant et utile (Tags: webmaster site)</span><br /><br />
+<a href="http://www.faqs.org/rfcs/rfc2822" class="d">RFC 2822 (rfc2822) - Internet Message Format</a> - <span class="l">http://www.faqs.org/rfcs/rfc2822</span><br /><span class="n"> (Tags: mail)</span><br /><br />
+<a href="http://cestadire.ch/" class="d">solutions libres pour les Webmasters</a> - <span class="l">http://cestadire.ch/</span><br /><span class="n">un site qui a l'air interessant (Tags: web)</span><br /><br />
+<a href="http://www.tableless.com.br/" class="d">Tableless - Web Standards com arroz e feijão.</a> - <span class="l">http://www.tableless.com.br/</span><br /><span class="n">Un site avec pas mal de tutoriels sur l'accessibilit&eacute;, et les technologies du WEB 2.0 (Ajax par exemple) et autres. Bon d'accord c'est en espagnol ou italien (j'ai l'impression), mais bon... (Tags: fun webmaster site)</span><br /><br />
+<a href="http://www.validome.org/" class="d">Validateur HTML / XHTML / XML / WML</a> - <span class="l">http://www.validome.org/</span><br /><span class="n">Encore un validateur (Tags: w3c standards xhtml)</span><br /><br />
+<a href="http://validateur.ca/" class="d">Validateur W3C Multipages pour une validation de site XHTML</a> - <span class="l">http://validateur.ca/</span><br /><span class="n">Ce validateur vous permet de valider l'ensemble des pages d'un site en une seule fois. un &eacute;norme gain de temps. (Tags: valid w3c xhtml)</span><br /><br />
+<a href="http://www.technicland.com/fixvirus.php3" class="d">D&eacute;tecteur de politesse</a> - <span class="l">http://www.technicland.com/fixvirus.php3</span><br /><span class="n">... (Tags: fun)</span><br /><br />
+<a href="http://mouserunner.com/Mozilla_and_Firefox_Games.html" class="d">Mozilla and Firefox Games</a> - <span class="l">http://mouserunner.com/Mozilla_and_Firefox_Games.html</span><br /><span class="n"> (Tags: firefox fun games)</span><br /><br />
+<a href="http://www.headbands.com/gspot/" class="d">GSpot Codec Information Appliance</a> - <span class="l">http://www.headbands.com/gspot/</span><br /><span class="n">un logiciel qui indique le codec dont on a besoin pour lire un fichier. (Tags: codec)</span><br /><br />
+<a href="http://www.gmer.net/" class="d">GMER</a> - <span class="l">http://www.gmer.net/</span><br /><span class="n">Un d&eacute;tecteur de rootkits pour windows (il existe aussi un logiciel de la soci&eacute;t&eacute; sysinternals (RootkitRevealer) et un logiciel de la soci&eacute;t&eacute; fsecure (blacklight)) (Tags: anti-rootkit)</span><br /><br />
+<a href="http://www.commentcamarche.net/faq/sujet-3045-tutoriels-tutoriels-de-logiciels" class="d">[Tutoriels] Tutoriels de logiciels - La solution</a> - <span class="l">http://www.commentcamarche.net/faq/sujet-3045-tutoriels-tutoriels-de-logiciels</span><br /><span class="n"> (Tags: tutoriel windows logiciels)</span><br /><br />
+<a href="http://www.anybrowser.com/siteviewer.html" class="d">AnyBrowser.COM</a> - <span class="l">http://www.anybrowser.com/siteviewer.html</span><br /><span class="n">Pratique, ce site permet de voir a quoi ressemble votre site si on desactive javascript et certains des CSS. (Tags: accessibilite)</span><br /><br />
+<a href="http://bluestorm.info/ZAP/" class="d">ZAP</a> - <span class="l">http://bluestorm.info/ZAP/</span><br /><span class="n">ZAP signifie zCode A Plusieurs. Le zCode est un langage d&eacute;vellop&eacute; par le site du zero. Le ZAP est donc un wiki, vous pouvez y participer. (Tags: wiki)</span><br /><br />
+<a href="http://www.vulgarisation-informatique.com/optimiser-php.php" class="d">Optimiser un script php</a> - <span class="l">http://www.vulgarisation-informatique.com/optimiser-php.php</span><br /><span class="n">voir aussi: http://www.phpdebutant.org/article147.php   http://www.blueshoes.org/en/developer/php_bench/ http://www.siteduzero.com/tuto-3-1600-1-optimiser-un-script-php.html (Tags: php)</span><br /><br />
+<a href="http://www.aliasdmc.fr/" class="d">Liste des balises html</a> - <span class="l">http://www.aliasdmc.fr/</span><br /><span class="n">et leurs &eacute;quivalent en CSS et javascript. (Tags: css xhtml)</span><br /><br />
+<a href="http://www.salemioche.net/" class="d">cr&eacute;er un site web ?</a> - <span class="l">http://www.salemioche.net/</span><br /><span class="n">je n'avais encore jamais vu ce site, ou il y a plusieurs tutoriaux sur les langages du web. (Tags: site webmaster)</span><br /><br />
+<a href="http://www.yazerty.net/category/Soft-spirit" class="d">Ce que votre browser internet revele de vous</a> - <span class="l">http://www.yazerty.net/category/Soft-spirit</span><br /><span class="n">Marrant. (Tags: fun)</span><br /><br />
+<a href="http://dominique.guebey.club.fr/tekno/lynx/lynx_com.htm" class="d">Navigateur Lynx, codes usuels</a> - <span class="l">http://dominique.guebey.club.fr/tekno/lynx/lynx_com.htm</span><br /><span class="n">Les touches utilis&eacute;es pour naviguer dans Lynx (Tags: lynx browser)</span><br /><br />
+<a href="http://lynx.isc.org/" class="d">Lynx, un navigateur en mode texte</a> - <span class="l">http://lynx.isc.org/</span><br /><span class="n">Pour des liens ou tester son site avec Lynx, voir : http://forum.alsacreations.com/topic-6-11061-1.html (Tags: lynx browser)</span><br /><br />
+<a href="http://www.freeantispam.org/" class="d">Free Anti Spam and Spyware Programs</a> - <span class="l">http://www.freeantispam.org/</span><br /><span class="n">Un site qui distribue des antispams et antispywares gratuits. (Tags: antispam antispyware gratuit)</span><br /><br />
+<a href="http://www.browserfirefox.com/" class="d">Your Firefox browser guide. Download it now!</a> - <span class="l">http://www.browserfirefox.com/</span><br /><span class="n">un autre site sur Firefox qui a l'air interessant. Je ne connaissais pas. (Tags: firefox)</span><br /><br />
+<a href="http://www.htmlhelp.com/reference/html40/entities/latin1.html" class="d">HTML 4.0 Latin-1 Entities</a> - <span class="l">http://www.htmlhelp.com/reference/html40/entities/latin1.html</span><br /><span class="n">Idem, mais avec plus de combinaisons que alt (Tags: caractere speciaux)</span><br /><br />
+<a href="http://www.starr.net/is/type/altnum-fr.html" class="d">Combinaisons De Nombre + Alt</a> - <span class="l">http://www.starr.net/is/type/altnum-fr.html</span><br /><span class="n">Cette page montre les caractères sp&eacute;ciaux que l'on peut &eacute;crire avec la touche [Alt] et une combinaison de chiffres (0356 par exemple). (Tags: caractere speciaux)</span><br /><br />
+<a href="http://www.generation-nt.com/processus/" class="d">Processus Windows</a> - <span class="l">http://www.generation-nt.com/processus/</span><br /><span class="n">Une liste de plein de processus Windows. (Tags: processus windows)</span><br /><br />
+<a href="http://www.commentcamarche.net/forum/affich-1312312-firefox-recherche-integre" class="d">Ajouter un moteur de recherche a Firefox</a> - <span class="l">http://www.commentcamarche.net/forum/affich-1312312-firefox-recherche-integre</span><br /><span class="n">Une manière très simple d'ajouter son propre moteur de recherche a firefox. très patique. (Tags: firefox firefox_add-on)</span><br /><br />
+<a href="http://www.concisefreeware.com/" class="d">Concise Freeware</a> - <span class="l">http://www.concisefreeware.com/</span><br /><span class="n">Un site de freeware (logiciel gratuit) très complet (Tags: freeware logiciels gratuit)</span><br /><br />
+<a href="http://www.commentcamarche.net/forum/affich-2256094-wga-supprimer-windows-genuine-advantage" class="d">D&eacute;sactiver le mouchard WGA</a> - <span class="l">http://www.commentcamarche.net/forum/affich-2256094-wga-supprimer-windows-genuine-advantage</span><br /><span class="n">Ce topic donne divers liens pour expliquer comment d&eacute;sactiver et desinstaller le progrmmae wga, un mouchard (?) de windows. (Tags: wga windows spyware)</span><br /><br />
+<a href="http://www.washington.edu/pine/" class="d">Pine Information Center</a> - <span class="l">http://www.washington.edu/pine/</span><br /><span class="n">Pine, un logiciel de messagerie en mode texte. (Tags: mail)</span><br /><br />
+<a href="http://www.freeantispam.org/gratuit/email-html.php" class="d">N'envoyez pas vos mails en html</a> - <span class="l">http://www.freeantispam.org/gratuit/email-html.php</span><br /><span class="n">Plusieurs bonnes raisons de ne pas envoyre ses e mails en html. pr&eacute;ferez le format texte. (Tags: mail)</span><br /><br />
+<a href="https://addons.mozilla.org/firefox/436/" class="d">SessionSaver .2 :: Mozilla Add-ons</a> - <span class="l">https://addons.mozilla.org/firefox/436/</span><br /><span class="n">Une extension pour firefox qui permet de sauvegarder sa session. je vais l'essayer (Tags: firefox firefox_add-on)</span><br /><br />
+<a href="http://www.blackboxsearch.com/" class="d">BLACK BOX SEARCH... no IP, no tracking cookies, no logging - EVER!</a> - <span class="l">http://www.blackboxsearch.com/</span><br /><span class="n">Permet d'utiliser un proxy pour &eacute;viter que les moteurs de recherche n'enregistrent vos recherches (trouv&eacute; sur les liens de sebsauvage) (Tags: internet privacy tools)</span><br /><br />
+<a href="http://xhtml.css.free.fr/" class="d">XHTML CSS</a> - <span class="l">http://xhtml.css.free.fr/</span><br /><span class="n">Un site qui a l'air interessant (Tags: xhtml css site webmaster)</span><br /><br />
+<a href="http://spins.us/tools/l33t.asp" class="d">Transformer du texte.</a> - <span class="l">http://spins.us/tools/l33t.asp</span><br /><span class="n">Avec ca, vous pouvez transformer votre text en "mode geek" (Tags: geek)</span><br /><br />
+<a href="http://www.startyourdev.com/" class="d">Plusieurs tutoriels sur les langages du web.</a> - <span class="l">http://www.startyourdev.com/</span><br /><span class="n"> (Tags: tutoriel webmaster)</span><br /><br />
+<a href="http://www.visibone.com/font/FontResults.html" class="d">Polices de caractère</a> - <span class="l">http://www.visibone.com/font/FontResults.html</span><br /><span class="n">une liste de polices de caractères. (Tags: police font caractere)</span><br /><br />
+<a href="http://www.siteduzero.com/tuto-3-6192-1-la-base-d-039-un-site-php.html" class="d">Une seule page pour le site.</a> - <span class="l">http://www.siteduzero.com/tuto-3-6192-1-la-base-d-039-un-site-php.html</span><br /><span class="n">Comment faire une seule page source en PHP, valide html, avec un titre qui change, bref, comme il faut. Très utile. (Tags: php webmaster)</span><br /><br />
+<a href="http://centricle.com/ref/css/filters/" class="d">centricle : css filters (css hacks)</a> - <span class="l">http://centricle.com/ref/css/filters/</span><br /><span class="n">un sch&eacute;ma qui mon tre plein de facons de cacher une propri&eacute;t&eacute; CSS a un ou des navigateurs. très complet. (Tags: css webmaster)</span><br /><br />
+<a href="http://loliwin.org/contenu.php" class="d">Logiciels Libres pour Windows</a> - <span class="l">http://loliwin.org/contenu.php</span><br /><span class="n"> (Tags: logiciels open-source)</span><br /><br />
+<a href="http://validateur-accessibilite.apinc.org/mode_emploi_validateur.htm" class="d">Validateur d'accessibilit&eacute;</a> - <span class="l">http://validateur-accessibilite.apinc.org/mode_emploi_validateur.htm</span><br /><span class="n">Pour v&eacute;rifier si votre site est accessible et si la s&eacute;mantique est bonne. (Tags: accessibilite)</span><br /><br />
+<a href="https://addons.mozilla.org/firefox/1532/" class="d">Extension foxylicious pour firefox</a> - <span class="l">https://addons.mozilla.org/firefox/1532/</span><br /><span class="n"> (Tags: firefox firefox_add-on del.icio.us)</span><br /><br />
+<a href="http://www.readwriteweb.com/archives/top_10_firefox_addons.php" class="d">Top 10 Firefox Web 2.0 Add-ons</a> - <span class="l">http://www.readwriteweb.com/archives/top_10_firefox_addons.php</span><br /><span class="n">Un classement des 10 meilleurs extensions pour firefox. (dont del.icio.us). (Tags: firefox_add-on)</span><br /><br />
+<a href="http://www.w3.org/QA/Tips/use-links" class="d">Use links in your document - Quality Web Tips</a> - <span class="l">http://www.w3.org/QA/Tips/use-links</span><br /><span class="n">Les recommandations du w3c : utiliser les &eacute;l&eacute;ments link. utile, a voir. (Tags: w3c standards xhtml)</span><br /><br />
+<a href="http://membres.lycos.fr/cestquoiwindows/" class="d">C'est quoi windows - Mon premier essai de ce système d'exploitation</a> - <span class="l">http://membres.lycos.fr/cestquoiwindows/</span><br /><span class="n">Un linuxien qui a essay&eacute; Windows. C'est assez parlant. (Tags: Windows Linux)</span><br /><br />
+<a href="https://www.youos.com/" class="d">Welcome to YouOS.</a> - <span class="l">https://www.youos.com/</span><br /><span class="n">Un système d'exploitation directement dans le navigateur (Tags: os youos)</span><br /><br />
+<a href="http://www.siteduzero.com/tuto-3-7340-1-colorer-son-code.html" class="d">GeSHI - colorer son code</a> - <span class="l">http://www.siteduzero.com/tuto-3-7340-1-colorer-son-code.html</span><br /><span class="n">pratique pour colorer du code sans utiliser span class... (Tags: webmaster)</span><br /><br />
+<a href="http://mozilla.tlk.fr/splash.php" class="d">Plein d'images mozilla</a> - <span class="l">http://mozilla.tlk.fr/splash.php</span><br /><span class="n"> (Tags: images mozilla)</span><br /><br />
+<a href="http://www.generation-nt.com/actualites/17335/mozilla-thunderbird-alpha-client-messagerie/" class="d">Mozilla Thunderbird 2.0 en alpha est de sortie</a> - <span class="l">http://www.generation-nt.com/actualites/17335/mozilla-thunderbird-alpha-client-messagerie/</span><br /><span class="n"> (Tags: mail thunderbird)</span><br /><br />
+<a href="http://www.html-kit.com/favicon/" class="d">FavIcon from Pics -- favicon.ico for your website</a> - <span class="l">http://www.html-kit.com/favicon/</span><br /><span class="n">faire une favicon a partir d'une image avec du texte d&eacute;filant (Tags: web icon)</span><br /><br />
+<a href="http://www.xhtml.net/xhtmlcss/favicon" class="d">Icônes de pages web, la favicon.ico - XHTML.net</a> - <span class="l">http://www.xhtml.net/xhtmlcss/favicon</span><br /><span class="n">ce qu'est une favicon, comment en faire une pour son site et autres (Tags: web site icon webmaster)</span><br /><br />
+</p>
+<hr class="fb" />
+<p class="note">Cette page &agrave; &eacute;t&eacute; cr&eacute;&eacute;e avec un programme de
+  <a href="http://www.sebsauvage.net/">S&eacute;bastien Sauvage</a>, que j'ai modifi&eacute;.<br />
+  Plus d'informations : <a href="/delxml/">instructions</a>
+</p>
+<?php require'../autres/source-bas.php'?>
blob - /dev/null
blob + d8a95f67c5d7c3bd01479be67f50e3e239022872 (mode 644)
--- /dev/null
+++ pages/menu.php
@@ -0,0 +1,5 @@
+<?php
+$titre='Menu';
+$SQL['TypePage']=2;
+require'../autres/source-haut.php';
+require'../autres/source-bas.php'?>
blob - /dev/null
blob + 4bf05a52365e10fe5a404ae641d3daaafa4505f2 (mode 644)
--- /dev/null
+++ pclzip.lib.php
@@ -0,0 +1,5694 @@
+<?php

+// --------------------------------------------------------------------------------

+// PhpConcept Library - Zip Module 2.8.2

+// --------------------------------------------------------------------------------

+// License GNU/LGPL - Vincent Blavet - August 2009

+// http://www.phpconcept.net

+// --------------------------------------------------------------------------------

+//

+// Presentation :

+//   PclZip is a PHP library that manage ZIP archives.

+//   So far tests show that archives generated by PclZip are readable by

+//   WinZip application and other tools.

+//

+// Description :

+//   See readme.txt and http://www.phpconcept.net

+//

+// Warning :

+//   This library and the associated files are non commercial, non professional

+//   work.

+//   It should not have unexpected results. However if any damage is caused by

+//   this software the author can not be responsible.

+//   The use of this software is at the risk of the user.

+//

+// --------------------------------------------------------------------------------

+// $Id: pclzip.lib.php,v 1.60 2009/09/30 21:01:04 vblavet Exp $

+// --------------------------------------------------------------------------------

+

+  // ----- Constants

+  if (!defined('PCLZIP_READ_BLOCK_SIZE')) {

+    define( 'PCLZIP_READ_BLOCK_SIZE', 2048 );

+  }

+  

+  // ----- File list separator

+  // In version 1.x of PclZip, the separator for file list is a space

+  // (which is not a very smart choice, specifically for windows paths !).

+  // A better separator should be a comma (,). This constant gives you the

+  // abilty to change that.

+  // However notice that changing this value, may have impact on existing

+  // scripts, using space separated filenames.

+  // Recommanded values for compatibility with older versions :

+  //define( 'PCLZIP_SEPARATOR', ' ' );

+  // Recommanded values for smart separation of filenames.

+  if (!defined('PCLZIP_SEPARATOR')) {

+    define( 'PCLZIP_SEPARATOR', ',' );

+  }

+

+  // ----- Error configuration

+  // 0 : PclZip Class integrated error handling

+  // 1 : PclError external library error handling. By enabling this

+  //     you must ensure that you have included PclError library.

+  // [2,...] : reserved for futur use

+  if (!defined('PCLZIP_ERROR_EXTERNAL')) {

+    define( 'PCLZIP_ERROR_EXTERNAL', 0 );

+  }

+

+  // ----- Optional static temporary directory

+  //       By default temporary files are generated in the script current

+  //       path.

+  //       If defined :

+  //       - MUST BE terminated by a '/'.

+  //       - MUST be a valid, already created directory

+  //       Samples :

+  // define( 'PCLZIP_TEMPORARY_DIR', '/temp/' );

+  // define( 'PCLZIP_TEMPORARY_DIR', 'C:/Temp/' );

+  if (!defined('PCLZIP_TEMPORARY_DIR')) {

+    define( 'PCLZIP_TEMPORARY_DIR', '' );

+  }

+

+  // ----- Optional threshold ratio for use of temporary files

+  //       Pclzip sense the size of the file to add/extract and decide to

+  //       use or not temporary file. The algorythm is looking for 

+  //       memory_limit of PHP and apply a ratio.

+  //       threshold = memory_limit * ratio.

+  //       Recommended values are under 0.5. Default 0.47.

+  //       Samples :

+  // define( 'PCLZIP_TEMPORARY_FILE_RATIO', 0.5 );

+  if (!defined('PCLZIP_TEMPORARY_FILE_RATIO')) {

+    define( 'PCLZIP_TEMPORARY_FILE_RATIO', 0.47 );

+  }

+

+// --------------------------------------------------------------------------------

+// ***** UNDER THIS LINE NOTHING NEEDS TO BE MODIFIED *****

+// --------------------------------------------------------------------------------

+

+  // ----- Global variables

+  $g_pclzip_version = "2.8.2";

+

+  // ----- Error codes

+  //   -1 : Unable to open file in binary write mode

+  //   -2 : Unable to open file in binary read mode

+  //   -3 : Invalid parameters

+  //   -4 : File does not exist

+  //   -5 : Filename is too long (max. 255)

+  //   -6 : Not a valid zip file

+  //   -7 : Invalid extracted file size

+  //   -8 : Unable to create directory

+  //   -9 : Invalid archive extension

+  //  -10 : Invalid archive format

+  //  -11 : Unable to delete file (unlink)

+  //  -12 : Unable to rename file (rename)

+  //  -13 : Invalid header checksum

+  //  -14 : Invalid archive size

+  define( 'PCLZIP_ERR_USER_ABORTED', 2 );

+  define( 'PCLZIP_ERR_NO_ERROR', 0 );

+  define( 'PCLZIP_ERR_WRITE_OPEN_FAIL', -1 );

+  define( 'PCLZIP_ERR_READ_OPEN_FAIL', -2 );

+  define( 'PCLZIP_ERR_INVALID_PARAMETER', -3 );

+  define( 'PCLZIP_ERR_MISSING_FILE', -4 );

+  define( 'PCLZIP_ERR_FILENAME_TOO_LONG', -5 );

+  define( 'PCLZIP_ERR_INVALID_ZIP', -6 );

+  define( 'PCLZIP_ERR_BAD_EXTRACTED_FILE', -7 );

+  define( 'PCLZIP_ERR_DIR_CREATE_FAIL', -8 );

+  define( 'PCLZIP_ERR_BAD_EXTENSION', -9 );

+  define( 'PCLZIP_ERR_BAD_FORMAT', -10 );

+  define( 'PCLZIP_ERR_DELETE_FILE_FAIL', -11 );

+  define( 'PCLZIP_ERR_RENAME_FILE_FAIL', -12 );

+  define( 'PCLZIP_ERR_BAD_CHECKSUM', -13 );

+  define( 'PCLZIP_ERR_INVALID_ARCHIVE_ZIP', -14 );

+  define( 'PCLZIP_ERR_MISSING_OPTION_VALUE', -15 );

+  define( 'PCLZIP_ERR_INVALID_OPTION_VALUE', -16 );

+  define( 'PCLZIP_ERR_ALREADY_A_DIRECTORY', -17 );

+  define( 'PCLZIP_ERR_UNSUPPORTED_COMPRESSION', -18 );

+  define( 'PCLZIP_ERR_UNSUPPORTED_ENCRYPTION', -19 );

+  define( 'PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE', -20 );

+  define( 'PCLZIP_ERR_DIRECTORY_RESTRICTION', -21 );

+

+  // ----- Options values

+  define( 'PCLZIP_OPT_PATH', 77001 );

+  define( 'PCLZIP_OPT_ADD_PATH', 77002 );

+  define( 'PCLZIP_OPT_REMOVE_PATH', 77003 );

+  define( 'PCLZIP_OPT_REMOVE_ALL_PATH', 77004 );

+  define( 'PCLZIP_OPT_SET_CHMOD', 77005 );

+  define( 'PCLZIP_OPT_EXTRACT_AS_STRING', 77006 );

+  define( 'PCLZIP_OPT_NO_COMPRESSION', 77007 );

+  define( 'PCLZIP_OPT_BY_NAME', 77008 );

+  define( 'PCLZIP_OPT_BY_INDEX', 77009 );

+  define( 'PCLZIP_OPT_BY_EREG', 77010 );

+  define( 'PCLZIP_OPT_BY_PREG', 77011 );

+  define( 'PCLZIP_OPT_COMMENT', 77012 );

+  define( 'PCLZIP_OPT_ADD_COMMENT', 77013 );

+  define( 'PCLZIP_OPT_PREPEND_COMMENT', 77014 );

+  define( 'PCLZIP_OPT_EXTRACT_IN_OUTPUT', 77015 );

+  define( 'PCLZIP_OPT_REPLACE_NEWER', 77016 );

+  define( 'PCLZIP_OPT_STOP_ON_ERROR', 77017 );

+  // Having big trouble with crypt. Need to multiply 2 long int

+  // which is not correctly supported by PHP ...

+  //define( 'PCLZIP_OPT_CRYPT', 77018 );

+  define( 'PCLZIP_OPT_EXTRACT_DIR_RESTRICTION', 77019 );

+  define( 'PCLZIP_OPT_TEMP_FILE_THRESHOLD', 77020 );

+  define( 'PCLZIP_OPT_ADD_TEMP_FILE_THRESHOLD', 77020 ); // alias

+  define( 'PCLZIP_OPT_TEMP_FILE_ON', 77021 );

+  define( 'PCLZIP_OPT_ADD_TEMP_FILE_ON', 77021 ); // alias

+  define( 'PCLZIP_OPT_TEMP_FILE_OFF', 77022 );

+  define( 'PCLZIP_OPT_ADD_TEMP_FILE_OFF', 77022 ); // alias

+  

+  // ----- File description attributes

+  define( 'PCLZIP_ATT_FILE_NAME', 79001 );

+  define( 'PCLZIP_ATT_FILE_NEW_SHORT_NAME', 79002 );

+  define( 'PCLZIP_ATT_FILE_NEW_FULL_NAME', 79003 );

+  define( 'PCLZIP_ATT_FILE_MTIME', 79004 );

+  define( 'PCLZIP_ATT_FILE_CONTENT', 79005 );

+  define( 'PCLZIP_ATT_FILE_COMMENT', 79006 );

+

+  // ----- Call backs values

+  define( 'PCLZIP_CB_PRE_EXTRACT', 78001 );

+  define( 'PCLZIP_CB_POST_EXTRACT', 78002 );

+  define( 'PCLZIP_CB_PRE_ADD', 78003 );

+  define( 'PCLZIP_CB_POST_ADD', 78004 );

+  /* For futur use

+  define( 'PCLZIP_CB_PRE_LIST', 78005 );

+  define( 'PCLZIP_CB_POST_LIST', 78006 );

+  define( 'PCLZIP_CB_PRE_DELETE', 78007 );

+  define( 'PCLZIP_CB_POST_DELETE', 78008 );

+  */

+

+  // --------------------------------------------------------------------------------

+  // Class : PclZip

+  // Description :

+  //   PclZip is the class that represent a Zip archive.

+  //   The public methods allow the manipulation of the archive.

+  // Attributes :

+  //   Attributes must not be accessed directly.

+  // Methods :

+  //   PclZip() : Object creator

+  //   create() : Creates the Zip archive

+  //   listContent() : List the content of the Zip archive

+  //   extract() : Extract the content of the archive

+  //   properties() : List the properties of the archive

+  // --------------------------------------------------------------------------------

+  class PclZip

+  {

+    // ----- Filename of the zip file

+    var $zipname = '';

+

+    // ----- File descriptor of the zip file

+    var $zip_fd = 0;

+

+    // ----- Internal error handling

+    var $error_code = 1;

+    var $error_string = '';

+    

+    // ----- Current status of the magic_quotes_runtime

+    // This value store the php configuration for magic_quotes

+    // The class can then disable the magic_quotes and reset it after

+    var $magic_quotes_status;

+

+  // --------------------------------------------------------------------------------

+  // Function : PclZip()

+  // Description :

+  //   Creates a PclZip object and set the name of the associated Zip archive

+  //   filename.

+  //   Note that no real action is taken, if the archive does not exist it is not

+  //   created. Use create() for that.

+  // --------------------------------------------------------------------------------

+  function PclZip($p_zipname)

+  {

+

+    // ----- Tests the zlib

+    if (!function_exists('gzopen'))

+    {

+      die('Abort '.basename(__FILE__).' : Missing zlib extensions');

+    }

+

+    // ----- Set the attributes

+    $this->zipname = $p_zipname;

+    $this->zip_fd = 0;

+    $this->magic_quotes_status = -1;

+

+    // ----- Return

+    return;

+  }

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function :

+  //   create($p_filelist, $p_add_dir="", $p_remove_dir="")

+  //   create($p_filelist, $p_option, $p_option_value, ...)

+  // Description :

+  //   This method supports two different synopsis. The first one is historical.

+  //   This method creates a Zip Archive. The Zip file is created in the

+  //   filesystem. The files and directories indicated in $p_filelist

+  //   are added in the archive. See the parameters description for the

+  //   supported format of $p_filelist.

+  //   When a directory is in the list, the directory and its content is added

+  //   in the archive.

+  //   In this synopsis, the function takes an optional variable list of

+  //   options. See bellow the supported options.

+  // Parameters :

+  //   $p_filelist : An array containing file or directory names, or

+  //                 a string containing one filename or one directory name, or

+  //                 a string containing a list of filenames and/or directory

+  //                 names separated by spaces.

+  //   $p_add_dir : A path to add before the real path of the archived file,

+  //                in order to have it memorized in the archive.

+  //   $p_remove_dir : A path to remove from the real path of the file to archive,

+  //                   in order to have a shorter path memorized in the archive.

+  //                   When $p_add_dir and $p_remove_dir are set, $p_remove_dir

+  //                   is removed first, before $p_add_dir is added.

+  // Options :

+  //   PCLZIP_OPT_ADD_PATH :

+  //   PCLZIP_OPT_REMOVE_PATH :

+  //   PCLZIP_OPT_REMOVE_ALL_PATH :

+  //   PCLZIP_OPT_COMMENT :

+  //   PCLZIP_CB_PRE_ADD :

+  //   PCLZIP_CB_POST_ADD :

+  // Return Values :

+  //   0 on failure,

+  //   The list of the added files, with a status of the add action.

+  //   (see PclZip::listContent() for list entry format)

+  // --------------------------------------------------------------------------------

+  function create($p_filelist)

+  {

+    $v_result=1;

+

+    // ----- Reset the error handler

+    $this->privErrorReset();

+

+    // ----- Set default values

+    $v_options = array();

+    $v_options[PCLZIP_OPT_NO_COMPRESSION] = FALSE;

+

+    // ----- Look for variable options arguments

+    $v_size = func_num_args();

+

+    // ----- Look for arguments

+    if ($v_size > 1) {

+      // ----- Get the arguments

+      $v_arg_list = func_get_args();

+

+      // ----- Remove from the options list the first argument

+      array_shift($v_arg_list);

+      $v_size--;

+

+      // ----- Look for first arg

+      if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) {

+

+        // ----- Parse the options

+        $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options,

+                                            array (PCLZIP_OPT_REMOVE_PATH => 'optional',

+                                                   PCLZIP_OPT_REMOVE_ALL_PATH => 'optional',

+                                                   PCLZIP_OPT_ADD_PATH => 'optional',

+                                                   PCLZIP_CB_PRE_ADD => 'optional',

+                                                   PCLZIP_CB_POST_ADD => 'optional',

+                                                   PCLZIP_OPT_NO_COMPRESSION => 'optional',

+                                                   PCLZIP_OPT_COMMENT => 'optional',

+                                                   PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional',

+                                                   PCLZIP_OPT_TEMP_FILE_ON => 'optional',

+                                                   PCLZIP_OPT_TEMP_FILE_OFF => 'optional'

+                                                   //, PCLZIP_OPT_CRYPT => 'optional'

+                                             ));

+        if ($v_result != 1) {

+          return 0;

+        }

+      }

+

+      // ----- Look for 2 args

+      // Here we need to support the first historic synopsis of the

+      // method.

+      else {

+

+        // ----- Get the first argument

+        $v_options[PCLZIP_OPT_ADD_PATH] = $v_arg_list[0];

+

+        // ----- Look for the optional second argument

+        if ($v_size == 2) {

+          $v_options[PCLZIP_OPT_REMOVE_PATH] = $v_arg_list[1];

+        }

+        else if ($v_size > 2) {

+          PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER,

+		                       "Invalid number / type of arguments");

+          return 0;

+        }

+      }

+    }

+    

+    // ----- Look for default option values

+    $this->privOptionDefaultThreshold($v_options);

+

+    // ----- Init

+    $v_string_list = array();

+    $v_att_list = array();

+    $v_filedescr_list = array();

+    $p_result_list = array();

+    

+    // ----- Look if the $p_filelist is really an array

+    if (is_array($p_filelist)) {

+    

+      // ----- Look if the first element is also an array

+      //       This will mean that this is a file description entry

+      if (isset($p_filelist[0]) && is_array($p_filelist[0])) {

+        $v_att_list = $p_filelist;

+      }

+      

+      // ----- The list is a list of string names

+      else {

+        $v_string_list = $p_filelist;

+      }

+    }

+

+    // ----- Look if the $p_filelist is a string

+    else if (is_string($p_filelist)) {

+      // ----- Create a list from the string

+      $v_string_list = explode(PCLZIP_SEPARATOR, $p_filelist);

+    }

+

+    // ----- Invalid variable type for $p_filelist

+    else {

+      PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_filelist");

+      return 0;

+    }

+    

+    // ----- Reformat the string list

+    if (sizeof($v_string_list) != 0) {

+      foreach ($v_string_list as $v_string) {

+        if ($v_string != '') {

+          $v_att_list[][PCLZIP_ATT_FILE_NAME] = $v_string;

+        }

+        else {

+        }

+      }

+    }

+    

+    // ----- For each file in the list check the attributes

+    $v_supported_attributes

+    = array ( PCLZIP_ATT_FILE_NAME => 'mandatory'

+             ,PCLZIP_ATT_FILE_NEW_SHORT_NAME => 'optional'

+             ,PCLZIP_ATT_FILE_NEW_FULL_NAME => 'optional'

+             ,PCLZIP_ATT_FILE_MTIME => 'optional'

+             ,PCLZIP_ATT_FILE_CONTENT => 'optional'

+             ,PCLZIP_ATT_FILE_COMMENT => 'optional'

+						);

+    foreach ($v_att_list as $v_entry) {

+      $v_result = $this->privFileDescrParseAtt($v_entry,

+                                               $v_filedescr_list[],

+                                               $v_options,

+                                               $v_supported_attributes);

+      if ($v_result != 1) {

+        return 0;

+      }

+    }

+

+    // ----- Expand the filelist (expand directories)

+    $v_result = $this->privFileDescrExpand($v_filedescr_list, $v_options);

+    if ($v_result != 1) {

+      return 0;

+    }

+

+    // ----- Call the create fct

+    $v_result = $this->privCreate($v_filedescr_list, $p_result_list, $v_options);

+    if ($v_result != 1) {

+      return 0;

+    }

+

+    // ----- Return

+    return $p_result_list;

+  }

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function :

+  //   add($p_filelist, $p_add_dir="", $p_remove_dir="")

+  //   add($p_filelist, $p_option, $p_option_value, ...)

+  // Description :

+  //   This method supports two synopsis. The first one is historical.

+  //   This methods add the list of files in an existing archive.

+  //   If a file with the same name already exists, it is added at the end of the

+  //   archive, the first one is still present.

+  //   If the archive does not exist, it is created.

+  // Parameters :

+  //   $p_filelist : An array containing file or directory names, or

+  //                 a string containing one filename or one directory name, or

+  //                 a string containing a list of filenames and/or directory

+  //                 names separated by spaces.

+  //   $p_add_dir : A path to add before the real path of the archived file,

+  //                in order to have it memorized in the archive.

+  //   $p_remove_dir : A path to remove from the real path of the file to archive,

+  //                   in order to have a shorter path memorized in the archive.

+  //                   When $p_add_dir and $p_remove_dir are set, $p_remove_dir

+  //                   is removed first, before $p_add_dir is added.

+  // Options :

+  //   PCLZIP_OPT_ADD_PATH :

+  //   PCLZIP_OPT_REMOVE_PATH :

+  //   PCLZIP_OPT_REMOVE_ALL_PATH :

+  //   PCLZIP_OPT_COMMENT :

+  //   PCLZIP_OPT_ADD_COMMENT :

+  //   PCLZIP_OPT_PREPEND_COMMENT :

+  //   PCLZIP_CB_PRE_ADD :

+  //   PCLZIP_CB_POST_ADD :

+  // Return Values :

+  //   0 on failure,

+  //   The list of the added files, with a status of the add action.

+  //   (see PclZip::listContent() for list entry format)

+  // --------------------------------------------------------------------------------

+  function add($p_filelist)

+  {

+    $v_result=1;

+

+    // ----- Reset the error handler

+    $this->privErrorReset();

+

+    // ----- Set default values

+    $v_options = array();

+    $v_options[PCLZIP_OPT_NO_COMPRESSION] = FALSE;

+

+    // ----- Look for variable options arguments

+    $v_size = func_num_args();

+

+    // ----- Look for arguments

+    if ($v_size > 1) {

+      // ----- Get the arguments

+      $v_arg_list = func_get_args();

+

+      // ----- Remove form the options list the first argument

+      array_shift($v_arg_list);

+      $v_size--;

+

+      // ----- Look for first arg

+      if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) {

+

+        // ----- Parse the options

+        $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options,

+                                            array (PCLZIP_OPT_REMOVE_PATH => 'optional',

+                                                   PCLZIP_OPT_REMOVE_ALL_PATH => 'optional',

+                                                   PCLZIP_OPT_ADD_PATH => 'optional',

+                                                   PCLZIP_CB_PRE_ADD => 'optional',

+                                                   PCLZIP_CB_POST_ADD => 'optional',

+                                                   PCLZIP_OPT_NO_COMPRESSION => 'optional',

+                                                   PCLZIP_OPT_COMMENT => 'optional',

+                                                   PCLZIP_OPT_ADD_COMMENT => 'optional',

+                                                   PCLZIP_OPT_PREPEND_COMMENT => 'optional',

+                                                   PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional',

+                                                   PCLZIP_OPT_TEMP_FILE_ON => 'optional',

+                                                   PCLZIP_OPT_TEMP_FILE_OFF => 'optional'

+                                                   //, PCLZIP_OPT_CRYPT => 'optional'

+												   ));

+        if ($v_result != 1) {

+          return 0;

+        }

+      }

+

+      // ----- Look for 2 args

+      // Here we need to support the first historic synopsis of the

+      // method.

+      else {

+

+        // ----- Get the first argument

+        $v_options[PCLZIP_OPT_ADD_PATH] = $v_add_path = $v_arg_list[0];

+

+        // ----- Look for the optional second argument

+        if ($v_size == 2) {

+          $v_options[PCLZIP_OPT_REMOVE_PATH] = $v_arg_list[1];

+        }

+        else if ($v_size > 2) {

+          // ----- Error log

+          PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments");

+

+          // ----- Return

+          return 0;

+        }

+      }

+    }

+

+    // ----- Look for default option values

+    $this->privOptionDefaultThreshold($v_options);

+

+    // ----- Init

+    $v_string_list = array();

+    $v_att_list = array();

+    $v_filedescr_list = array();

+    $p_result_list = array();

+    

+    // ----- Look if the $p_filelist is really an array

+    if (is_array($p_filelist)) {

+    

+      // ----- Look if the first element is also an array

+      //       This will mean that this is a file description entry

+      if (isset($p_filelist[0]) && is_array($p_filelist[0])) {

+        $v_att_list = $p_filelist;

+      }

+      

+      // ----- The list is a list of string names

+      else {

+        $v_string_list = $p_filelist;

+      }

+    }

+

+    // ----- Look if the $p_filelist is a string

+    else if (is_string($p_filelist)) {

+      // ----- Create a list from the string

+      $v_string_list = explode(PCLZIP_SEPARATOR, $p_filelist);

+    }

+

+    // ----- Invalid variable type for $p_filelist

+    else {

+      PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type '".gettype($p_filelist)."' for p_filelist");

+      return 0;

+    }

+    

+    // ----- Reformat the string list

+    if (sizeof($v_string_list) != 0) {

+      foreach ($v_string_list as $v_string) {

+        $v_att_list[][PCLZIP_ATT_FILE_NAME] = $v_string;

+      }

+    }

+    

+    // ----- For each file in the list check the attributes

+    $v_supported_attributes

+    = array ( PCLZIP_ATT_FILE_NAME => 'mandatory'

+             ,PCLZIP_ATT_FILE_NEW_SHORT_NAME => 'optional'

+             ,PCLZIP_ATT_FILE_NEW_FULL_NAME => 'optional'

+             ,PCLZIP_ATT_FILE_MTIME => 'optional'

+             ,PCLZIP_ATT_FILE_CONTENT => 'optional'

+             ,PCLZIP_ATT_FILE_COMMENT => 'optional'

+						);

+    foreach ($v_att_list as $v_entry) {

+      $v_result = $this->privFileDescrParseAtt($v_entry,

+                                               $v_filedescr_list[],

+                                               $v_options,

+                                               $v_supported_attributes);

+      if ($v_result != 1) {

+        return 0;

+      }

+    }

+

+    // ----- Expand the filelist (expand directories)

+    $v_result = $this->privFileDescrExpand($v_filedescr_list, $v_options);

+    if ($v_result != 1) {

+      return 0;

+    }

+

+    // ----- Call the create fct

+    $v_result = $this->privAdd($v_filedescr_list, $p_result_list, $v_options);

+    if ($v_result != 1) {

+      return 0;

+    }

+

+    // ----- Return

+    return $p_result_list;

+  }

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function : listContent()

+  // Description :

+  //   This public method, gives the list of the files and directories, with their

+  //   properties.

+  //   The properties of each entries in the list are (used also in other functions) :

+  //     filename : Name of the file. For a create or add action it is the filename

+  //                given by the user. For an extract function it is the filename

+  //                of the extracted file.

+  //     stored_filename : Name of the file / directory stored in the archive.

+  //     size : Size of the stored file.

+  //     compressed_size : Size of the file's data compressed in the archive

+  //                       (without the headers overhead)

+  //     mtime : Last known modification date of the file (UNIX timestamp)

+  //     comment : Comment associated with the file

+  //     folder : true | false

+  //     index : index of the file in the archive

+  //     status : status of the action (depending of the action) :

+  //              Values are :

+  //                ok : OK !

+  //                filtered : the file / dir is not extracted (filtered by user)

+  //                already_a_directory : the file can not be extracted because a

+  //                                      directory with the same name already exists

+  //                write_protected : the file can not be extracted because a file

+  //                                  with the same name already exists and is

+  //                                  write protected

+  //                newer_exist : the file was not extracted because a newer file exists

+  //                path_creation_fail : the file is not extracted because the folder

+  //                                     does not exist and can not be created

+  //                write_error : the file was not extracted because there was a

+  //                              error while writing the file

+  //                read_error : the file was not extracted because there was a error

+  //                             while reading the file

+  //                invalid_header : the file was not extracted because of an archive

+  //                                 format error (bad file header)

+  //   Note that each time a method can continue operating when there

+  //   is an action error on a file, the error is only logged in the file status.

+  // Return Values :

+  //   0 on an unrecoverable failure,

+  //   The list of the files in the archive.

+  // --------------------------------------------------------------------------------

+  function listContent()

+  {

+    $v_result=1;

+

+    // ----- Reset the error handler

+    $this->privErrorReset();

+

+    // ----- Check archive

+    if (!$this->privCheckFormat()) {

+      return(0);

+    }

+

+    // ----- Call the extracting fct

+    $p_list = array();

+    if (($v_result = $this->privList($p_list)) != 1)

+    {

+      unset($p_list);

+      return(0);

+    }

+

+    // ----- Return

+    return $p_list;

+  }

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function :

+  //   extract($p_path="./", $p_remove_path="")

+  //   extract([$p_option, $p_option_value, ...])

+  // Description :

+  //   This method supports two synopsis. The first one is historical.

+  //   This method extract all the files / directories from the archive to the

+  //   folder indicated in $p_path.

+  //   If you want to ignore the 'root' part of path of the memorized files

+  //   you can indicate this in the optional $p_remove_path parameter.

+  //   By default, if a newer file with the same name already exists, the

+  //   file is not extracted.

+  //

+  //   If both PCLZIP_OPT_PATH and PCLZIP_OPT_ADD_PATH aoptions

+  //   are used, the path indicated in PCLZIP_OPT_ADD_PATH is append

+  //   at the end of the path value of PCLZIP_OPT_PATH.

+  // Parameters :

+  //   $p_path : Path where the files and directories are to be extracted

+  //   $p_remove_path : First part ('root' part) of the memorized path

+  //                    (if any similar) to remove while extracting.

+  // Options :

+  //   PCLZIP_OPT_PATH :

+  //   PCLZIP_OPT_ADD_PATH :

+  //   PCLZIP_OPT_REMOVE_PATH :

+  //   PCLZIP_OPT_REMOVE_ALL_PATH :

+  //   PCLZIP_CB_PRE_EXTRACT :

+  //   PCLZIP_CB_POST_EXTRACT :

+  // Return Values :

+  //   0 or a negative value on failure,

+  //   The list of the extracted files, with a status of the action.

+  //   (see PclZip::listContent() for list entry format)

+  // --------------------------------------------------------------------------------

+  function extract()

+  {

+    $v_result=1;

+

+    // ----- Reset the error handler

+    $this->privErrorReset();

+

+    // ----- Check archive

+    if (!$this->privCheckFormat()) {

+      return(0);

+    }

+

+    // ----- Set default values

+    $v_options = array();

+//    $v_path = "./";

+    $v_path = '';

+    $v_remove_path = "";

+    $v_remove_all_path = false;

+

+    // ----- Look for variable options arguments

+    $v_size = func_num_args();

+

+    // ----- Default values for option

+    $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE;

+

+    // ----- Look for arguments

+    if ($v_size > 0) {

+      // ----- Get the arguments

+      $v_arg_list = func_get_args();

+

+      // ----- Look for first arg

+      if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) {

+

+        // ----- Parse the options

+        $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options,

+                                            array (PCLZIP_OPT_PATH => 'optional',

+                                                   PCLZIP_OPT_REMOVE_PATH => 'optional',

+                                                   PCLZIP_OPT_REMOVE_ALL_PATH => 'optional',

+                                                   PCLZIP_OPT_ADD_PATH => 'optional',

+                                                   PCLZIP_CB_PRE_EXTRACT => 'optional',

+                                                   PCLZIP_CB_POST_EXTRACT => 'optional',

+                                                   PCLZIP_OPT_SET_CHMOD => 'optional',

+                                                   PCLZIP_OPT_BY_NAME => 'optional',

+                                                   PCLZIP_OPT_BY_EREG => 'optional',

+                                                   PCLZIP_OPT_BY_PREG => 'optional',

+                                                   PCLZIP_OPT_BY_INDEX => 'optional',

+                                                   PCLZIP_OPT_EXTRACT_AS_STRING => 'optional',

+                                                   PCLZIP_OPT_EXTRACT_IN_OUTPUT => 'optional',

+                                                   PCLZIP_OPT_REPLACE_NEWER => 'optional'

+                                                   ,PCLZIP_OPT_STOP_ON_ERROR => 'optional'

+                                                   ,PCLZIP_OPT_EXTRACT_DIR_RESTRICTION => 'optional',

+                                                   PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional',

+                                                   PCLZIP_OPT_TEMP_FILE_ON => 'optional',

+                                                   PCLZIP_OPT_TEMP_FILE_OFF => 'optional'

+												    ));

+        if ($v_result != 1) {

+          return 0;

+        }

+

+        // ----- Set the arguments

+        if (isset($v_options[PCLZIP_OPT_PATH])) {

+          $v_path = $v_options[PCLZIP_OPT_PATH];

+        }

+        if (isset($v_options[PCLZIP_OPT_REMOVE_PATH])) {

+          $v_remove_path = $v_options[PCLZIP_OPT_REMOVE_PATH];

+        }

+        if (isset($v_options[PCLZIP_OPT_REMOVE_ALL_PATH])) {

+          $v_remove_all_path = $v_options[PCLZIP_OPT_REMOVE_ALL_PATH];

+        }

+        if (isset($v_options[PCLZIP_OPT_ADD_PATH])) {

+          // ----- Check for '/' in last path char

+          if ((strlen($v_path) > 0) && (substr($v_path, -1) != '/')) {

+            $v_path .= '/';

+          }

+          $v_path .= $v_options[PCLZIP_OPT_ADD_PATH];

+        }

+      }

+

+      // ----- Look for 2 args

+      // Here we need to support the first historic synopsis of the

+      // method.

+      else {

+

+        // ----- Get the first argument

+        $v_path = $v_arg_list[0];

+

+        // ----- Look for the optional second argument

+        if ($v_size == 2) {

+          $v_remove_path = $v_arg_list[1];

+        }

+        else if ($v_size > 2) {

+          // ----- Error log

+          PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments");

+

+          // ----- Return

+          return 0;

+        }

+      }

+    }

+

+    // ----- Look for default option values

+    $this->privOptionDefaultThreshold($v_options);

+

+    // ----- Trace

+

+    // ----- Call the extracting fct

+    $p_list = array();

+    $v_result = $this->privExtractByRule($p_list, $v_path, $v_remove_path,

+	                                     $v_remove_all_path, $v_options);

+    if ($v_result < 1) {

+      unset($p_list);

+      return(0);

+    }

+

+    // ----- Return

+    return $p_list;

+  }

+  // --------------------------------------------------------------------------------

+

+

+  // --------------------------------------------------------------------------------

+  // Function :

+  //   extractByIndex($p_index, $p_path="./", $p_remove_path="")

+  //   extractByIndex($p_index, [$p_option, $p_option_value, ...])

+  // Description :

+  //   This method supports two synopsis. The first one is historical.

+  //   This method is doing a partial extract of the archive.

+  //   The extracted files or folders are identified by their index in the

+  //   archive (from 0 to n).

+  //   Note that if the index identify a folder, only the folder entry is

+  //   extracted, not all the files included in the archive.

+  // Parameters :

+  //   $p_index : A single index (integer) or a string of indexes of files to

+  //              extract. The form of the string is "0,4-6,8-12" with only numbers

+  //              and '-' for range or ',' to separate ranges. No spaces or ';'

+  //              are allowed.

+  //   $p_path : Path where the files and directories are to be extracted

+  //   $p_remove_path : First part ('root' part) of the memorized path

+  //                    (if any similar) to remove while extracting.

+  // Options :

+  //   PCLZIP_OPT_PATH :

+  //   PCLZIP_OPT_ADD_PATH :

+  //   PCLZIP_OPT_REMOVE_PATH :

+  //   PCLZIP_OPT_REMOVE_ALL_PATH :

+  //   PCLZIP_OPT_EXTRACT_AS_STRING : The files are extracted as strings and

+  //     not as files.

+  //     The resulting content is in a new field 'content' in the file

+  //     structure.

+  //     This option must be used alone (any other options are ignored).

+  //   PCLZIP_CB_PRE_EXTRACT :

+  //   PCLZIP_CB_POST_EXTRACT :

+  // Return Values :

+  //   0 on failure,

+  //   The list of the extracted files, with a status of the action.

+  //   (see PclZip::listContent() for list entry format)

+  // --------------------------------------------------------------------------------

+  //function extractByIndex($p_index, options...)

+  function extractByIndex($p_index)

+  {

+    $v_result=1;

+

+    // ----- Reset the error handler

+    $this->privErrorReset();

+

+    // ----- Check archive

+    if (!$this->privCheckFormat()) {

+      return(0);

+    }

+

+    // ----- Set default values

+    $v_options = array();

+//    $v_path = "./";

+    $v_path = '';

+    $v_remove_path = "";

+    $v_remove_all_path = false;

+

+    // ----- Look for variable options arguments

+    $v_size = func_num_args();

+

+    // ----- Default values for option

+    $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE;

+

+    // ----- Look for arguments

+    if ($v_size > 1) {

+      // ----- Get the arguments

+      $v_arg_list = func_get_args();

+

+      // ----- Remove form the options list the first argument

+      array_shift($v_arg_list);

+      $v_size--;

+

+      // ----- Look for first arg

+      if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) {

+

+        // ----- Parse the options

+        $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options,

+                                            array (PCLZIP_OPT_PATH => 'optional',

+                                                   PCLZIP_OPT_REMOVE_PATH => 'optional',

+                                                   PCLZIP_OPT_REMOVE_ALL_PATH => 'optional',

+                                                   PCLZIP_OPT_EXTRACT_AS_STRING => 'optional',

+                                                   PCLZIP_OPT_ADD_PATH => 'optional',

+                                                   PCLZIP_CB_PRE_EXTRACT => 'optional',

+                                                   PCLZIP_CB_POST_EXTRACT => 'optional',

+                                                   PCLZIP_OPT_SET_CHMOD => 'optional',

+                                                   PCLZIP_OPT_REPLACE_NEWER => 'optional'

+                                                   ,PCLZIP_OPT_STOP_ON_ERROR => 'optional'

+                                                   ,PCLZIP_OPT_EXTRACT_DIR_RESTRICTION => 'optional',

+                                                   PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional',

+                                                   PCLZIP_OPT_TEMP_FILE_ON => 'optional',

+                                                   PCLZIP_OPT_TEMP_FILE_OFF => 'optional'

+												   ));

+        if ($v_result != 1) {

+          return 0;

+        }

+

+        // ----- Set the arguments

+        if (isset($v_options[PCLZIP_OPT_PATH])) {

+          $v_path = $v_options[PCLZIP_OPT_PATH];

+        }

+        if (isset($v_options[PCLZIP_OPT_REMOVE_PATH])) {

+          $v_remove_path = $v_options[PCLZIP_OPT_REMOVE_PATH];

+        }

+        if (isset($v_options[PCLZIP_OPT_REMOVE_ALL_PATH])) {

+          $v_remove_all_path = $v_options[PCLZIP_OPT_REMOVE_ALL_PATH];

+        }

+        if (isset($v_options[PCLZIP_OPT_ADD_PATH])) {

+          // ----- Check for '/' in last path char

+          if ((strlen($v_path) > 0) && (substr($v_path, -1) != '/')) {

+            $v_path .= '/';

+          }

+          $v_path .= $v_options[PCLZIP_OPT_ADD_PATH];

+        }

+        if (!isset($v_options[PCLZIP_OPT_EXTRACT_AS_STRING])) {

+          $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE;

+        }

+        else {

+        }

+      }

+

+      // ----- Look for 2 args

+      // Here we need to support the first historic synopsis of the

+      // method.

+      else {

+

+        // ----- Get the first argument

+        $v_path = $v_arg_list[0];

+

+        // ----- Look for the optional second argument

+        if ($v_size == 2) {

+          $v_remove_path = $v_arg_list[1];

+        }

+        else if ($v_size > 2) {

+          // ----- Error log

+          PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments");

+

+          // ----- Return

+          return 0;

+        }

+      }

+    }

+

+    // ----- Trace

+

+    // ----- Trick

+    // Here I want to reuse extractByRule(), so I need to parse the $p_index

+    // with privParseOptions()

+    $v_arg_trick = array (PCLZIP_OPT_BY_INDEX, $p_index);

+    $v_options_trick = array();

+    $v_result = $this->privParseOptions($v_arg_trick, sizeof($v_arg_trick), $v_options_trick,

+                                        array (PCLZIP_OPT_BY_INDEX => 'optional' ));

+    if ($v_result != 1) {

+        return 0;

+    }

+    $v_options[PCLZIP_OPT_BY_INDEX] = $v_options_trick[PCLZIP_OPT_BY_INDEX];

+

+    // ----- Look for default option values

+    $this->privOptionDefaultThreshold($v_options);

+

+    // ----- Call the extracting fct

+    if (($v_result = $this->privExtractByRule($p_list, $v_path, $v_remove_path, $v_remove_all_path, $v_options)) < 1) {

+        return(0);

+    }

+

+    // ----- Return

+    return $p_list;

+  }

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function :

+  //   delete([$p_option, $p_option_value, ...])

+  // Description :

+  //   This method removes files from the archive.

+  //   If no parameters are given, then all the archive is emptied.

+  // Parameters :

+  //   None or optional arguments.

+  // Options :

+  //   PCLZIP_OPT_BY_INDEX :

+  //   PCLZIP_OPT_BY_NAME :

+  //   PCLZIP_OPT_BY_EREG : 

+  //   PCLZIP_OPT_BY_PREG :

+  // Return Values :

+  //   0 on failure,

+  //   The list of the files which are still present in the archive.

+  //   (see PclZip::listContent() for list entry format)

+  // --------------------------------------------------------------------------------

+  function delete()

+  {

+    $v_result=1;

+

+    // ----- Reset the error handler

+    $this->privErrorReset();

+

+    // ----- Check archive

+    if (!$this->privCheckFormat()) {

+      return(0);

+    }

+

+    // ----- Set default values

+    $v_options = array();

+

+    // ----- Look for variable options arguments

+    $v_size = func_num_args();

+

+    // ----- Look for arguments

+    if ($v_size > 0) {

+      // ----- Get the arguments

+      $v_arg_list = func_get_args();

+

+      // ----- Parse the options

+      $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options,

+                                        array (PCLZIP_OPT_BY_NAME => 'optional',

+                                               PCLZIP_OPT_BY_EREG => 'optional',

+                                               PCLZIP_OPT_BY_PREG => 'optional',

+                                               PCLZIP_OPT_BY_INDEX => 'optional' ));

+      if ($v_result != 1) {

+          return 0;

+      }

+    }

+

+    // ----- Magic quotes trick

+    $this->privDisableMagicQuotes();

+

+    // ----- Call the delete fct

+    $v_list = array();

+    if (($v_result = $this->privDeleteByRule($v_list, $v_options)) != 1) {

+      $this->privSwapBackMagicQuotes();

+      unset($v_list);

+      return(0);

+    }

+

+    // ----- Magic quotes trick

+    $this->privSwapBackMagicQuotes();

+

+    // ----- Return

+    return $v_list;

+  }

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function : deleteByIndex()

+  // Description :

+  //   ***** Deprecated *****

+  //   delete(PCLZIP_OPT_BY_INDEX, $p_index) should be prefered.

+  // --------------------------------------------------------------------------------

+  function deleteByIndex($p_index)

+  {

+    

+    $p_list = $this->delete(PCLZIP_OPT_BY_INDEX, $p_index);

+

+    // ----- Return

+    return $p_list;

+  }

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function : properties()

+  // Description :

+  //   This method gives the properties of the archive.

+  //   The properties are :

+  //     nb : Number of files in the archive

+  //     comment : Comment associated with the archive file

+  //     status : not_exist, ok

+  // Parameters :

+  //   None

+  // Return Values :

+  //   0 on failure,

+  //   An array with the archive properties.

+  // --------------------------------------------------------------------------------

+  function properties()

+  {

+

+    // ----- Reset the error handler

+    $this->privErrorReset();

+

+    // ----- Magic quotes trick

+    $this->privDisableMagicQuotes();

+

+    // ----- Check archive

+    if (!$this->privCheckFormat()) {

+      $this->privSwapBackMagicQuotes();

+      return(0);

+    }

+

+    // ----- Default properties

+    $v_prop = array();

+    $v_prop['comment'] = '';

+    $v_prop['nb'] = 0;

+    $v_prop['status'] = 'not_exist';

+

+    // ----- Look if file exists

+    if (@is_file($this->zipname))

+    {

+      // ----- Open the zip file

+      if (($this->zip_fd = @fopen($this->zipname, 'rb')) == 0)

+      {

+        $this->privSwapBackMagicQuotes();

+        

+        // ----- Error log

+        PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in binary read mode');

+

+        // ----- Return

+        return 0;

+      }

+

+      // ----- Read the central directory informations

+      $v_central_dir = array();

+      if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1)

+      {

+        $this->privSwapBackMagicQuotes();

+        return 0;

+      }

+

+      // ----- Close the zip file

+      $this->privCloseFd();

+

+      // ----- Set the user attributes

+      $v_prop['comment'] = $v_central_dir['comment'];

+      $v_prop['nb'] = $v_central_dir['entries'];

+      $v_prop['status'] = 'ok';

+    }

+

+    // ----- Magic quotes trick

+    $this->privSwapBackMagicQuotes();

+

+    // ----- Return

+    return $v_prop;

+  }

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function : duplicate()

+  // Description :

+  //   This method creates an archive by copying the content of an other one. If

+  //   the archive already exist, it is replaced by the new one without any warning.

+  // Parameters :

+  //   $p_archive : The filename of a valid archive, or

+  //                a valid PclZip object.

+  // Return Values :

+  //   1 on success.

+  //   0 or a negative value on error (error code).

+  // --------------------------------------------------------------------------------

+  function duplicate($p_archive)

+  {

+    $v_result = 1;

+

+    // ----- Reset the error handler

+    $this->privErrorReset();

+

+    // ----- Look if the $p_archive is a PclZip object

+    if ((is_object($p_archive)) && (get_class($p_archive) == 'pclzip'))

+    {

+

+      // ----- Duplicate the archive

+      $v_result = $this->privDuplicate($p_archive->zipname);

+    }

+

+    // ----- Look if the $p_archive is a string (so a filename)

+    else if (is_string($p_archive))

+    {

+

+      // ----- Check that $p_archive is a valid zip file

+      // TBC : Should also check the archive format

+      if (!is_file($p_archive)) {

+        // ----- Error log

+        PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "No file with filename '".$p_archive."'");

+        $v_result = PCLZIP_ERR_MISSING_FILE;

+      }

+      else {

+        // ----- Duplicate the archive

+        $v_result = $this->privDuplicate($p_archive);

+      }

+    }

+

+    // ----- Invalid variable

+    else

+    {

+      // ----- Error log

+      PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_archive_to_add");

+      $v_result = PCLZIP_ERR_INVALID_PARAMETER;

+    }

+

+    // ----- Return

+    return $v_result;

+  }

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function : merge()

+  // Description :

+  //   This method merge the $p_archive_to_add archive at the end of the current

+  //   one ($this).

+  //   If the archive ($this) does not exist, the merge becomes a duplicate.

+  //   If the $p_archive_to_add archive does not exist, the merge is a success.

+  // Parameters :

+  //   $p_archive_to_add : It can be directly the filename of a valid zip archive,

+  //                       or a PclZip object archive.

+  // Return Values :

+  //   1 on success,

+  //   0 or negative values on error (see below).

+  // --------------------------------------------------------------------------------

+  function merge($p_archive_to_add)

+  {

+    $v_result = 1;

+

+    // ----- Reset the error handler

+    $this->privErrorReset();

+

+    // ----- Check archive

+    if (!$this->privCheckFormat()) {

+      return(0);

+    }

+

+    // ----- Look if the $p_archive_to_add is a PclZip object

+    if ((is_object($p_archive_to_add)) && (get_class($p_archive_to_add) == 'pclzip'))

+    {

+

+      // ----- Merge the archive

+      $v_result = $this->privMerge($p_archive_to_add);

+    }

+

+    // ----- Look if the $p_archive_to_add is a string (so a filename)

+    else if (is_string($p_archive_to_add))

+    {

+

+      // ----- Create a temporary archive

+      $v_object_archive = new PclZip($p_archive_to_add);

+

+      // ----- Merge the archive

+      $v_result = $this->privMerge($v_object_archive);

+    }

+

+    // ----- Invalid variable

+    else

+    {

+      // ----- Error log

+      PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_archive_to_add");

+      $v_result = PCLZIP_ERR_INVALID_PARAMETER;

+    }

+

+    // ----- Return

+    return $v_result;

+  }

+  // --------------------------------------------------------------------------------

+

+

+

+  // --------------------------------------------------------------------------------

+  // Function : errorCode()

+  // Description :

+  // Parameters :

+  // --------------------------------------------------------------------------------

+  function errorCode()

+  {

+    if (PCLZIP_ERROR_EXTERNAL == 1) {

+      return(PclErrorCode());

+    }

+    else {

+      return($this->error_code);

+    }

+  }

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function : errorName()

+  // Description :

+  // Parameters :

+  // --------------------------------------------------------------------------------

+  function errorName($p_with_code=false)

+  {

+    $v_name = array ( PCLZIP_ERR_NO_ERROR => 'PCLZIP_ERR_NO_ERROR',

+                      PCLZIP_ERR_WRITE_OPEN_FAIL => 'PCLZIP_ERR_WRITE_OPEN_FAIL',

+                      PCLZIP_ERR_READ_OPEN_FAIL => 'PCLZIP_ERR_READ_OPEN_FAIL',

+                      PCLZIP_ERR_INVALID_PARAMETER => 'PCLZIP_ERR_INVALID_PARAMETER',

+                      PCLZIP_ERR_MISSING_FILE => 'PCLZIP_ERR_MISSING_FILE',

+                      PCLZIP_ERR_FILENAME_TOO_LONG => 'PCLZIP_ERR_FILENAME_TOO_LONG',

+                      PCLZIP_ERR_INVALID_ZIP => 'PCLZIP_ERR_INVALID_ZIP',

+                      PCLZIP_ERR_BAD_EXTRACTED_FILE => 'PCLZIP_ERR_BAD_EXTRACTED_FILE',

+                      PCLZIP_ERR_DIR_CREATE_FAIL => 'PCLZIP_ERR_DIR_CREATE_FAIL',

+                      PCLZIP_ERR_BAD_EXTENSION => 'PCLZIP_ERR_BAD_EXTENSION',

+                      PCLZIP_ERR_BAD_FORMAT => 'PCLZIP_ERR_BAD_FORMAT',

+                      PCLZIP_ERR_DELETE_FILE_FAIL => 'PCLZIP_ERR_DELETE_FILE_FAIL',

+                      PCLZIP_ERR_RENAME_FILE_FAIL => 'PCLZIP_ERR_RENAME_FILE_FAIL',

+                      PCLZIP_ERR_BAD_CHECKSUM => 'PCLZIP_ERR_BAD_CHECKSUM',

+                      PCLZIP_ERR_INVALID_ARCHIVE_ZIP => 'PCLZIP_ERR_INVALID_ARCHIVE_ZIP',

+                      PCLZIP_ERR_MISSING_OPTION_VALUE => 'PCLZIP_ERR_MISSING_OPTION_VALUE',

+                      PCLZIP_ERR_INVALID_OPTION_VALUE => 'PCLZIP_ERR_INVALID_OPTION_VALUE',

+                      PCLZIP_ERR_UNSUPPORTED_COMPRESSION => 'PCLZIP_ERR_UNSUPPORTED_COMPRESSION',

+                      PCLZIP_ERR_UNSUPPORTED_ENCRYPTION => 'PCLZIP_ERR_UNSUPPORTED_ENCRYPTION'

+                      ,PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE => 'PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE'

+                      ,PCLZIP_ERR_DIRECTORY_RESTRICTION => 'PCLZIP_ERR_DIRECTORY_RESTRICTION'

+                    );

+

+    if (isset($v_name[$this->error_code])) {

+      $v_value = $v_name[$this->error_code];

+    }

+    else {

+      $v_value = 'NoName';

+    }

+

+    if ($p_with_code) {

+      return($v_value.' ('.$this->error_code.')');

+    }

+    else {

+      return($v_value);

+    }

+  }

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function : errorInfo()

+  // Description :

+  // Parameters :

+  // --------------------------------------------------------------------------------

+  function errorInfo($p_full=false)

+  {

+    if (PCLZIP_ERROR_EXTERNAL == 1) {

+      return(PclErrorString());

+    }

+    else {

+      if ($p_full) {

+        return($this->errorName(true)." : ".$this->error_string);

+      }

+      else {

+        return($this->error_string." [code ".$this->error_code."]");

+      }

+    }

+  }

+  // --------------------------------------------------------------------------------

+

+

+// --------------------------------------------------------------------------------

+// ***** UNDER THIS LINE ARE DEFINED PRIVATE INTERNAL FUNCTIONS *****

+// *****                                                        *****

+// *****       THESES FUNCTIONS MUST NOT BE USED DIRECTLY       *****

+// --------------------------------------------------------------------------------

+

+

+

+  // --------------------------------------------------------------------------------

+  // Function : privCheckFormat()

+  // Description :

+  //   This method check that the archive exists and is a valid zip archive.

+  //   Several level of check exists. (futur)

+  // Parameters :

+  //   $p_level : Level of check. Default 0.

+  //              0 : Check the first bytes (magic codes) (default value))

+  //              1 : 0 + Check the central directory (futur)

+  //              2 : 1 + Check each file header (futur)

+  // Return Values :

+  //   true on success,

+  //   false on error, the error code is set.

+  // --------------------------------------------------------------------------------

+  function privCheckFormat($p_level=0)

+  {

+    $v_result = true;

+

+	// ----- Reset the file system cache

+    clearstatcache();

+

+    // ----- Reset the error handler

+    $this->privErrorReset();

+

+    // ----- Look if the file exits

+    if (!is_file($this->zipname)) {

+      // ----- Error log

+      PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "Missing archive file '".$this->zipname."'");

+      return(false);

+    }

+

+    // ----- Check that the file is readeable

+    if (!is_readable($this->zipname)) {

+      // ----- Error log

+      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to read archive '".$this->zipname."'");

+      return(false);

+    }

+

+    // ----- Check the magic code

+    // TBC

+

+    // ----- Check the central header

+    // TBC

+

+    // ----- Check each file header

+    // TBC

+

+    // ----- Return

+    return $v_result;

+  }

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function : privParseOptions()

+  // Description :

+  //   This internal methods reads the variable list of arguments ($p_options_list,

+  //   $p_size) and generate an array with the options and values ($v_result_list).

+  //   $v_requested_options contains the options that can be present and those that

+  //   must be present.

+  //   $v_requested_options is an array, with the option value as key, and 'optional',

+  //   or 'mandatory' as value.

+  // Parameters :

+  //   See above.

+  // Return Values :

+  //   1 on success.

+  //   0 on failure.

+  // --------------------------------------------------------------------------------

+  function privParseOptions(&$p_options_list, $p_size, &$v_result_list, $v_requested_options=false)

+  {

+    $v_result=1;

+    

+    // ----- Read the options

+    $i=0;

+    while ($i<$p_size) {

+

+      // ----- Check if the option is supported

+      if (!isset($v_requested_options[$p_options_list[$i]])) {

+        // ----- Error log

+        PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid optional parameter '".$p_options_list[$i]."' for this method");

+

+        // ----- Return

+        return PclZip::errorCode();

+      }

+

+      // ----- Look for next option

+      switch ($p_options_list[$i]) {

+        // ----- Look for options that request a path value

+        case PCLZIP_OPT_PATH :

+        case PCLZIP_OPT_REMOVE_PATH :

+        case PCLZIP_OPT_ADD_PATH :

+          // ----- Check the number of parameters

+          if (($i+1) >= $p_size) {

+            // ----- Error log

+            PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");

+

+            // ----- Return

+            return PclZip::errorCode();

+          }

+

+          // ----- Get the value

+          $v_result_list[$p_options_list[$i]] = PclZipUtilTranslateWinPath($p_options_list[$i+1], FALSE);

+          $i++;

+        break;

+

+        case PCLZIP_OPT_TEMP_FILE_THRESHOLD :

+          // ----- Check the number of parameters

+          if (($i+1) >= $p_size) {

+            PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");

+            return PclZip::errorCode();

+          }

+          

+          // ----- Check for incompatible options

+          if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_OFF])) {

+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_OFF'");

+            return PclZip::errorCode();

+          }

+          

+          // ----- Check the value

+          $v_value = $p_options_list[$i+1];

+          if ((!is_integer($v_value)) || ($v_value<0)) {

+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Integer expected for option '".PclZipUtilOptionText($p_options_list[$i])."'");

+            return PclZip::errorCode();

+          }

+

+          // ----- Get the value (and convert it in bytes)

+          $v_result_list[$p_options_list[$i]] = $v_value*1048576;

+          $i++;

+        break;

+

+        case PCLZIP_OPT_TEMP_FILE_ON :

+          // ----- Check for incompatible options

+          if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_OFF])) {

+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_OFF'");

+            return PclZip::errorCode();

+          }

+          

+          $v_result_list[$p_options_list[$i]] = true;

+        break;

+

+        case PCLZIP_OPT_TEMP_FILE_OFF :

+          // ----- Check for incompatible options

+          if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_ON])) {

+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_ON'");

+            return PclZip::errorCode();

+          }

+          // ----- Check for incompatible options

+          if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_THRESHOLD])) {

+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_THRESHOLD'");

+            return PclZip::errorCode();

+          }

+          

+          $v_result_list[$p_options_list[$i]] = true;

+        break;

+

+        case PCLZIP_OPT_EXTRACT_DIR_RESTRICTION :

+          // ----- Check the number of parameters

+          if (($i+1) >= $p_size) {

+            // ----- Error log

+            PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");

+

+            // ----- Return

+            return PclZip::errorCode();

+          }

+

+          // ----- Get the value

+          if (   is_string($p_options_list[$i+1])

+              && ($p_options_list[$i+1] != '')) {

+            $v_result_list[$p_options_list[$i]] = PclZipUtilTranslateWinPath($p_options_list[$i+1], FALSE);

+            $i++;

+          }

+          else {

+          }

+        break;

+

+        // ----- Look for options that request an array of string for value

+        case PCLZIP_OPT_BY_NAME :

+          // ----- Check the number of parameters

+          if (($i+1) >= $p_size) {

+            // ----- Error log

+            PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");

+

+            // ----- Return

+            return PclZip::errorCode();

+          }

+

+          // ----- Get the value

+          if (is_string($p_options_list[$i+1])) {

+              $v_result_list[$p_options_list[$i]][0] = $p_options_list[$i+1];

+          }

+          else if (is_array($p_options_list[$i+1])) {

+              $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1];

+          }

+          else {

+            // ----- Error log

+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Wrong parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");

+

+            // ----- Return

+            return PclZip::errorCode();

+          }

+          $i++;

+        break;

+

+        // ----- Look for options that request an EREG or PREG expression

+        case PCLZIP_OPT_BY_EREG :

+          // ereg() is deprecated starting with PHP 5.3. Move PCLZIP_OPT_BY_EREG

+          // to PCLZIP_OPT_BY_PREG

+          $p_options_list[$i] = PCLZIP_OPT_BY_PREG;

+        case PCLZIP_OPT_BY_PREG :

+        //case PCLZIP_OPT_CRYPT :

+          // ----- Check the number of parameters

+          if (($i+1) >= $p_size) {

+            // ----- Error log

+            PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");

+

+            // ----- Return

+            return PclZip::errorCode();

+          }

+

+          // ----- Get the value

+          if (is_string($p_options_list[$i+1])) {

+              $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1];

+          }

+          else {

+            // ----- Error log

+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Wrong parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");

+

+            // ----- Return

+            return PclZip::errorCode();

+          }

+          $i++;

+        break;

+

+        // ----- Look for options that takes a string

+        case PCLZIP_OPT_COMMENT :

+        case PCLZIP_OPT_ADD_COMMENT :

+        case PCLZIP_OPT_PREPEND_COMMENT :

+          // ----- Check the number of parameters

+          if (($i+1) >= $p_size) {

+            // ----- Error log

+            PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE,

+			                     "Missing parameter value for option '"

+								 .PclZipUtilOptionText($p_options_list[$i])

+								 ."'");

+

+            // ----- Return

+            return PclZip::errorCode();

+          }

+

+          // ----- Get the value

+          if (is_string($p_options_list[$i+1])) {

+              $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1];

+          }

+          else {

+            // ----- Error log

+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE,

+			                     "Wrong parameter value for option '"

+								 .PclZipUtilOptionText($p_options_list[$i])

+								 ."'");

+

+            // ----- Return

+            return PclZip::errorCode();

+          }

+          $i++;

+        break;

+

+        // ----- Look for options that request an array of index

+        case PCLZIP_OPT_BY_INDEX :

+          // ----- Check the number of parameters

+          if (($i+1) >= $p_size) {

+            // ----- Error log

+            PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");

+

+            // ----- Return

+            return PclZip::errorCode();

+          }

+

+          // ----- Get the value

+          $v_work_list = array();

+          if (is_string($p_options_list[$i+1])) {

+

+              // ----- Remove spaces

+              $p_options_list[$i+1] = strtr($p_options_list[$i+1], ' ', '');

+

+              // ----- Parse items

+              $v_work_list = explode(",", $p_options_list[$i+1]);

+          }

+          else if (is_integer($p_options_list[$i+1])) {

+              $v_work_list[0] = $p_options_list[$i+1].'-'.$p_options_list[$i+1];

+          }

+          else if (is_array($p_options_list[$i+1])) {

+              $v_work_list = $p_options_list[$i+1];

+          }

+          else {

+            // ----- Error log

+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Value must be integer, string or array for option '".PclZipUtilOptionText($p_options_list[$i])."'");

+

+            // ----- Return

+            return PclZip::errorCode();

+          }

+          

+          // ----- Reduce the index list

+          // each index item in the list must be a couple with a start and

+          // an end value : [0,3], [5-5], [8-10], ...

+          // ----- Check the format of each item

+          $v_sort_flag=false;

+          $v_sort_value=0;

+          for ($j=0; $j<sizeof($v_work_list); $j++) {

+              // ----- Explode the item

+              $v_item_list = explode("-", $v_work_list[$j]);

+              $v_size_item_list = sizeof($v_item_list);

+              

+              // ----- TBC : Here we might check that each item is a

+              // real integer ...

+              

+              // ----- Look for single value

+              if ($v_size_item_list == 1) {

+                  // ----- Set the option value

+                  $v_result_list[$p_options_list[$i]][$j]['start'] = $v_item_list[0];

+                  $v_result_list[$p_options_list[$i]][$j]['end'] = $v_item_list[0];

+              }

+              elseif ($v_size_item_list == 2) {

+                  // ----- Set the option value

+                  $v_result_list[$p_options_list[$i]][$j]['start'] = $v_item_list[0];

+                  $v_result_list[$p_options_list[$i]][$j]['end'] = $v_item_list[1];

+              }

+              else {

+                  // ----- Error log

+                  PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Too many values in index range for option '".PclZipUtilOptionText($p_options_list[$i])."'");

+

+                  // ----- Return

+                  return PclZip::errorCode();

+              }

+

+

+              // ----- Look for list sort

+              if ($v_result_list[$p_options_list[$i]][$j]['start'] < $v_sort_value) {

+                  $v_sort_flag=true;

+

+                  // ----- TBC : An automatic sort should be writen ...

+                  // ----- Error log

+                  PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Invalid order of index range for option '".PclZipUtilOptionText($p_options_list[$i])."'");

+

+                  // ----- Return

+                  return PclZip::errorCode();

+              }

+              $v_sort_value = $v_result_list[$p_options_list[$i]][$j]['start'];

+          }

+          

+          // ----- Sort the items

+          if ($v_sort_flag) {

+              // TBC : To Be Completed

+          }

+

+          // ----- Next option

+          $i++;

+        break;

+

+        // ----- Look for options that request no value

+        case PCLZIP_OPT_REMOVE_ALL_PATH :

+        case PCLZIP_OPT_EXTRACT_AS_STRING :

+        case PCLZIP_OPT_NO_COMPRESSION :

+        case PCLZIP_OPT_EXTRACT_IN_OUTPUT :

+        case PCLZIP_OPT_REPLACE_NEWER :

+        case PCLZIP_OPT_STOP_ON_ERROR :

+          $v_result_list[$p_options_list[$i]] = true;

+        break;

+

+        // ----- Look for options that request an octal value

+        case PCLZIP_OPT_SET_CHMOD :

+          // ----- Check the number of parameters

+          if (($i+1) >= $p_size) {

+            // ----- Error log

+            PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");

+

+            // ----- Return

+            return PclZip::errorCode();

+          }

+

+          // ----- Get the value

+          $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1];

+          $i++;

+        break;

+

+        // ----- Look for options that request a call-back

+        case PCLZIP_CB_PRE_EXTRACT :

+        case PCLZIP_CB_POST_EXTRACT :

+        case PCLZIP_CB_PRE_ADD :

+        case PCLZIP_CB_POST_ADD :

+        /* for futur use

+        case PCLZIP_CB_PRE_DELETE :

+        case PCLZIP_CB_POST_DELETE :

+        case PCLZIP_CB_PRE_LIST :

+        case PCLZIP_CB_POST_LIST :

+        */

+          // ----- Check the number of parameters

+          if (($i+1) >= $p_size) {

+            // ----- Error log

+            PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'");

+

+            // ----- Return

+            return PclZip::errorCode();

+          }

+

+          // ----- Get the value

+          $v_function_name = $p_options_list[$i+1];

+

+          // ----- Check that the value is a valid existing function

+          if (!function_exists($v_function_name)) {

+            // ----- Error log

+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Function '".$v_function_name."()' is not an existing function for option '".PclZipUtilOptionText($p_options_list[$i])."'");

+

+            // ----- Return

+            return PclZip::errorCode();

+          }

+

+          // ----- Set the attribute

+          $v_result_list[$p_options_list[$i]] = $v_function_name;

+          $i++;

+        break;

+

+        default :

+          // ----- Error log

+          PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER,

+		                       "Unknown parameter '"

+							   .$p_options_list[$i]."'");

+

+          // ----- Return

+          return PclZip::errorCode();

+      }

+

+      // ----- Next options

+      $i++;

+    }

+

+    // ----- Look for mandatory options

+    if ($v_requested_options !== false) {

+      for ($key=reset($v_requested_options); $key=key($v_requested_options); $key=next($v_requested_options)) {

+        // ----- Look for mandatory option

+        if ($v_requested_options[$key] == 'mandatory') {

+          // ----- Look if present

+          if (!isset($v_result_list[$key])) {

+            // ----- Error log

+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Missing mandatory parameter ".PclZipUtilOptionText($key)."(".$key.")");

+

+            // ----- Return

+            return PclZip::errorCode();

+          }

+        }

+      }

+    }

+    

+    // ----- Look for default values

+    if (!isset($v_result_list[PCLZIP_OPT_TEMP_FILE_THRESHOLD])) {

+      

+    }

+

+    // ----- Return

+    return $v_result;

+  }

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function : privOptionDefaultThreshold()

+  // Description :

+  // Parameters :

+  // Return Values :

+  // --------------------------------------------------------------------------------

+  function privOptionDefaultThreshold(&$p_options)

+  {

+    $v_result=1;

+    

+    if (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD])

+        || isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) {

+      return $v_result;

+    }

+    

+    // ----- Get 'memory_limit' configuration value

+    $v_memory_limit = ini_get('memory_limit');

+    $v_memory_limit = trim($v_memory_limit);

+    $last = strtolower(substr($v_memory_limit, -1));

+ 

+    if($last == 'g')

+        //$v_memory_limit = $v_memory_limit*1024*1024*1024;

+        $v_memory_limit = $v_memory_limit*1073741824;

+    if($last == 'm')

+        //$v_memory_limit = $v_memory_limit*1024*1024;

+        $v_memory_limit = $v_memory_limit*1048576;

+    if($last == 'k')

+        $v_memory_limit = $v_memory_limit*1024;

+            

+    $p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] = floor($v_memory_limit*PCLZIP_TEMPORARY_FILE_RATIO);

+    

+

+    // ----- Sanity check : No threshold if value lower than 1M

+    if ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] < 1048576) {

+      unset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]);

+    }

+          

+    // ----- Return

+    return $v_result;

+  }

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function : privFileDescrParseAtt()

+  // Description :

+  // Parameters :

+  // Return Values :

+  //   1 on success.

+  //   0 on failure.

+  // --------------------------------------------------------------------------------

+  function privFileDescrParseAtt(&$p_file_list, &$p_filedescr, $v_options, $v_requested_options=false)

+  {

+    $v_result=1;

+    

+    // ----- For each file in the list check the attributes

+    foreach ($p_file_list as $v_key => $v_value) {

+    

+      // ----- Check if the option is supported

+      if (!isset($v_requested_options[$v_key])) {

+        // ----- Error log

+        PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid file attribute '".$v_key."' for this file");

+

+        // ----- Return

+        return PclZip::errorCode();

+      }

+

+      // ----- Look for attribute

+      switch ($v_key) {

+        case PCLZIP_ATT_FILE_NAME :

+          if (!is_string($v_value)) {

+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'");

+            return PclZip::errorCode();

+          }

+

+          $p_filedescr['filename'] = PclZipUtilPathReduction($v_value);

+          

+          if ($p_filedescr['filename'] == '') {

+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty filename for attribute '".PclZipUtilOptionText($v_key)."'");

+            return PclZip::errorCode();

+          }

+

+        break;

+

+        case PCLZIP_ATT_FILE_NEW_SHORT_NAME :

+          if (!is_string($v_value)) {

+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'");

+            return PclZip::errorCode();

+          }

+

+          $p_filedescr['new_short_name'] = PclZipUtilPathReduction($v_value);

+

+          if ($p_filedescr['new_short_name'] == '') {

+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty short filename for attribute '".PclZipUtilOptionText($v_key)."'");

+            return PclZip::errorCode();

+          }

+        break;

+

+        case PCLZIP_ATT_FILE_NEW_FULL_NAME :

+          if (!is_string($v_value)) {

+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'");

+            return PclZip::errorCode();

+          }

+

+          $p_filedescr['new_full_name'] = PclZipUtilPathReduction($v_value);

+

+          if ($p_filedescr['new_full_name'] == '') {

+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty full filename for attribute '".PclZipUtilOptionText($v_key)."'");

+            return PclZip::errorCode();

+          }

+        break;

+

+        // ----- Look for options that takes a string

+        case PCLZIP_ATT_FILE_COMMENT :

+          if (!is_string($v_value)) {

+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'");

+            return PclZip::errorCode();

+          }

+

+          $p_filedescr['comment'] = $v_value;

+        break;

+

+        case PCLZIP_ATT_FILE_MTIME :

+          if (!is_integer($v_value)) {

+            PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". Integer expected for attribute '".PclZipUtilOptionText($v_key)."'");

+            return PclZip::errorCode();

+          }

+

+          $p_filedescr['mtime'] = $v_value;

+        break;

+

+        case PCLZIP_ATT_FILE_CONTENT :

+          $p_filedescr['content'] = $v_value;

+        break;

+

+        default :

+          // ----- Error log

+          PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER,

+		                           "Unknown parameter '".$v_key."'");

+

+          // ----- Return

+          return PclZip::errorCode();

+      }

+

+      // ----- Look for mandatory options

+      if ($v_requested_options !== false) {

+        for ($key=reset($v_requested_options); $key=key($v_requested_options); $key=next($v_requested_options)) {

+          // ----- Look for mandatory option

+          if ($v_requested_options[$key] == 'mandatory') {

+            // ----- Look if present

+            if (!isset($p_file_list[$key])) {

+              PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Missing mandatory parameter ".PclZipUtilOptionText($key)."(".$key.")");

+              return PclZip::errorCode();

+            }

+          }

+        }

+      }

+    

+    // end foreach

+    }

+    

+    // ----- Return

+    return $v_result;

+  }

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function : privFileDescrExpand()

+  // Description :

+  //   This method look for each item of the list to see if its a file, a folder

+  //   or a string to be added as file. For any other type of files (link, other)

+  //   just ignore the item.

+  //   Then prepare the information that will be stored for that file.

+  //   When its a folder, expand the folder with all the files that are in that 

+  //   folder (recursively).

+  // Parameters :

+  // Return Values :

+  //   1 on success.

+  //   0 on failure.

+  // --------------------------------------------------------------------------------

+  function privFileDescrExpand(&$p_filedescr_list, &$p_options)

+  {

+    $v_result=1;

+    

+    // ----- Create a result list

+    $v_result_list = array();

+    

+    // ----- Look each entry

+    for ($i=0; $i<sizeof($p_filedescr_list); $i++) {

+      

+      // ----- Get filedescr

+      $v_descr = $p_filedescr_list[$i];

+      

+      // ----- Reduce the filename

+      $v_descr['filename'] = PclZipUtilTranslateWinPath($v_descr['filename'], false);

+      $v_descr['filename'] = PclZipUtilPathReduction($v_descr['filename']);

+      

+      // ----- Look for real file or folder

+      if (file_exists($v_descr['filename'])) {

+        if (@is_file($v_descr['filename'])) {

+          $v_descr['type'] = 'file';

+        }

+        else if (@is_dir($v_descr['filename'])) {

+          $v_descr['type'] = 'folder';

+        }

+        else if (@is_link($v_descr['filename'])) {

+          // skip

+          continue;

+        }

+        else {

+          // skip

+          continue;

+        }

+      }

+      

+      // ----- Look for string added as file

+      else if (isset($v_descr['content'])) {

+        $v_descr['type'] = 'virtual_file';

+      }

+      

+      // ----- Missing file

+      else {

+        // ----- Error log

+        PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "File '".$v_descr['filename']."' does not exist");

+

+        // ----- Return

+        return PclZip::errorCode();

+      }

+      

+      // ----- Calculate the stored filename

+      $this->privCalculateStoredFilename($v_descr, $p_options);

+      

+      // ----- Add the descriptor in result list

+      $v_result_list[sizeof($v_result_list)] = $v_descr;

+      

+      // ----- Look for folder

+      if ($v_descr['type'] == 'folder') {

+        // ----- List of items in folder

+        $v_dirlist_descr = array();

+        $v_dirlist_nb = 0;

+        if ($v_folder_handler = @opendir($v_descr['filename'])) {

+          while (($v_item_handler = @readdir($v_folder_handler)) !== false) {

+

+            // ----- Skip '.' and '..'

+            if (($v_item_handler == '.') || ($v_item_handler == '..')) {

+                continue;

+            }

+            

+            // ----- Compose the full filename

+            $v_dirlist_descr[$v_dirlist_nb]['filename'] = $v_descr['filename'].'/'.$v_item_handler;

+            

+            // ----- Look for different stored filename

+            // Because the name of the folder was changed, the name of the

+            // files/sub-folders also change

+            if (($v_descr['stored_filename'] != $v_descr['filename'])

+                 && (!isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH]))) {

+              if ($v_descr['stored_filename'] != '') {

+                $v_dirlist_descr[$v_dirlist_nb]['new_full_name'] = $v_descr['stored_filename'].'/'.$v_item_handler;

+              }

+              else {

+                $v_dirlist_descr[$v_dirlist_nb]['new_full_name'] = $v_item_handler;

+              }

+            }

+      

+            $v_dirlist_nb++;

+          }

+          

+          @closedir($v_folder_handler);

+        }

+        else {

+          // TBC : unable to open folder in read mode

+        }

+        

+        // ----- Expand each element of the list

+        if ($v_dirlist_nb != 0) {

+          // ----- Expand

+          if (($v_result = $this->privFileDescrExpand($v_dirlist_descr, $p_options)) != 1) {

+            return $v_result;

+          }

+          

+          // ----- Concat the resulting list

+          $v_result_list = array_merge($v_result_list, $v_dirlist_descr);

+        }

+        else {

+        }

+          

+        // ----- Free local array

+        unset($v_dirlist_descr);

+      }

+    }

+    

+    // ----- Get the result list

+    $p_filedescr_list = $v_result_list;

+

+    // ----- Return

+    return $v_result;

+  }

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function : privCreate()

+  // Description :

+  // Parameters :

+  // Return Values :

+  // --------------------------------------------------------------------------------

+  function privCreate($p_filedescr_list, &$p_result_list, &$p_options)

+  {

+    $v_result=1;

+    $v_list_detail = array();

+    

+    // ----- Magic quotes trick

+    $this->privDisableMagicQuotes();

+

+    // ----- Open the file in write mode

+    if (($v_result = $this->privOpenFd('wb')) != 1)

+    {

+      // ----- Return

+      return $v_result;

+    }

+

+    // ----- Add the list of files

+    $v_result = $this->privAddList($p_filedescr_list, $p_result_list, $p_options);

+

+    // ----- Close

+    $this->privCloseFd();

+

+    // ----- Magic quotes trick

+    $this->privSwapBackMagicQuotes();

+

+    // ----- Return

+    return $v_result;

+  }

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function : privAdd()

+  // Description :

+  // Parameters :

+  // Return Values :

+  // --------------------------------------------------------------------------------

+  function privAdd($p_filedescr_list, &$p_result_list, &$p_options)

+  {

+    $v_result=1;

+    $v_list_detail = array();

+

+    // ----- Look if the archive exists or is empty

+    if ((!is_file($this->zipname)) || (filesize($this->zipname) == 0))

+    {

+

+      // ----- Do a create

+      $v_result = $this->privCreate($p_filedescr_list, $p_result_list, $p_options);

+

+      // ----- Return

+      return $v_result;

+    }

+    // ----- Magic quotes trick

+    $this->privDisableMagicQuotes();

+

+    // ----- Open the zip file

+    if (($v_result=$this->privOpenFd('rb')) != 1)

+    {

+      // ----- Magic quotes trick

+      $this->privSwapBackMagicQuotes();

+

+      // ----- Return

+      return $v_result;

+    }

+

+    // ----- Read the central directory informations

+    $v_central_dir = array();

+    if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1)

+    {

+      $this->privCloseFd();

+      $this->privSwapBackMagicQuotes();

+      return $v_result;

+    }

+

+    // ----- Go to beginning of File

+    @rewind($this->zip_fd);

+

+    // ----- Creates a temporay file

+    $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp';

+

+    // ----- Open the temporary file in write mode

+    if (($v_zip_temp_fd = @fopen($v_zip_temp_name, 'wb')) == 0)

+    {

+      $this->privCloseFd();

+      $this->privSwapBackMagicQuotes();

+

+      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_zip_temp_name.'\' in binary write mode');

+

+      // ----- Return

+      return PclZip::errorCode();

+    }

+

+    // ----- Copy the files from the archive to the temporary file

+    // TBC : Here I should better append the file and go back to erase the central dir

+    $v_size = $v_central_dir['offset'];

+    while ($v_size != 0)

+    {

+      $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);

+      $v_buffer = fread($this->zip_fd, $v_read_size);

+      @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size);

+      $v_size -= $v_read_size;

+    }

+

+    // ----- Swap the file descriptor

+    // Here is a trick : I swap the temporary fd with the zip fd, in order to use

+    // the following methods on the temporary fil and not the real archive

+    $v_swap = $this->zip_fd;

+    $this->zip_fd = $v_zip_temp_fd;

+    $v_zip_temp_fd = $v_swap;

+

+    // ----- Add the files

+    $v_header_list = array();

+    if (($v_result = $this->privAddFileList($p_filedescr_list, $v_header_list, $p_options)) != 1)

+    {

+      fclose($v_zip_temp_fd);

+      $this->privCloseFd();

+      @unlink($v_zip_temp_name);

+      $this->privSwapBackMagicQuotes();

+

+      // ----- Return

+      return $v_result;

+    }

+

+    // ----- Store the offset of the central dir

+    $v_offset = @ftell($this->zip_fd);

+

+    // ----- Copy the block of file headers from the old archive

+    $v_size = $v_central_dir['size'];

+    while ($v_size != 0)

+    {

+      $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);

+      $v_buffer = @fread($v_zip_temp_fd, $v_read_size);

+      @fwrite($this->zip_fd, $v_buffer, $v_read_size);

+      $v_size -= $v_read_size;

+    }

+

+    // ----- Create the Central Dir files header

+    for ($i=0, $v_count=0; $i<sizeof($v_header_list); $i++)

+    {

+      // ----- Create the file header

+      if ($v_header_list[$i]['status'] == 'ok') {

+        if (($v_result = $this->privWriteCentralFileHeader($v_header_list[$i])) != 1) {

+          fclose($v_zip_temp_fd);

+          $this->privCloseFd();

+          @unlink($v_zip_temp_name);

+          $this->privSwapBackMagicQuotes();

+

+          // ----- Return

+          return $v_result;

+        }

+        $v_count++;

+      }

+

+      // ----- Transform the header to a 'usable' info

+      $this->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]);

+    }

+

+    // ----- Zip file comment

+    $v_comment = $v_central_dir['comment'];

+    if (isset($p_options[PCLZIP_OPT_COMMENT])) {

+      $v_comment = $p_options[PCLZIP_OPT_COMMENT];

+    }

+    if (isset($p_options[PCLZIP_OPT_ADD_COMMENT])) {

+      $v_comment = $v_comment.$p_options[PCLZIP_OPT_ADD_COMMENT];

+    }

+    if (isset($p_options[PCLZIP_OPT_PREPEND_COMMENT])) {

+      $v_comment = $p_options[PCLZIP_OPT_PREPEND_COMMENT].$v_comment;

+    }

+

+    // ----- Calculate the size of the central header

+    $v_size = @ftell($this->zip_fd)-$v_offset;

+

+    // ----- Create the central dir footer

+    if (($v_result = $this->privWriteCentralHeader($v_count+$v_central_dir['entries'], $v_size, $v_offset, $v_comment)) != 1)

+    {

+      // ----- Reset the file list

+      unset($v_header_list);

+      $this->privSwapBackMagicQuotes();

+

+      // ----- Return

+      return $v_result;

+    }

+

+    // ----- Swap back the file descriptor

+    $v_swap = $this->zip_fd;

+    $this->zip_fd = $v_zip_temp_fd;

+    $v_zip_temp_fd = $v_swap;

+

+    // ----- Close

+    $this->privCloseFd();

+

+    // ----- Close the temporary file

+    @fclose($v_zip_temp_fd);

+

+    // ----- Magic quotes trick

+    $this->privSwapBackMagicQuotes();

+

+    // ----- Delete the zip file

+    // TBC : I should test the result ...

+    @unlink($this->zipname);

+

+    // ----- Rename the temporary file

+    // TBC : I should test the result ...

+    //@rename($v_zip_temp_name, $this->zipname);

+    PclZipUtilRename($v_zip_temp_name, $this->zipname);

+

+    // ----- Return

+    return $v_result;

+  }

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function : privOpenFd()

+  // Description :

+  // Parameters :

+  // --------------------------------------------------------------------------------

+  function privOpenFd($p_mode)

+  {

+    $v_result=1;

+

+    // ----- Look if already open

+    if ($this->zip_fd != 0)

+    {

+      // ----- Error log

+      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Zip file \''.$this->zipname.'\' already open');

+

+      // ----- Return

+      return PclZip::errorCode();

+    }

+

+    // ----- Open the zip file

+    if (($this->zip_fd = @fopen($this->zipname, $p_mode)) == 0)

+    {

+      // ----- Error log

+      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in '.$p_mode.' mode');

+

+      // ----- Return

+      return PclZip::errorCode();

+    }

+

+    // ----- Return

+    return $v_result;

+  }

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function : privCloseFd()

+  // Description :

+  // Parameters :

+  // --------------------------------------------------------------------------------

+  function privCloseFd()

+  {

+    $v_result=1;

+

+    if ($this->zip_fd != 0)

+      @fclose($this->zip_fd);

+    $this->zip_fd = 0;

+

+    // ----- Return

+    return $v_result;

+  }

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function : privAddList()

+  // Description :

+  //   $p_add_dir and $p_remove_dir will give the ability to memorize a path which is

+  //   different from the real path of the file. This is usefull if you want to have PclTar

+  //   running in any directory, and memorize relative path from an other directory.

+  // Parameters :

+  //   $p_list : An array containing the file or directory names to add in the tar

+  //   $p_result_list : list of added files with their properties (specially the status field)

+  //   $p_add_dir : Path to add in the filename path archived

+  //   $p_remove_dir : Path to remove in the filename path archived

+  // Return Values :

+  // --------------------------------------------------------------------------------

+//  function privAddList($p_list, &$p_result_list, $p_add_dir, $p_remove_dir, $p_remove_all_dir, &$p_options)

+  function privAddList($p_filedescr_list, &$p_result_list, &$p_options)

+  {

+    $v_result=1;

+

+    // ----- Add the files

+    $v_header_list = array();

+    if (($v_result = $this->privAddFileList($p_filedescr_list, $v_header_list, $p_options)) != 1)

+    {

+      // ----- Return

+      return $v_result;

+    }

+

+    // ----- Store the offset of the central dir

+    $v_offset = @ftell($this->zip_fd);

+

+    // ----- Create the Central Dir files header

+    for ($i=0,$v_count=0; $i<sizeof($v_header_list); $i++)

+    {

+      // ----- Create the file header

+      if ($v_header_list[$i]['status'] == 'ok') {

+        if (($v_result = $this->privWriteCentralFileHeader($v_header_list[$i])) != 1) {

+          // ----- Return

+          return $v_result;

+        }

+        $v_count++;

+      }

+

+      // ----- Transform the header to a 'usable' info

+      $this->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]);

+    }

+

+    // ----- Zip file comment

+    $v_comment = '';

+    if (isset($p_options[PCLZIP_OPT_COMMENT])) {

+      $v_comment = $p_options[PCLZIP_OPT_COMMENT];

+    }

+

+    // ----- Calculate the size of the central header

+    $v_size = @ftell($this->zip_fd)-$v_offset;

+

+    // ----- Create the central dir footer

+    if (($v_result = $this->privWriteCentralHeader($v_count, $v_size, $v_offset, $v_comment)) != 1)

+    {

+      // ----- Reset the file list

+      unset($v_header_list);

+

+      // ----- Return

+      return $v_result;

+    }

+

+    // ----- Return

+    return $v_result;

+  }

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function : privAddFileList()

+  // Description :

+  // Parameters :

+  //   $p_filedescr_list : An array containing the file description 

+  //                      or directory names to add in the zip

+  //   $p_result_list : list of added files with their properties (specially the status field)

+  // Return Values :

+  // --------------------------------------------------------------------------------

+  function privAddFileList($p_filedescr_list, &$p_result_list, &$p_options)

+  {

+    $v_result=1;

+    $v_header = array();

+

+    // ----- Recuperate the current number of elt in list

+    $v_nb = sizeof($p_result_list);

+

+    // ----- Loop on the files

+    for ($j=0; ($j<sizeof($p_filedescr_list)) && ($v_result==1); $j++) {

+      // ----- Format the filename

+      $p_filedescr_list[$j]['filename']

+      = PclZipUtilTranslateWinPath($p_filedescr_list[$j]['filename'], false);

+      

+

+      // ----- Skip empty file names

+      // TBC : Can this be possible ? not checked in DescrParseAtt ?

+      if ($p_filedescr_list[$j]['filename'] == "") {

+        continue;

+      }

+

+      // ----- Check the filename

+      if (   ($p_filedescr_list[$j]['type'] != 'virtual_file')

+          && (!file_exists($p_filedescr_list[$j]['filename']))) {

+        PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "File '".$p_filedescr_list[$j]['filename']."' does not exist");

+        return PclZip::errorCode();

+      }

+

+      // ----- Look if it is a file or a dir with no all path remove option

+      // or a dir with all its path removed

+//      if (   (is_file($p_filedescr_list[$j]['filename']))

+//          || (   is_dir($p_filedescr_list[$j]['filename'])

+      if (   ($p_filedescr_list[$j]['type'] == 'file')

+          || ($p_filedescr_list[$j]['type'] == 'virtual_file')

+          || (   ($p_filedescr_list[$j]['type'] == 'folder')

+              && (   !isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH])

+                  || !$p_options[PCLZIP_OPT_REMOVE_ALL_PATH]))

+          ) {

+

+        // ----- Add the file

+        $v_result = $this->privAddFile($p_filedescr_list[$j], $v_header,

+                                       $p_options);

+        if ($v_result != 1) {

+          return $v_result;

+        }

+

+        // ----- Store the file infos

+        $p_result_list[$v_nb++] = $v_header;

+      }

+    }

+

+    // ----- Return

+    return $v_result;

+  }

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function : privAddFile()

+  // Description :

+  // Parameters :

+  // Return Values :

+  // --------------------------------------------------------------------------------

+  function privAddFile($p_filedescr, &$p_header, &$p_options)

+  {

+    $v_result=1;

+    

+    // ----- Working variable

+    $p_filename = $p_filedescr['filename'];

+

+    // TBC : Already done in the fileAtt check ... ?

+    if ($p_filename == "") {

+      // ----- Error log

+      PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid file list parameter (invalid or empty list)");

+

+      // ----- Return

+      return PclZip::errorCode();

+    }

+  

+    // ----- Look for a stored different filename 

+    /* TBC : Removed

+    if (isset($p_filedescr['stored_filename'])) {

+      $v_stored_filename = $p_filedescr['stored_filename'];

+    }

+    else {

+      $v_stored_filename = $p_filedescr['stored_filename'];

+    }

+    */

+

+    // ----- Set the file properties

+    clearstatcache();

+    $p_header['version'] = 20;

+    $p_header['version_extracted'] = 10;

+    $p_header['flag'] = 0;

+    $p_header['compression'] = 0;

+    $p_header['crc'] = 0;

+    $p_header['compressed_size'] = 0;

+    $p_header['filename_len'] = strlen($p_filename);

+    $p_header['extra_len'] = 0;

+    $p_header['disk'] = 0;

+    $p_header['internal'] = 0;

+    $p_header['offset'] = 0;

+    $p_header['filename'] = $p_filename;

+// TBC : Removed    $p_header['stored_filename'] = $v_stored_filename;

+    $p_header['stored_filename'] = $p_filedescr['stored_filename'];

+    $p_header['extra'] = '';

+    $p_header['status'] = 'ok';

+    $p_header['index'] = -1;

+

+    // ----- Look for regular file

+    if ($p_filedescr['type']=='file') {

+      $p_header['external'] = 0x00000000;

+      $p_header['size'] = filesize($p_filename);

+    }

+    

+    // ----- Look for regular folder

+    else if ($p_filedescr['type']=='folder') {

+      $p_header['external'] = 0x00000010;

+      $p_header['mtime'] = filemtime($p_filename);

+      $p_header['size'] = filesize($p_filename);

+    }

+    

+    // ----- Look for virtual file

+    else if ($p_filedescr['type'] == 'virtual_file') {

+      $p_header['external'] = 0x00000000;

+      $p_header['size'] = strlen($p_filedescr['content']);

+    }

+    

+

+    // ----- Look for filetime

+    if (isset($p_filedescr['mtime'])) {

+      $p_header['mtime'] = $p_filedescr['mtime'];

+    }

+    else if ($p_filedescr['type'] == 'virtual_file') {

+      $p_header['mtime'] = time();

+    }

+    else {

+      $p_header['mtime'] = filemtime($p_filename);

+    }

+

+    // ------ Look for file comment

+    if (isset($p_filedescr['comment'])) {

+      $p_header['comment_len'] = strlen($p_filedescr['comment']);

+      $p_header['comment'] = $p_filedescr['comment'];

+    }

+    else {

+      $p_header['comment_len'] = 0;

+      $p_header['comment'] = '';

+    }

+

+    // ----- Look for pre-add callback

+    if (isset($p_options[PCLZIP_CB_PRE_ADD])) {

+

+      // ----- Generate a local information

+      $v_local_header = array();

+      $this->privConvertHeader2FileInfo($p_header, $v_local_header);

+

+      // ----- Call the callback

+      // Here I do not use call_user_func() because I need to send a reference to the

+      // header.

+//      eval('$v_result = '.$p_options[PCLZIP_CB_PRE_ADD].'(PCLZIP_CB_PRE_ADD, $v_local_header);');

+      $v_result = $p_options[PCLZIP_CB_PRE_ADD](PCLZIP_CB_PRE_ADD, $v_local_header);

+      if ($v_result == 0) {

+        // ----- Change the file status

+        $p_header['status'] = "skipped";

+        $v_result = 1;

+      }

+

+      // ----- Update the informations

+      // Only some fields can be modified

+      if ($p_header['stored_filename'] != $v_local_header['stored_filename']) {

+        $p_header['stored_filename'] = PclZipUtilPathReduction($v_local_header['stored_filename']);

+      }

+    }

+

+    // ----- Look for empty stored filename

+    if ($p_header['stored_filename'] == "") {

+      $p_header['status'] = "filtered";

+    }

+    

+    // ----- Check the path length

+    if (strlen($p_header['stored_filename']) > 0xFF) {

+      $p_header['status'] = 'filename_too_long';

+    }

+

+    // ----- Look if no error, or file not skipped

+    if ($p_header['status'] == 'ok') {

+

+      // ----- Look for a file

+      if ($p_filedescr['type'] == 'file') {

+        // ----- Look for using temporary file to zip

+        if ( (!isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) 

+            && (isset($p_options[PCLZIP_OPT_TEMP_FILE_ON])

+                || (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD])

+                    && ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] <= $p_header['size'])) ) ) {

+          $v_result = $this->privAddFileUsingTempFile($p_filedescr, $p_header, $p_options);

+          if ($v_result < PCLZIP_ERR_NO_ERROR) {

+            return $v_result;

+          }

+        }

+        

+        // ----- Use "in memory" zip algo

+        else {

+

+        // ----- Open the source file

+        if (($v_file = @fopen($p_filename, "rb")) == 0) {

+          PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to open file '$p_filename' in binary read mode");

+          return PclZip::errorCode();

+        }

+

+        // ----- Read the file content

+        $v_content = @fread($v_file, $p_header['size']);

+

+        // ----- Close the file

+        @fclose($v_file);

+

+        // ----- Calculate the CRC

+        $p_header['crc'] = @crc32($v_content);

+        

+        // ----- Look for no compression

+        if ($p_options[PCLZIP_OPT_NO_COMPRESSION]) {

+          // ----- Set header parameters

+          $p_header['compressed_size'] = $p_header['size'];

+          $p_header['compression'] = 0;

+        }

+        

+        // ----- Look for normal compression

+        else {

+          // ----- Compress the content

+          $v_content = @gzdeflate($v_content);

+

+          // ----- Set header parameters

+          $p_header['compressed_size'] = strlen($v_content);

+          $p_header['compression'] = 8;

+        }

+        

+        // ----- Call the header generation

+        if (($v_result = $this->privWriteFileHeader($p_header)) != 1) {

+          @fclose($v_file);

+          return $v_result;

+        }

+

+        // ----- Write the compressed (or not) content

+        @fwrite($this->zip_fd, $v_content, $p_header['compressed_size']);

+

+        }

+

+      }

+

+      // ----- Look for a virtual file (a file from string)

+      else if ($p_filedescr['type'] == 'virtual_file') {

+          

+        $v_content = $p_filedescr['content'];

+

+        // ----- Calculate the CRC

+        $p_header['crc'] = @crc32($v_content);

+        

+        // ----- Look for no compression

+        if ($p_options[PCLZIP_OPT_NO_COMPRESSION]) {

+          // ----- Set header parameters

+          $p_header['compressed_size'] = $p_header['size'];

+          $p_header['compression'] = 0;

+        }

+        

+        // ----- Look for normal compression

+        else {

+          // ----- Compress the content

+          $v_content = @gzdeflate($v_content);

+

+          // ----- Set header parameters

+          $p_header['compressed_size'] = strlen($v_content);

+          $p_header['compression'] = 8;

+        }

+        

+        // ----- Call the header generation

+        if (($v_result = $this->privWriteFileHeader($p_header)) != 1) {

+          @fclose($v_file);

+          return $v_result;

+        }

+

+        // ----- Write the compressed (or not) content

+        @fwrite($this->zip_fd, $v_content, $p_header['compressed_size']);

+      }

+

+      // ----- Look for a directory

+      else if ($p_filedescr['type'] == 'folder') {

+        // ----- Look for directory last '/'

+        if (@substr($p_header['stored_filename'], -1) != '/') {

+          $p_header['stored_filename'] .= '/';

+        }

+

+        // ----- Set the file properties

+        $p_header['size'] = 0;

+        //$p_header['external'] = 0x41FF0010;   // Value for a folder : to be checked

+        $p_header['external'] = 0x00000010;   // Value for a folder : to be checked

+

+        // ----- Call the header generation

+        if (($v_result = $this->privWriteFileHeader($p_header)) != 1)

+        {

+          return $v_result;

+        }

+      }

+    }

+

+    // ----- Look for post-add callback

+    if (isset($p_options[PCLZIP_CB_POST_ADD])) {

+

+      // ----- Generate a local information

+      $v_local_header = array();

+      $this->privConvertHeader2FileInfo($p_header, $v_local_header);

+

+      // ----- Call the callback

+      // Here I do not use call_user_func() because I need to send a reference to the

+      // header.

+//      eval('$v_result = '.$p_options[PCLZIP_CB_POST_ADD].'(PCLZIP_CB_POST_ADD, $v_local_header);');

+      $v_result = $p_options[PCLZIP_CB_POST_ADD](PCLZIP_CB_POST_ADD, $v_local_header);

+      if ($v_result == 0) {

+        // ----- Ignored

+        $v_result = 1;

+      }

+

+      // ----- Update the informations

+      // Nothing can be modified

+    }

+

+    // ----- Return

+    return $v_result;

+  }

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function : privAddFileUsingTempFile()

+  // Description :

+  // Parameters :

+  // Return Values :

+  // --------------------------------------------------------------------------------

+  function privAddFileUsingTempFile($p_filedescr, &$p_header, &$p_options)

+  {

+    $v_result=PCLZIP_ERR_NO_ERROR;

+    

+    // ----- Working variable

+    $p_filename = $p_filedescr['filename'];

+

+

+    // ----- Open the source file

+    if (($v_file = @fopen($p_filename, "rb")) == 0) {

+      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to open file '$p_filename' in binary read mode");

+      return PclZip::errorCode();

+    }

+

+    // ----- Creates a compressed temporary file

+    $v_gzip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.gz';

+    if (($v_file_compressed = @gzopen($v_gzip_temp_name, "wb")) == 0) {

+      fclose($v_file);

+      PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary write mode');

+      return PclZip::errorCode();

+    }

+

+    // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks

+    $v_size = filesize($p_filename);

+    while ($v_size != 0) {

+      $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);

+      $v_buffer = @fread($v_file, $v_read_size);

+      //$v_binary_data = pack('a'.$v_read_size, $v_buffer);

+      @gzputs($v_file_compressed, $v_buffer, $v_read_size);

+      $v_size -= $v_read_size;

+    }

+

+    // ----- Close the file

+    @fclose($v_file);

+    @gzclose($v_file_compressed);

+

+    // ----- Check the minimum file size

+    if (filesize($v_gzip_temp_name) < 18) {

+      PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'gzip temporary file \''.$v_gzip_temp_name.'\' has invalid filesize - should be minimum 18 bytes');

+      return PclZip::errorCode();

+    }

+

+    // ----- Extract the compressed attributes

+    if (($v_file_compressed = @fopen($v_gzip_temp_name, "rb")) == 0) {

+      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary read mode');

+      return PclZip::errorCode();

+    }

+

+    // ----- Read the gzip file header

+    $v_binary_data = @fread($v_file_compressed, 10);

+    $v_data_header = unpack('a1id1/a1id2/a1cm/a1flag/Vmtime/a1xfl/a1os', $v_binary_data);

+

+    // ----- Check some parameters

+    $v_data_header['os'] = bin2hex($v_data_header['os']);

+

+    // ----- Read the gzip file footer

+    @fseek($v_file_compressed, filesize($v_gzip_temp_name)-8);

+    $v_binary_data = @fread($v_file_compressed, 8);

+    $v_data_footer = unpack('Vcrc/Vcompressed_size', $v_binary_data);

+

+    // ----- Set the attributes

+    $p_header['compression'] = ord($v_data_header['cm']);

+    //$p_header['mtime'] = $v_data_header['mtime'];

+    $p_header['crc'] = $v_data_footer['crc'];

+    $p_header['compressed_size'] = filesize($v_gzip_temp_name)-18;

+

+    // ----- Close the file

+    @fclose($v_file_compressed);

+

+    // ----- Call the header generation

+    if (($v_result = $this->privWriteFileHeader($p_header)) != 1) {

+      return $v_result;

+    }

+

+    // ----- Add the compressed data

+    if (($v_file_compressed = @fopen($v_gzip_temp_name, "rb")) == 0)

+    {

+      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary read mode');

+      return PclZip::errorCode();

+    }

+

+    // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks

+    fseek($v_file_compressed, 10);

+    $v_size = $p_header['compressed_size'];

+    while ($v_size != 0)

+    {

+      $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);

+      $v_buffer = @fread($v_file_compressed, $v_read_size);

+      //$v_binary_data = pack('a'.$v_read_size, $v_buffer);

+      @fwrite($this->zip_fd, $v_buffer, $v_read_size);

+      $v_size -= $v_read_size;

+    }

+

+    // ----- Close the file

+    @fclose($v_file_compressed);

+

+    // ----- Unlink the temporary file

+    @unlink($v_gzip_temp_name);

+    

+    // ----- Return

+    return $v_result;

+  }

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function : privCalculateStoredFilename()

+  // Description :

+  //   Based on file descriptor properties and global options, this method

+  //   calculate the filename that will be stored in the archive.

+  // Parameters :

+  // Return Values :

+  // --------------------------------------------------------------------------------

+  function privCalculateStoredFilename(&$p_filedescr, &$p_options)

+  {

+    $v_result=1;

+    

+    // ----- Working variables

+    $p_filename = $p_filedescr['filename'];

+    if (isset($p_options[PCLZIP_OPT_ADD_PATH])) {

+      $p_add_dir = $p_options[PCLZIP_OPT_ADD_PATH];

+    }

+    else {

+      $p_add_dir = '';

+    }

+    if (isset($p_options[PCLZIP_OPT_REMOVE_PATH])) {

+      $p_remove_dir = $p_options[PCLZIP_OPT_REMOVE_PATH];

+    }

+    else {

+      $p_remove_dir = '';

+    }

+    if (isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH])) {

+      $p_remove_all_dir = $p_options[PCLZIP_OPT_REMOVE_ALL_PATH];

+    }

+    else {

+      $p_remove_all_dir = 0;

+    }

+

+

+    // ----- Look for full name change

+    if (isset($p_filedescr['new_full_name'])) {

+      // ----- Remove drive letter if any

+      $v_stored_filename = PclZipUtilTranslateWinPath($p_filedescr['new_full_name']);

+    }

+    

+    // ----- Look for path and/or short name change

+    else {

+

+      // ----- Look for short name change

+      // Its when we cahnge just the filename but not the path

+      if (isset($p_filedescr['new_short_name'])) {

+        $v_path_info = pathinfo($p_filename);

+        $v_dir = '';

+        if ($v_path_info['dirname'] != '') {

+          $v_dir = $v_path_info['dirname'].'/';

+        }

+        $v_stored_filename = $v_dir.$p_filedescr['new_short_name'];

+      }

+      else {

+        // ----- Calculate the stored filename

+        $v_stored_filename = $p_filename;

+      }

+

+      // ----- Look for all path to remove

+      if ($p_remove_all_dir) {

+        $v_stored_filename = basename($p_filename);

+      }

+      // ----- Look for partial path remove

+      else if ($p_remove_dir != "") {

+        if (substr($p_remove_dir, -1) != '/')

+          $p_remove_dir .= "/";

+

+        if (   (substr($p_filename, 0, 2) == "./")

+            || (substr($p_remove_dir, 0, 2) == "./")) {

+            

+          if (   (substr($p_filename, 0, 2) == "./")

+              && (substr($p_remove_dir, 0, 2) != "./")) {

+            $p_remove_dir = "./".$p_remove_dir;

+          }

+          if (   (substr($p_filename, 0, 2) != "./")

+              && (substr($p_remove_dir, 0, 2) == "./")) {

+            $p_remove_dir = substr($p_remove_dir, 2);

+          }

+        }

+

+        $v_compare = PclZipUtilPathInclusion($p_remove_dir,

+                                             $v_stored_filename);

+        if ($v_compare > 0) {

+          if ($v_compare == 2) {

+            $v_stored_filename = "";

+          }

+          else {

+            $v_stored_filename = substr($v_stored_filename,

+                                        strlen($p_remove_dir));

+          }

+        }

+      }

+      

+      // ----- Remove drive letter if any

+      $v_stored_filename = PclZipUtilTranslateWinPath($v_stored_filename);

+      

+      // ----- Look for path to add

+      if ($p_add_dir != "") {

+        if (substr($p_add_dir, -1) == "/")

+          $v_stored_filename = $p_add_dir.$v_stored_filename;

+        else

+          $v_stored_filename = $p_add_dir."/".$v_stored_filename;

+      }

+    }

+

+    // ----- Filename (reduce the path of stored name)

+    $v_stored_filename = PclZipUtilPathReduction($v_stored_filename);

+    $p_filedescr['stored_filename'] = $v_stored_filename;

+    

+    // ----- Return

+    return $v_result;

+  }

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function : privWriteFileHeader()

+  // Description :

+  // Parameters :

+  // Return Values :

+  // --------------------------------------------------------------------------------

+  function privWriteFileHeader(&$p_header)

+  {

+    $v_result=1;

+

+    // ----- Store the offset position of the file

+    $p_header['offset'] = ftell($this->zip_fd);

+

+    // ----- Transform UNIX mtime to DOS format mdate/mtime

+    $v_date = getdate($p_header['mtime']);

+    $v_mtime = ($v_date['hours']<<11) + ($v_date['minutes']<<5) + $v_date['seconds']/2;

+    $v_mdate = (($v_date['year']-1980)<<9) + ($v_date['mon']<<5) + $v_date['mday'];

+

+    // ----- Packed data

+    $v_binary_data = pack("VvvvvvVVVvv", 0x04034b50,

+	                      $p_header['version_extracted'], $p_header['flag'],

+                          $p_header['compression'], $v_mtime, $v_mdate,

+                          $p_header['crc'], $p_header['compressed_size'],

+						  $p_header['size'],

+                          strlen($p_header['stored_filename']),

+						  $p_header['extra_len']);

+

+    // ----- Write the first 148 bytes of the header in the archive

+    fputs($this->zip_fd, $v_binary_data, 30);

+

+    // ----- Write the variable fields

+    if (strlen($p_header['stored_filename']) != 0)

+    {

+      fputs($this->zip_fd, $p_header['stored_filename'], strlen($p_header['stored_filename']));

+    }

+    if ($p_header['extra_len'] != 0)

+    {

+      fputs($this->zip_fd, $p_header['extra'], $p_header['extra_len']);

+    }

+

+    // ----- Return

+    return $v_result;

+  }

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function : privWriteCentralFileHeader()

+  // Description :

+  // Parameters :

+  // Return Values :

+  // --------------------------------------------------------------------------------

+  function privWriteCentralFileHeader(&$p_header)

+  {

+    $v_result=1;

+

+    // TBC

+    //for(reset($p_header); $key = key($p_header); next($p_header)) {

+    //}

+

+    // ----- Transform UNIX mtime to DOS format mdate/mtime

+    $v_date = getdate($p_header['mtime']);

+    $v_mtime = ($v_date['hours']<<11) + ($v_date['minutes']<<5) + $v_date['seconds']/2;

+    $v_mdate = (($v_date['year']-1980)<<9) + ($v_date['mon']<<5) + $v_date['mday'];

+

+

+    // ----- Packed data

+    $v_binary_data = pack("VvvvvvvVVVvvvvvVV", 0x02014b50,

+	                      $p_header['version'], $p_header['version_extracted'],

+                          $p_header['flag'], $p_header['compression'],

+						  $v_mtime, $v_mdate, $p_header['crc'],

+                          $p_header['compressed_size'], $p_header['size'],

+                          strlen($p_header['stored_filename']),

+						  $p_header['extra_len'], $p_header['comment_len'],

+                          $p_header['disk'], $p_header['internal'],

+						  $p_header['external'], $p_header['offset']);

+

+    // ----- Write the 42 bytes of the header in the zip file

+    fputs($this->zip_fd, $v_binary_data, 46);

+

+    // ----- Write the variable fields

+    if (strlen($p_header['stored_filename']) != 0)

+    {

+      fputs($this->zip_fd, $p_header['stored_filename'], strlen($p_header['stored_filename']));

+    }

+    if ($p_header['extra_len'] != 0)

+    {

+      fputs($this->zip_fd, $p_header['extra'], $p_header['extra_len']);

+    }

+    if ($p_header['comment_len'] != 0)

+    {

+      fputs($this->zip_fd, $p_header['comment'], $p_header['comment_len']);

+    }

+

+    // ----- Return

+    return $v_result;

+  }

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function : privWriteCentralHeader()

+  // Description :

+  // Parameters :

+  // Return Values :

+  // --------------------------------------------------------------------------------

+  function privWriteCentralHeader($p_nb_entries, $p_size, $p_offset, $p_comment)

+  {

+    $v_result=1;

+

+    // ----- Packed data

+    $v_binary_data = pack("VvvvvVVv", 0x06054b50, 0, 0, $p_nb_entries,

+	                      $p_nb_entries, $p_size,

+						  $p_offset, strlen($p_comment));

+

+    // ----- Write the 22 bytes of the header in the zip file

+    fputs($this->zip_fd, $v_binary_data, 22);

+

+    // ----- Write the variable fields

+    if (strlen($p_comment) != 0)

+    {

+      fputs($this->zip_fd, $p_comment, strlen($p_comment));

+    }

+

+    // ----- Return

+    return $v_result;

+  }

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function : privList()

+  // Description :

+  // Parameters :

+  // Return Values :

+  // --------------------------------------------------------------------------------

+  function privList(&$p_list)

+  {

+    $v_result=1;

+

+    // ----- Magic quotes trick

+    $this->privDisableMagicQuotes();

+

+    // ----- Open the zip file

+    if (($this->zip_fd = @fopen($this->zipname, 'rb')) == 0)

+    {

+      // ----- Magic quotes trick

+      $this->privSwapBackMagicQuotes();

+      

+      // ----- Error log

+      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in binary read mode');

+

+      // ----- Return

+      return PclZip::errorCode();

+    }

+

+    // ----- Read the central directory informations

+    $v_central_dir = array();

+    if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1)

+    {

+      $this->privSwapBackMagicQuotes();

+      return $v_result;

+    }

+

+    // ----- Go to beginning of Central Dir

+    @rewind($this->zip_fd);

+    if (@fseek($this->zip_fd, $v_central_dir['offset']))

+    {

+      $this->privSwapBackMagicQuotes();

+

+      // ----- Error log

+      PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size');

+

+      // ----- Return

+      return PclZip::errorCode();

+    }

+

+    // ----- Read each entry

+    for ($i=0; $i<$v_central_dir['entries']; $i++)

+    {

+      // ----- Read the file header

+      if (($v_result = $this->privReadCentralFileHeader($v_header)) != 1)

+      {

+        $this->privSwapBackMagicQuotes();

+        return $v_result;

+      }

+      $v_header['index'] = $i;

+

+      // ----- Get the only interesting attributes

+      $this->privConvertHeader2FileInfo($v_header, $p_list[$i]);

+      unset($v_header);

+    }

+

+    // ----- Close the zip file

+    $this->privCloseFd();

+

+    // ----- Magic quotes trick

+    $this->privSwapBackMagicQuotes();

+

+    // ----- Return

+    return $v_result;

+  }

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function : privConvertHeader2FileInfo()

+  // Description :

+  //   This function takes the file informations from the central directory

+  //   entries and extract the interesting parameters that will be given back.

+  //   The resulting file infos are set in the array $p_info

+  //     $p_info['filename'] : Filename with full path. Given by user (add),

+  //                           extracted in the filesystem (extract).

+  //     $p_info['stored_filename'] : Stored filename in the archive.

+  //     $p_info['size'] = Size of the file.

+  //     $p_info['compressed_size'] = Compressed size of the file.

+  //     $p_info['mtime'] = Last modification date of the file.

+  //     $p_info['comment'] = Comment associated with the file.

+  //     $p_info['folder'] = true/false : indicates if the entry is a folder or not.

+  //     $p_info['status'] = status of the action on the file.

+  //     $p_info['crc'] = CRC of the file content.

+  // Parameters :

+  // Return Values :

+  // --------------------------------------------------------------------------------

+  function privConvertHeader2FileInfo($p_header, &$p_info)

+  {

+    $v_result=1;

+

+    // ----- Get the interesting attributes

+    $v_temp_path = PclZipUtilPathReduction($p_header['filename']);

+    $p_info['filename'] = $v_temp_path;

+    $v_temp_path = PclZipUtilPathReduction($p_header['stored_filename']);

+    $p_info['stored_filename'] = $v_temp_path;

+    $p_info['size'] = $p_header['size'];

+    $p_info['compressed_size'] = $p_header['compressed_size'];

+    $p_info['mtime'] = $p_header['mtime'];

+    $p_info['comment'] = $p_header['comment'];

+    $p_info['folder'] = (($p_header['external']&0x00000010)==0x00000010);

+    $p_info['index'] = $p_header['index'];

+    $p_info['status'] = $p_header['status'];

+    $p_info['crc'] = $p_header['crc'];

+

+    // ----- Return

+    return $v_result;

+  }

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function : privExtractByRule()

+  // Description :

+  //   Extract a file or directory depending of rules (by index, by name, ...)

+  // Parameters :

+  //   $p_file_list : An array where will be placed the properties of each

+  //                  extracted file

+  //   $p_path : Path to add while writing the extracted files

+  //   $p_remove_path : Path to remove (from the file memorized path) while writing the

+  //                    extracted files. If the path does not match the file path,

+  //                    the file is extracted with its memorized path.

+  //                    $p_remove_path does not apply to 'list' mode.

+  //                    $p_path and $p_remove_path are commulative.

+  // Return Values :

+  //   1 on success,0 or less on error (see error code list)

+  // --------------------------------------------------------------------------------

+  function privExtractByRule(&$p_file_list, $p_path, $p_remove_path, $p_remove_all_path, &$p_options)

+  {

+    $v_result=1;

+

+    // ----- Magic quotes trick

+    $this->privDisableMagicQuotes();

+

+    // ----- Check the path

+    if (   ($p_path == "")

+	    || (   (substr($p_path, 0, 1) != "/")

+		    && (substr($p_path, 0, 3) != "../")

+			&& (substr($p_path,1,2)!=":/")))

+      $p_path = "./".$p_path;

+

+    // ----- Reduce the path last (and duplicated) '/'

+    if (($p_path != "./") && ($p_path != "/"))

+    {

+      // ----- Look for the path end '/'

+      while (substr($p_path, -1) == "/")

+      {

+        $p_path = substr($p_path, 0, strlen($p_path)-1);

+      }

+    }

+

+    // ----- Look for path to remove format (should end by /)

+    if (($p_remove_path != "") && (substr($p_remove_path, -1) != '/'))

+    {

+      $p_remove_path .= '/';

+    }

+    $p_remove_path_size = strlen($p_remove_path);

+

+    // ----- Open the zip file

+    if (($v_result = $this->privOpenFd('rb')) != 1)

+    {

+      $this->privSwapBackMagicQuotes();

+      return $v_result;

+    }

+

+    // ----- Read the central directory informations

+    $v_central_dir = array();

+    if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1)

+    {

+      // ----- Close the zip file

+      $this->privCloseFd();

+      $this->privSwapBackMagicQuotes();

+

+      return $v_result;

+    }

+

+    // ----- Start at beginning of Central Dir

+    $v_pos_entry = $v_central_dir['offset'];

+

+    // ----- Read each entry

+    $j_start = 0;

+    for ($i=0, $v_nb_extracted=0; $i<$v_central_dir['entries']; $i++)

+    {

+

+      // ----- Read next Central dir entry

+      @rewind($this->zip_fd);

+      if (@fseek($this->zip_fd, $v_pos_entry))

+      {

+        // ----- Close the zip file

+        $this->privCloseFd();

+        $this->privSwapBackMagicQuotes();

+

+        // ----- Error log

+        PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size');

+

+        // ----- Return

+        return PclZip::errorCode();

+      }

+

+      // ----- Read the file header

+      $v_header = array();

+      if (($v_result = $this->privReadCentralFileHeader($v_header)) != 1)

+      {

+        // ----- Close the zip file

+        $this->privCloseFd();

+        $this->privSwapBackMagicQuotes();

+

+        return $v_result;

+      }

+

+      // ----- Store the index

+      $v_header['index'] = $i;

+

+      // ----- Store the file position

+      $v_pos_entry = ftell($this->zip_fd);

+

+      // ----- Look for the specific extract rules

+      $v_extract = false;

+

+      // ----- Look for extract by name rule

+      if (   (isset($p_options[PCLZIP_OPT_BY_NAME]))

+          && ($p_options[PCLZIP_OPT_BY_NAME] != 0)) {

+

+          // ----- Look if the filename is in the list

+          for ($j=0; ($j<sizeof($p_options[PCLZIP_OPT_BY_NAME])) && (!$v_extract); $j++) {

+

+              // ----- Look for a directory

+              if (substr($p_options[PCLZIP_OPT_BY_NAME][$j], -1) == "/") {

+

+                  // ----- Look if the directory is in the filename path

+                  if (   (strlen($v_header['stored_filename']) > strlen($p_options[PCLZIP_OPT_BY_NAME][$j]))

+                      && (substr($v_header['stored_filename'], 0, strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) == $p_options[PCLZIP_OPT_BY_NAME][$j])) {

+                      $v_extract = true;

+                  }

+              }

+              // ----- Look for a filename

+              elseif ($v_header['stored_filename'] == $p_options[PCLZIP_OPT_BY_NAME][$j]) {

+                  $v_extract = true;

+              }

+          }

+      }

+

+      // ----- Look for extract by ereg rule

+      // ereg() is deprecated with PHP 5.3

+      /* 

+      else if (   (isset($p_options[PCLZIP_OPT_BY_EREG]))

+               && ($p_options[PCLZIP_OPT_BY_EREG] != "")) {

+

+          if (ereg($p_options[PCLZIP_OPT_BY_EREG], $v_header['stored_filename'])) {

+              $v_extract = true;

+          }

+      }

+      */

+

+      // ----- Look for extract by preg rule

+      else if (   (isset($p_options[PCLZIP_OPT_BY_PREG]))

+               && ($p_options[PCLZIP_OPT_BY_PREG] != "")) {

+

+          if (preg_match($p_options[PCLZIP_OPT_BY_PREG], $v_header['stored_filename'])) {

+              $v_extract = true;

+          }

+      }

+

+      // ----- Look for extract by index rule

+      else if (   (isset($p_options[PCLZIP_OPT_BY_INDEX]))

+               && ($p_options[PCLZIP_OPT_BY_INDEX] != 0)) {

+          

+          // ----- Look if the index is in the list

+          for ($j=$j_start; ($j<sizeof($p_options[PCLZIP_OPT_BY_INDEX])) && (!$v_extract); $j++) {

+

+              if (($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['start']) && ($i<=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end'])) {

+                  $v_extract = true;

+              }

+              if ($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end']) {

+                  $j_start = $j+1;

+              }

+

+              if ($p_options[PCLZIP_OPT_BY_INDEX][$j]['start']>$i) {

+                  break;

+              }

+          }

+      }

+

+      // ----- Look for no rule, which means extract all the archive

+      else {

+          $v_extract = true;

+      }

+

+	  // ----- Check compression method

+	  if (   ($v_extract)

+	      && (   ($v_header['compression'] != 8)

+		      && ($v_header['compression'] != 0))) {

+          $v_header['status'] = 'unsupported_compression';

+

+          // ----- Look for PCLZIP_OPT_STOP_ON_ERROR

+          if (   (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR]))

+		      && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) {

+

+              $this->privSwapBackMagicQuotes();

+              

+              PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_COMPRESSION,

+			                       "Filename '".$v_header['stored_filename']."' is "

+				  	    	  	   ."compressed by an unsupported compression "

+				  	    	  	   ."method (".$v_header['compression'].") ");

+

+              return PclZip::errorCode();

+		  }

+	  }

+	  

+	  // ----- Check encrypted files

+	  if (($v_extract) && (($v_header['flag'] & 1) == 1)) {

+          $v_header['status'] = 'unsupported_encryption';

+

+          // ----- Look for PCLZIP_OPT_STOP_ON_ERROR

+          if (   (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR]))

+		      && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) {

+

+              $this->privSwapBackMagicQuotes();

+

+              PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_ENCRYPTION,

+			                       "Unsupported encryption for "

+				  	    	  	   ." filename '".$v_header['stored_filename']

+								   ."'");

+

+              return PclZip::errorCode();

+		  }

+    }

+

+      // ----- Look for real extraction

+      if (($v_extract) && ($v_header['status'] != 'ok')) {

+          $v_result = $this->privConvertHeader2FileInfo($v_header,

+		                                        $p_file_list[$v_nb_extracted++]);

+          if ($v_result != 1) {

+              $this->privCloseFd();

+              $this->privSwapBackMagicQuotes();

+              return $v_result;

+          }

+

+          $v_extract = false;

+      }

+      

+      // ----- Look for real extraction

+      if ($v_extract)

+      {

+

+        // ----- Go to the file position

+        @rewind($this->zip_fd);

+        if (@fseek($this->zip_fd, $v_header['offset']))

+        {

+          // ----- Close the zip file

+          $this->privCloseFd();

+

+          $this->privSwapBackMagicQuotes();

+

+          // ----- Error log

+          PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size');

+

+          // ----- Return

+          return PclZip::errorCode();

+        }

+

+        // ----- Look for extraction as string

+        if ($p_options[PCLZIP_OPT_EXTRACT_AS_STRING]) {

+

+          $v_string = '';

+

+          // ----- Extracting the file

+          $v_result1 = $this->privExtractFileAsString($v_header, $v_string, $p_options);

+          if ($v_result1 < 1) {

+            $this->privCloseFd();

+            $this->privSwapBackMagicQuotes();

+            return $v_result1;

+          }

+

+          // ----- Get the only interesting attributes

+          if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted])) != 1)

+          {

+            // ----- Close the zip file

+            $this->privCloseFd();

+            $this->privSwapBackMagicQuotes();

+

+            return $v_result;

+          }

+

+          // ----- Set the file content

+          $p_file_list[$v_nb_extracted]['content'] = $v_string;

+

+          // ----- Next extracted file

+          $v_nb_extracted++;

+          

+          // ----- Look for user callback abort

+          if ($v_result1 == 2) {

+          	break;

+          }

+        }

+        // ----- Look for extraction in standard output

+        elseif (   (isset($p_options[PCLZIP_OPT_EXTRACT_IN_OUTPUT]))

+		        && ($p_options[PCLZIP_OPT_EXTRACT_IN_OUTPUT])) {

+          // ----- Extracting the file in standard output

+          $v_result1 = $this->privExtractFileInOutput($v_header, $p_options);

+          if ($v_result1 < 1) {

+            $this->privCloseFd();

+            $this->privSwapBackMagicQuotes();

+            return $v_result1;

+          }

+

+          // ----- Get the only interesting attributes

+          if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted++])) != 1) {

+            $this->privCloseFd();

+            $this->privSwapBackMagicQuotes();

+            return $v_result;

+          }

+

+          // ----- Look for user callback abort

+          if ($v_result1 == 2) {

+          	break;

+          }

+        }

+        // ----- Look for normal extraction

+        else {

+          // ----- Extracting the file

+          $v_result1 = $this->privExtractFile($v_header,

+		                                      $p_path, $p_remove_path,

+											  $p_remove_all_path,

+											  $p_options);

+          if ($v_result1 < 1) {

+            $this->privCloseFd();

+            $this->privSwapBackMagicQuotes();

+            return $v_result1;

+          }

+

+          // ----- Get the only interesting attributes

+          if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted++])) != 1)

+          {

+            // ----- Close the zip file

+            $this->privCloseFd();

+            $this->privSwapBackMagicQuotes();

+

+            return $v_result;

+          }

+

+          // ----- Look for user callback abort

+          if ($v_result1 == 2) {

+          	break;

+          }

+        }

+      }

+    }

+

+    // ----- Close the zip file

+    $this->privCloseFd();

+    $this->privSwapBackMagicQuotes();

+

+    // ----- Return

+    return $v_result;

+  }

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function : privExtractFile()

+  // Description :

+  // Parameters :

+  // Return Values :

+  //

+  // 1 : ... ?

+  // PCLZIP_ERR_USER_ABORTED(2) : User ask for extraction stop in callback

+  // --------------------------------------------------------------------------------

+  function privExtractFile(&$p_entry, $p_path, $p_remove_path, $p_remove_all_path, &$p_options)

+  {

+    $v_result=1;

+

+    // ----- Read the file header

+    if (($v_result = $this->privReadFileHeader($v_header)) != 1)

+    {

+      // ----- Return

+      return $v_result;

+    }

+

+

+    // ----- Check that the file header is coherent with $p_entry info

+    if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) {

+        // TBC

+    }

+

+    // ----- Look for all path to remove

+    if ($p_remove_all_path == true) {

+        // ----- Look for folder entry that not need to be extracted

+        if (($p_entry['external']&0x00000010)==0x00000010) {

+

+            $p_entry['status'] = "filtered";

+

+            return $v_result;

+        }

+

+        // ----- Get the basename of the path

+        $p_entry['filename'] = basename($p_entry['filename']);

+    }

+

+    // ----- Look for path to remove

+    else if ($p_remove_path != "")

+    {

+      if (PclZipUtilPathInclusion($p_remove_path, $p_entry['filename']) == 2)

+      {

+

+        // ----- Change the file status

+        $p_entry['status'] = "filtered";

+

+        // ----- Return

+        return $v_result;

+      }

+

+      $p_remove_path_size = strlen($p_remove_path);

+      if (substr($p_entry['filename'], 0, $p_remove_path_size) == $p_remove_path)

+      {

+

+        // ----- Remove the path

+        $p_entry['filename'] = substr($p_entry['filename'], $p_remove_path_size);

+

+      }

+    }

+

+    // ----- Add the path

+    if ($p_path != '') {

+      $p_entry['filename'] = $p_path."/".$p_entry['filename'];

+    }

+    

+    // ----- Check a base_dir_restriction

+    if (isset($p_options[PCLZIP_OPT_EXTRACT_DIR_RESTRICTION])) {

+      $v_inclusion

+      = PclZipUtilPathInclusion($p_options[PCLZIP_OPT_EXTRACT_DIR_RESTRICTION],

+                                $p_entry['filename']); 

+      if ($v_inclusion == 0) {

+

+        PclZip::privErrorLog(PCLZIP_ERR_DIRECTORY_RESTRICTION,

+			                     "Filename '".$p_entry['filename']."' is "

+								 ."outside PCLZIP_OPT_EXTRACT_DIR_RESTRICTION");

+

+        return PclZip::errorCode();

+      }

+    }

+

+    // ----- Look for pre-extract callback

+    if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) {

+

+      // ----- Generate a local information

+      $v_local_header = array();

+      $this->privConvertHeader2FileInfo($p_entry, $v_local_header);

+

+      // ----- Call the callback

+      // Here I do not use call_user_func() because I need to send a reference to the

+      // header.

+//      eval('$v_result = '.$p_options[PCLZIP_CB_PRE_EXTRACT].'(PCLZIP_CB_PRE_EXTRACT, $v_local_header);');

+      $v_result = $p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, $v_local_header);

+      if ($v_result == 0) {

+        // ----- Change the file status

+        $p_entry['status'] = "skipped";

+        $v_result = 1;

+      }

+      

+      // ----- Look for abort result

+      if ($v_result == 2) {

+        // ----- This status is internal and will be changed in 'skipped'

+        $p_entry['status'] = "aborted";

+      	$v_result = PCLZIP_ERR_USER_ABORTED;

+      }

+

+      // ----- Update the informations

+      // Only some fields can be modified

+      $p_entry['filename'] = $v_local_header['filename'];

+    }

+

+

+    // ----- Look if extraction should be done

+    if ($p_entry['status'] == 'ok') {

+

+    // ----- Look for specific actions while the file exist

+    if (file_exists($p_entry['filename']))

+    {

+

+      // ----- Look if file is a directory

+      if (is_dir($p_entry['filename']))

+      {

+

+        // ----- Change the file status

+        $p_entry['status'] = "already_a_directory";

+        

+        // ----- Look for PCLZIP_OPT_STOP_ON_ERROR

+        // For historical reason first PclZip implementation does not stop

+        // when this kind of error occurs.

+        if (   (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR]))

+		    && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) {

+

+            PclZip::privErrorLog(PCLZIP_ERR_ALREADY_A_DIRECTORY,

+			                     "Filename '".$p_entry['filename']."' is "

+								 ."already used by an existing directory");

+

+            return PclZip::errorCode();

+		    }

+      }

+      // ----- Look if file is write protected

+      else if (!is_writeable($p_entry['filename']))

+      {

+

+        // ----- Change the file status

+        $p_entry['status'] = "write_protected";

+

+        // ----- Look for PCLZIP_OPT_STOP_ON_ERROR

+        // For historical reason first PclZip implementation does not stop

+        // when this kind of error occurs.

+        if (   (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR]))

+		    && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) {

+

+            PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL,

+			                     "Filename '".$p_entry['filename']."' exists "

+								 ."and is write protected");

+

+            return PclZip::errorCode();

+		    }

+      }

+

+      // ----- Look if the extracted file is older

+      else if (filemtime($p_entry['filename']) > $p_entry['mtime'])

+      {

+        // ----- Change the file status

+        if (   (isset($p_options[PCLZIP_OPT_REPLACE_NEWER]))

+		    && ($p_options[PCLZIP_OPT_REPLACE_NEWER]===true)) {

+	  	  }

+		    else {

+            $p_entry['status'] = "newer_exist";

+

+            // ----- Look for PCLZIP_OPT_STOP_ON_ERROR

+            // For historical reason first PclZip implementation does not stop

+            // when this kind of error occurs.

+            if (   (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR]))

+		        && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) {

+

+                PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL,

+			             "Newer version of '".$p_entry['filename']."' exists "

+					    ."and option PCLZIP_OPT_REPLACE_NEWER is not selected");

+

+                return PclZip::errorCode();

+		      }

+		    }

+      }

+      else {

+      }

+    }

+

+    // ----- Check the directory availability and create it if necessary

+    else {

+      if ((($p_entry['external']&0x00000010)==0x00000010) || (substr($p_entry['filename'], -1) == '/'))

+        $v_dir_to_check = $p_entry['filename'];

+      else if (!strstr($p_entry['filename'], "/"))

+        $v_dir_to_check = "";

+      else

+        $v_dir_to_check = dirname($p_entry['filename']);

+

+        if (($v_result = $this->privDirCheck($v_dir_to_check, (($p_entry['external']&0x00000010)==0x00000010))) != 1) {

+  

+          // ----- Change the file status

+          $p_entry['status'] = "path_creation_fail";

+  

+          // ----- Return

+          //return $v_result;

+          $v_result = 1;

+        }

+      }

+    }

+

+    // ----- Look if extraction should be done

+    if ($p_entry['status'] == 'ok') {

+

+      // ----- Do the extraction (if not a folder)

+      if (!(($p_entry['external']&0x00000010)==0x00000010))

+      {

+        // ----- Look for not compressed file

+        if ($p_entry['compression'] == 0) {

+

+    		  // ----- Opening destination file

+          if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0)

+          {

+

+            // ----- Change the file status

+            $p_entry['status'] = "write_error";

+

+            // ----- Return

+            return $v_result;

+          }

+

+

+          // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks

+          $v_size = $p_entry['compressed_size'];

+          while ($v_size != 0)

+          {

+            $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);

+            $v_buffer = @fread($this->zip_fd, $v_read_size);

+            /* Try to speed up the code

+            $v_binary_data = pack('a'.$v_read_size, $v_buffer);

+            @fwrite($v_dest_file, $v_binary_data, $v_read_size);

+            */

+            @fwrite($v_dest_file, $v_buffer, $v_read_size);            

+            $v_size -= $v_read_size;

+          }

+

+          // ----- Closing the destination file

+          fclose($v_dest_file);

+

+          // ----- Change the file mtime

+          touch($p_entry['filename'], $p_entry['mtime']);

+          

+

+        }

+        else {

+          // ----- TBC

+          // Need to be finished

+          if (($p_entry['flag'] & 1) == 1) {

+            PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_ENCRYPTION, 'File \''.$p_entry['filename'].'\' is encrypted. Encrypted files are not supported.');

+            return PclZip::errorCode();

+          }

+

+

+          // ----- Look for using temporary file to unzip

+          if ( (!isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) 

+              && (isset($p_options[PCLZIP_OPT_TEMP_FILE_ON])

+                  || (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD])

+                      && ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] <= $p_entry['size'])) ) ) {

+            $v_result = $this->privExtractFileUsingTempFile($p_entry, $p_options);

+            if ($v_result < PCLZIP_ERR_NO_ERROR) {

+              return $v_result;

+            }

+          }

+          

+          // ----- Look for extract in memory

+          else {

+

+          

+            // ----- Read the compressed file in a buffer (one shot)

+            $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']);

+            

+            // ----- Decompress the file

+            $v_file_content = @gzinflate($v_buffer);

+            unset($v_buffer);

+            if ($v_file_content === FALSE) {

+  

+              // ----- Change the file status

+              // TBC

+              $p_entry['status'] = "error";

+              

+              return $v_result;

+            }

+            

+            // ----- Opening destination file

+            if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0) {

+  

+              // ----- Change the file status

+              $p_entry['status'] = "write_error";

+  

+              return $v_result;

+            }

+  

+            // ----- Write the uncompressed data

+            @fwrite($v_dest_file, $v_file_content, $p_entry['size']);

+            unset($v_file_content);

+  

+            // ----- Closing the destination file

+            @fclose($v_dest_file);

+            

+          }

+

+          // ----- Change the file mtime

+          @touch($p_entry['filename'], $p_entry['mtime']);

+        }

+

+        // ----- Look for chmod option

+        if (isset($p_options[PCLZIP_OPT_SET_CHMOD])) {

+

+          // ----- Change the mode of the file

+          @chmod($p_entry['filename'], $p_options[PCLZIP_OPT_SET_CHMOD]);

+        }

+

+      }

+    }

+

+  	// ----- Change abort status

+  	if ($p_entry['status'] == "aborted") {

+        $p_entry['status'] = "skipped";

+  	}

+	

+    // ----- Look for post-extract callback

+    elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) {

+

+      // ----- Generate a local information

+      $v_local_header = array();

+      $this->privConvertHeader2FileInfo($p_entry, $v_local_header);

+

+      // ----- Call the callback

+      // Here I do not use call_user_func() because I need to send a reference to the

+      // header.

+//      eval('$v_result = '.$p_options[PCLZIP_CB_POST_EXTRACT].'(PCLZIP_CB_POST_EXTRACT, $v_local_header);');

+      $v_result = $p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, $v_local_header);

+

+      // ----- Look for abort result

+      if ($v_result == 2) {

+      	$v_result = PCLZIP_ERR_USER_ABORTED;

+      }

+    }

+

+    // ----- Return

+    return $v_result;

+  }

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function : privExtractFileUsingTempFile()

+  // Description :

+  // Parameters :

+  // Return Values :

+  // --------------------------------------------------------------------------------

+  function privExtractFileUsingTempFile(&$p_entry, &$p_options)

+  {

+    $v_result=1;

+        

+    // ----- Creates a temporary file

+    $v_gzip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.gz';

+    if (($v_dest_file = @fopen($v_gzip_temp_name, "wb")) == 0) {

+      fclose($v_file);

+      PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary write mode');

+      return PclZip::errorCode();

+    }

+

+

+    // ----- Write gz file format header

+    $v_binary_data = pack('va1a1Va1a1', 0x8b1f, Chr($p_entry['compression']), Chr(0x00), time(), Chr(0x00), Chr(3));

+    @fwrite($v_dest_file, $v_binary_data, 10);

+

+    // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks

+    $v_size = $p_entry['compressed_size'];

+    while ($v_size != 0)

+    {

+      $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);

+      $v_buffer = @fread($this->zip_fd, $v_read_size);

+      //$v_binary_data = pack('a'.$v_read_size, $v_buffer);

+      @fwrite($v_dest_file, $v_buffer, $v_read_size);

+      $v_size -= $v_read_size;

+    }

+

+    // ----- Write gz file format footer

+    $v_binary_data = pack('VV', $p_entry['crc'], $p_entry['size']);

+    @fwrite($v_dest_file, $v_binary_data, 8);

+

+    // ----- Close the temporary file

+    @fclose($v_dest_file);

+

+    // ----- Opening destination file

+    if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0) {

+      $p_entry['status'] = "write_error";

+      return $v_result;

+    }

+

+    // ----- Open the temporary gz file

+    if (($v_src_file = @gzopen($v_gzip_temp_name, 'rb')) == 0) {

+      @fclose($v_dest_file);

+      $p_entry['status'] = "read_error";

+      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary read mode');

+      return PclZip::errorCode();

+    }

+

+

+    // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks

+    $v_size = $p_entry['size'];

+    while ($v_size != 0) {

+      $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);

+      $v_buffer = @gzread($v_src_file, $v_read_size);

+      //$v_binary_data = pack('a'.$v_read_size, $v_buffer);

+      @fwrite($v_dest_file, $v_buffer, $v_read_size);

+      $v_size -= $v_read_size;

+    }

+    @fclose($v_dest_file);

+    @gzclose($v_src_file);

+

+    // ----- Delete the temporary file

+    @unlink($v_gzip_temp_name);

+    

+    // ----- Return

+    return $v_result;

+  }

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function : privExtractFileInOutput()

+  // Description :

+  // Parameters :

+  // Return Values :

+  // --------------------------------------------------------------------------------

+  function privExtractFileInOutput(&$p_entry, &$p_options)

+  {

+    $v_result=1;

+

+    // ----- Read the file header

+    if (($v_result = $this->privReadFileHeader($v_header)) != 1) {

+      return $v_result;

+    }

+

+

+    // ----- Check that the file header is coherent with $p_entry info

+    if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) {

+        // TBC

+    }

+

+    // ----- Look for pre-extract callback

+    if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) {

+

+      // ----- Generate a local information

+      $v_local_header = array();

+      $this->privConvertHeader2FileInfo($p_entry, $v_local_header);

+

+      // ----- Call the callback

+      // Here I do not use call_user_func() because I need to send a reference to the

+      // header.

+//      eval('$v_result = '.$p_options[PCLZIP_CB_PRE_EXTRACT].'(PCLZIP_CB_PRE_EXTRACT, $v_local_header);');

+      $v_result = $p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, $v_local_header);

+      if ($v_result == 0) {

+        // ----- Change the file status

+        $p_entry['status'] = "skipped";

+        $v_result = 1;

+      }

+

+      // ----- Look for abort result

+      if ($v_result == 2) {

+        // ----- This status is internal and will be changed in 'skipped'

+        $p_entry['status'] = "aborted";

+      	$v_result = PCLZIP_ERR_USER_ABORTED;

+      }

+

+      // ----- Update the informations

+      // Only some fields can be modified

+      $p_entry['filename'] = $v_local_header['filename'];

+    }

+

+    // ----- Trace

+

+    // ----- Look if extraction should be done

+    if ($p_entry['status'] == 'ok') {

+

+      // ----- Do the extraction (if not a folder)

+      if (!(($p_entry['external']&0x00000010)==0x00000010)) {

+        // ----- Look for not compressed file

+        if ($p_entry['compressed_size'] == $p_entry['size']) {

+

+          // ----- Read the file in a buffer (one shot)

+          $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']);

+

+          // ----- Send the file to the output

+          echo $v_buffer;

+          unset($v_buffer);

+        }

+        else {

+

+          // ----- Read the compressed file in a buffer (one shot)

+          $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']);

+          

+          // ----- Decompress the file

+          $v_file_content = gzinflate($v_buffer);

+          unset($v_buffer);

+

+          // ----- Send the file to the output

+          echo $v_file_content;

+          unset($v_file_content);

+        }

+      }

+    }

+

+	// ----- Change abort status

+	if ($p_entry['status'] == "aborted") {

+      $p_entry['status'] = "skipped";

+	}

+

+    // ----- Look for post-extract callback

+    elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) {

+

+      // ----- Generate a local information

+      $v_local_header = array();

+      $this->privConvertHeader2FileInfo($p_entry, $v_local_header);

+

+      // ----- Call the callback

+      // Here I do not use call_user_func() because I need to send a reference to the

+      // header.

+//      eval('$v_result = '.$p_options[PCLZIP_CB_POST_EXTRACT].'(PCLZIP_CB_POST_EXTRACT, $v_local_header);');

+      $v_result = $p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, $v_local_header);

+

+      // ----- Look for abort result

+      if ($v_result == 2) {

+      	$v_result = PCLZIP_ERR_USER_ABORTED;

+      }

+    }

+

+    return $v_result;

+  }

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function : privExtractFileAsString()

+  // Description :

+  // Parameters :

+  // Return Values :

+  // --------------------------------------------------------------------------------

+  function privExtractFileAsString(&$p_entry, &$p_string, &$p_options)

+  {

+    $v_result=1;

+

+    // ----- Read the file header

+    $v_header = array();

+    if (($v_result = $this->privReadFileHeader($v_header)) != 1)

+    {

+      // ----- Return

+      return $v_result;

+    }

+

+

+    // ----- Check that the file header is coherent with $p_entry info

+    if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) {

+        // TBC

+    }

+

+    // ----- Look for pre-extract callback

+    if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) {

+

+      // ----- Generate a local information

+      $v_local_header = array();

+      $this->privConvertHeader2FileInfo($p_entry, $v_local_header);

+

+      // ----- Call the callback

+      // Here I do not use call_user_func() because I need to send a reference to the

+      // header.

+//      eval('$v_result = '.$p_options[PCLZIP_CB_PRE_EXTRACT].'(PCLZIP_CB_PRE_EXTRACT, $v_local_header);');

+      $v_result = $p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, $v_local_header);

+      if ($v_result == 0) {

+        // ----- Change the file status

+        $p_entry['status'] = "skipped";

+        $v_result = 1;

+      }

+      

+      // ----- Look for abort result

+      if ($v_result == 2) {

+        // ----- This status is internal and will be changed in 'skipped'

+        $p_entry['status'] = "aborted";

+      	$v_result = PCLZIP_ERR_USER_ABORTED;

+      }

+

+      // ----- Update the informations

+      // Only some fields can be modified

+      $p_entry['filename'] = $v_local_header['filename'];

+    }

+

+

+    // ----- Look if extraction should be done

+    if ($p_entry['status'] == 'ok') {

+

+      // ----- Do the extraction (if not a folder)

+      if (!(($p_entry['external']&0x00000010)==0x00000010)) {

+        // ----- Look for not compressed file

+  //      if ($p_entry['compressed_size'] == $p_entry['size'])

+        if ($p_entry['compression'] == 0) {

+  

+          // ----- Reading the file

+          $p_string = @fread($this->zip_fd, $p_entry['compressed_size']);

+        }

+        else {

+  

+          // ----- Reading the file

+          $v_data = @fread($this->zip_fd, $p_entry['compressed_size']);

+          

+          // ----- Decompress the file

+          if (($p_string = @gzinflate($v_data)) === FALSE) {

+              // TBC

+          }

+        }

+  

+        // ----- Trace

+      }

+      else {

+          // TBC : error : can not extract a folder in a string

+      }

+      

+    }

+

+  	// ----- Change abort status

+  	if ($p_entry['status'] == "aborted") {

+        $p_entry['status'] = "skipped";

+  	}

+	

+    // ----- Look for post-extract callback

+    elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) {

+

+      // ----- Generate a local information

+      $v_local_header = array();

+      $this->privConvertHeader2FileInfo($p_entry, $v_local_header);

+      

+      // ----- Swap the content to header

+      $v_local_header['content'] = $p_string;

+      $p_string = '';

+

+      // ----- Call the callback

+      // Here I do not use call_user_func() because I need to send a reference to the

+      // header.

+//      eval('$v_result = '.$p_options[PCLZIP_CB_POST_EXTRACT].'(PCLZIP_CB_POST_EXTRACT, $v_local_header);');

+      $v_result = $p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, $v_local_header);

+

+      // ----- Swap back the content to header

+      $p_string = $v_local_header['content'];

+      unset($v_local_header['content']);

+

+      // ----- Look for abort result

+      if ($v_result == 2) {

+      	$v_result = PCLZIP_ERR_USER_ABORTED;

+      }

+    }

+

+    // ----- Return

+    return $v_result;

+  }

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function : privReadFileHeader()

+  // Description :

+  // Parameters :

+  // Return Values :

+  // --------------------------------------------------------------------------------

+  function privReadFileHeader(&$p_header)

+  {

+    $v_result=1;

+

+    // ----- Read the 4 bytes signature

+    $v_binary_data = @fread($this->zip_fd, 4);

+    $v_data = unpack('Vid', $v_binary_data);

+

+    // ----- Check signature

+    if ($v_data['id'] != 0x04034b50)

+    {

+

+      // ----- Error log

+      PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Invalid archive structure');

+

+      // ----- Return

+      return PclZip::errorCode();

+    }

+

+    // ----- Read the first 42 bytes of the header

+    $v_binary_data = fread($this->zip_fd, 26);

+

+    // ----- Look for invalid block size

+    if (strlen($v_binary_data) != 26)

+    {

+      $p_header['filename'] = "";

+      $p_header['status'] = "invalid_header";

+

+      // ----- Error log

+      PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid block size : ".strlen($v_binary_data));

+

+      // ----- Return

+      return PclZip::errorCode();

+    }

+

+    // ----- Extract the values

+    $v_data = unpack('vversion/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len', $v_binary_data);

+

+    // ----- Get filename

+    $p_header['filename'] = fread($this->zip_fd, $v_data['filename_len']);

+

+    // ----- Get extra_fields

+    if ($v_data['extra_len'] != 0) {

+      $p_header['extra'] = fread($this->zip_fd, $v_data['extra_len']);

+    }

+    else {

+      $p_header['extra'] = '';

+    }

+

+    // ----- Extract properties

+    $p_header['version_extracted'] = $v_data['version'];

+    $p_header['compression'] = $v_data['compression'];

+    $p_header['size'] = $v_data['size'];

+    $p_header['compressed_size'] = $v_data['compressed_size'];

+    $p_header['crc'] = $v_data['crc'];

+    $p_header['flag'] = $v_data['flag'];

+    $p_header['filename_len'] = $v_data['filename_len'];

+

+    // ----- Recuperate date in UNIX format

+    $p_header['mdate'] = $v_data['mdate'];

+    $p_header['mtime'] = $v_data['mtime'];

+    if ($p_header['mdate'] && $p_header['mtime'])

+    {

+      // ----- Extract time

+      $v_hour = ($p_header['mtime'] & 0xF800) >> 11;

+      $v_minute = ($p_header['mtime'] & 0x07E0) >> 5;

+      $v_seconde = ($p_header['mtime'] & 0x001F)*2;

+

+      // ----- Extract date

+      $v_year = (($p_header['mdate'] & 0xFE00) >> 9) + 1980;

+      $v_month = ($p_header['mdate'] & 0x01E0) >> 5;

+      $v_day = $p_header['mdate'] & 0x001F;

+

+      // ----- Get UNIX date format

+      $p_header['mtime'] = @mktime($v_hour, $v_minute, $v_seconde, $v_month, $v_day, $v_year);

+

+    }

+    else

+    {

+      $p_header['mtime'] = time();

+    }

+

+    // TBC

+    //for(reset($v_data); $key = key($v_data); next($v_data)) {

+    //}

+

+    // ----- Set the stored filename

+    $p_header['stored_filename'] = $p_header['filename'];

+

+    // ----- Set the status field

+    $p_header['status'] = "ok";

+

+    // ----- Return

+    return $v_result;

+  }

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function : privReadCentralFileHeader()

+  // Description :

+  // Parameters :

+  // Return Values :

+  // --------------------------------------------------------------------------------

+  function privReadCentralFileHeader(&$p_header)

+  {

+    $v_result=1;

+

+    // ----- Read the 4 bytes signature

+    $v_binary_data = @fread($this->zip_fd, 4);

+    $v_data = unpack('Vid', $v_binary_data);

+

+    // ----- Check signature

+    if ($v_data['id'] != 0x02014b50)

+    {

+

+      // ----- Error log

+      PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Invalid archive structure');

+

+      // ----- Return

+      return PclZip::errorCode();

+    }

+

+    // ----- Read the first 42 bytes of the header

+    $v_binary_data = fread($this->zip_fd, 42);

+

+    // ----- Look for invalid block size

+    if (strlen($v_binary_data) != 42)

+    {

+      $p_header['filename'] = "";

+      $p_header['status'] = "invalid_header";

+

+      // ----- Error log

+      PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid block size : ".strlen($v_binary_data));

+

+      // ----- Return

+      return PclZip::errorCode();

+    }

+

+    // ----- Extract the values

+    $p_header = unpack('vversion/vversion_extracted/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len/vcomment_len/vdisk/vinternal/Vexternal/Voffset', $v_binary_data);

+

+    // ----- Get filename

+    if ($p_header['filename_len'] != 0)

+      $p_header['filename'] = fread($this->zip_fd, $p_header['filename_len']);

+    else

+      $p_header['filename'] = '';

+

+    // ----- Get extra

+    if ($p_header['extra_len'] != 0)

+      $p_header['extra'] = fread($this->zip_fd, $p_header['extra_len']);

+    else

+      $p_header['extra'] = '';

+

+    // ----- Get comment

+    if ($p_header['comment_len'] != 0)

+      $p_header['comment'] = fread($this->zip_fd, $p_header['comment_len']);

+    else

+      $p_header['comment'] = '';

+

+    // ----- Extract properties

+

+    // ----- Recuperate date in UNIX format

+    //if ($p_header['mdate'] && $p_header['mtime'])

+    // TBC : bug : this was ignoring time with 0/0/0

+    if (1)

+    {

+      // ----- Extract time

+      $v_hour = ($p_header['mtime'] & 0xF800) >> 11;

+      $v_minute = ($p_header['mtime'] & 0x07E0) >> 5;

+      $v_seconde = ($p_header['mtime'] & 0x001F)*2;

+

+      // ----- Extract date

+      $v_year = (($p_header['mdate'] & 0xFE00) >> 9) + 1980;

+      $v_month = ($p_header['mdate'] & 0x01E0) >> 5;

+      $v_day = $p_header['mdate'] & 0x001F;

+

+      // ----- Get UNIX date format

+      $p_header['mtime'] = @mktime($v_hour, $v_minute, $v_seconde, $v_month, $v_day, $v_year);

+

+    }

+    else

+    {

+      $p_header['mtime'] = time();

+    }

+

+    // ----- Set the stored filename

+    $p_header['stored_filename'] = $p_header['filename'];

+

+    // ----- Set default status to ok

+    $p_header['status'] = 'ok';

+

+    // ----- Look if it is a directory

+    if (substr($p_header['filename'], -1) == '/') {

+      //$p_header['external'] = 0x41FF0010;

+      $p_header['external'] = 0x00000010;

+    }

+

+

+    // ----- Return

+    return $v_result;

+  }

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function : privCheckFileHeaders()

+  // Description :

+  // Parameters :

+  // Return Values :

+  //   1 on success,

+  //   0 on error;

+  // --------------------------------------------------------------------------------

+  function privCheckFileHeaders(&$p_local_header, &$p_central_header)

+  {

+    $v_result=1;

+

+  	// ----- Check the static values

+  	// TBC

+  	if ($p_local_header['filename'] != $p_central_header['filename']) {

+  	}

+  	if ($p_local_header['version_extracted'] != $p_central_header['version_extracted']) {

+  	}

+  	if ($p_local_header['flag'] != $p_central_header['flag']) {

+  	}

+  	if ($p_local_header['compression'] != $p_central_header['compression']) {

+  	}

+  	if ($p_local_header['mtime'] != $p_central_header['mtime']) {

+  	}

+  	if ($p_local_header['filename_len'] != $p_central_header['filename_len']) {

+  	}

+  

+  	// ----- Look for flag bit 3

+  	if (($p_local_header['flag'] & 8) == 8) {

+          $p_local_header['size'] = $p_central_header['size'];

+          $p_local_header['compressed_size'] = $p_central_header['compressed_size'];

+          $p_local_header['crc'] = $p_central_header['crc'];

+  	}

+

+    // ----- Return

+    return $v_result;

+  }

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function : privReadEndCentralDir()

+  // Description :

+  // Parameters :

+  // Return Values :

+  // --------------------------------------------------------------------------------

+  function privReadEndCentralDir(&$p_central_dir)

+  {

+    $v_result=1;

+

+    // ----- Go to the end of the zip file

+    $v_size = filesize($this->zipname);

+    @fseek($this->zip_fd, $v_size);

+    if (@ftell($this->zip_fd) != $v_size)

+    {

+      // ----- Error log

+      PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to go to the end of the archive \''.$this->zipname.'\'');

+

+      // ----- Return

+      return PclZip::errorCode();

+    }

+

+    // ----- First try : look if this is an archive with no commentaries (most of the time)

+    // in this case the end of central dir is at 22 bytes of the file end

+    $v_found = 0;

+    if ($v_size > 26) {

+      @fseek($this->zip_fd, $v_size-22);

+      if (($v_pos = @ftell($this->zip_fd)) != ($v_size-22))

+      {

+        // ----- Error log

+        PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to seek back to the middle of the archive \''.$this->zipname.'\'');

+

+        // ----- Return

+        return PclZip::errorCode();

+      }

+

+      // ----- Read for bytes

+      $v_binary_data = @fread($this->zip_fd, 4);

+      $v_data = @unpack('Vid', $v_binary_data);

+

+      // ----- Check signature

+      if ($v_data['id'] == 0x06054b50) {

+        $v_found = 1;

+      }

+

+      $v_pos = ftell($this->zip_fd);

+    }

+

+    // ----- Go back to the maximum possible size of the Central Dir End Record

+    if (!$v_found) {

+      $v_maximum_size = 65557; // 0xFFFF + 22;

+      if ($v_maximum_size > $v_size)

+        $v_maximum_size = $v_size;

+      @fseek($this->zip_fd, $v_size-$v_maximum_size);

+      if (@ftell($this->zip_fd) != ($v_size-$v_maximum_size))

+      {

+        // ----- Error log

+        PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to seek back to the middle of the archive \''.$this->zipname.'\'');

+

+        // ----- Return

+        return PclZip::errorCode();

+      }

+

+      // ----- Read byte per byte in order to find the signature

+      $v_pos = ftell($this->zip_fd);

+      $v_bytes = 0x00000000;

+      while ($v_pos < $v_size)

+      {

+        // ----- Read a byte

+        $v_byte = @fread($this->zip_fd, 1);

+

+        // -----  Add the byte

+        //$v_bytes = ($v_bytes << 8) | Ord($v_byte);

+        // Note we mask the old value down such that once shifted we can never end up with more than a 32bit number 

+        // Otherwise on systems where we have 64bit integers the check below for the magic number will fail. 

+        $v_bytes = ( ($v_bytes & 0xFFFFFF) << 8) | Ord($v_byte); 

+

+        // ----- Compare the bytes

+        if ($v_bytes == 0x504b0506)

+        {

+          $v_pos++;

+          break;

+        }

+

+        $v_pos++;

+      }

+

+      // ----- Look if not found end of central dir

+      if ($v_pos == $v_size)

+      {

+

+        // ----- Error log

+        PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Unable to find End of Central Dir Record signature");

+

+        // ----- Return

+        return PclZip::errorCode();

+      }

+    }

+

+    // ----- Read the first 18 bytes of the header

+    $v_binary_data = fread($this->zip_fd, 18);

+

+    // ----- Look for invalid block size

+    if (strlen($v_binary_data) != 18)

+    {

+

+      // ----- Error log

+      PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid End of Central Dir Record size : ".strlen($v_binary_data));

+

+      // ----- Return

+      return PclZip::errorCode();

+    }

+

+    // ----- Extract the values

+    $v_data = unpack('vdisk/vdisk_start/vdisk_entries/ventries/Vsize/Voffset/vcomment_size', $v_binary_data);

+

+    // ----- Check the global size

+    if (($v_pos + $v_data['comment_size'] + 18) != $v_size) {

+

+	  // ----- Removed in release 2.2 see readme file

+	  // The check of the file size is a little too strict.

+	  // Some bugs where found when a zip is encrypted/decrypted with 'crypt'.

+	  // While decrypted, zip has training 0 bytes

+	  if (0) {

+      // ----- Error log

+      PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT,

+	                       'The central dir is not at the end of the archive.'

+						   .' Some trailing bytes exists after the archive.');

+

+      // ----- Return

+      return PclZip::errorCode();

+	  }

+    }

+

+    // ----- Get comment

+    if ($v_data['comment_size'] != 0) {

+      $p_central_dir['comment'] = fread($this->zip_fd, $v_data['comment_size']);

+    }

+    else

+      $p_central_dir['comment'] = '';

+

+    $p_central_dir['entries'] = $v_data['entries'];

+    $p_central_dir['disk_entries'] = $v_data['disk_entries'];

+    $p_central_dir['offset'] = $v_data['offset'];

+    $p_central_dir['size'] = $v_data['size'];

+    $p_central_dir['disk'] = $v_data['disk'];

+    $p_central_dir['disk_start'] = $v_data['disk_start'];

+

+    // TBC

+    //for(reset($p_central_dir); $key = key($p_central_dir); next($p_central_dir)) {

+    //}

+

+    // ----- Return

+    return $v_result;

+  }

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function : privDeleteByRule()

+  // Description :

+  // Parameters :

+  // Return Values :

+  // --------------------------------------------------------------------------------

+  function privDeleteByRule(&$p_result_list, &$p_options)

+  {

+    $v_result=1;

+    $v_list_detail = array();

+

+    // ----- Open the zip file

+    if (($v_result=$this->privOpenFd('rb')) != 1)

+    {

+      // ----- Return

+      return $v_result;

+    }

+

+    // ----- Read the central directory informations

+    $v_central_dir = array();

+    if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1)

+    {

+      $this->privCloseFd();

+      return $v_result;

+    }

+

+    // ----- Go to beginning of File

+    @rewind($this->zip_fd);

+

+    // ----- Scan all the files

+    // ----- Start at beginning of Central Dir

+    $v_pos_entry = $v_central_dir['offset'];

+    @rewind($this->zip_fd);

+    if (@fseek($this->zip_fd, $v_pos_entry))

+    {

+      // ----- Close the zip file

+      $this->privCloseFd();

+

+      // ----- Error log

+      PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size');

+

+      // ----- Return

+      return PclZip::errorCode();

+    }

+

+    // ----- Read each entry

+    $v_header_list = array();

+    $j_start = 0;

+    for ($i=0, $v_nb_extracted=0; $i<$v_central_dir['entries']; $i++)

+    {

+

+      // ----- Read the file header

+      $v_header_list[$v_nb_extracted] = array();

+      if (($v_result = $this->privReadCentralFileHeader($v_header_list[$v_nb_extracted])) != 1)

+      {

+        // ----- Close the zip file

+        $this->privCloseFd();

+

+        return $v_result;

+      }

+

+

+      // ----- Store the index

+      $v_header_list[$v_nb_extracted]['index'] = $i;

+

+      // ----- Look for the specific extract rules

+      $v_found = false;

+

+      // ----- Look for extract by name rule

+      if (   (isset($p_options[PCLZIP_OPT_BY_NAME]))

+          && ($p_options[PCLZIP_OPT_BY_NAME] != 0)) {

+

+          // ----- Look if the filename is in the list

+          for ($j=0; ($j<sizeof($p_options[PCLZIP_OPT_BY_NAME])) && (!$v_found); $j++) {

+

+              // ----- Look for a directory

+              if (substr($p_options[PCLZIP_OPT_BY_NAME][$j], -1) == "/") {

+

+                  // ----- Look if the directory is in the filename path

+                  if (   (strlen($v_header_list[$v_nb_extracted]['stored_filename']) > strlen($p_options[PCLZIP_OPT_BY_NAME][$j]))

+                      && (substr($v_header_list[$v_nb_extracted]['stored_filename'], 0, strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) == $p_options[PCLZIP_OPT_BY_NAME][$j])) {

+                      $v_found = true;

+                  }

+                  elseif (   (($v_header_list[$v_nb_extracted]['external']&0x00000010)==0x00000010) /* Indicates a folder */

+                          && ($v_header_list[$v_nb_extracted]['stored_filename'].'/' == $p_options[PCLZIP_OPT_BY_NAME][$j])) {

+                      $v_found = true;

+                  }

+              }

+              // ----- Look for a filename

+              elseif ($v_header_list[$v_nb_extracted]['stored_filename'] == $p_options[PCLZIP_OPT_BY_NAME][$j]) {

+                  $v_found = true;

+              }

+          }

+      }

+

+      // ----- Look for extract by ereg rule

+      // ereg() is deprecated with PHP 5.3

+      /*

+      else if (   (isset($p_options[PCLZIP_OPT_BY_EREG]))

+               && ($p_options[PCLZIP_OPT_BY_EREG] != "")) {

+

+          if (ereg($p_options[PCLZIP_OPT_BY_EREG], $v_header_list[$v_nb_extracted]['stored_filename'])) {

+              $v_found = true;

+          }

+      }

+      */

+

+      // ----- Look for extract by preg rule

+      else if (   (isset($p_options[PCLZIP_OPT_BY_PREG]))

+               && ($p_options[PCLZIP_OPT_BY_PREG] != "")) {

+

+          if (preg_match($p_options[PCLZIP_OPT_BY_PREG], $v_header_list[$v_nb_extracted]['stored_filename'])) {

+              $v_found = true;

+          }

+      }

+

+      // ----- Look for extract by index rule

+      else if (   (isset($p_options[PCLZIP_OPT_BY_INDEX]))

+               && ($p_options[PCLZIP_OPT_BY_INDEX] != 0)) {

+

+          // ----- Look if the index is in the list

+          for ($j=$j_start; ($j<sizeof($p_options[PCLZIP_OPT_BY_INDEX])) && (!$v_found); $j++) {

+

+              if (($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['start']) && ($i<=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end'])) {

+                  $v_found = true;

+              }

+              if ($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end']) {

+                  $j_start = $j+1;

+              }

+

+              if ($p_options[PCLZIP_OPT_BY_INDEX][$j]['start']>$i) {

+                  break;

+              }

+          }

+      }

+      else {

+      	$v_found = true;

+      }

+

+      // ----- Look for deletion

+      if ($v_found)

+      {

+        unset($v_header_list[$v_nb_extracted]);

+      }

+      else

+      {

+        $v_nb_extracted++;

+      }

+    }

+

+    // ----- Look if something need to be deleted

+    if ($v_nb_extracted > 0) {

+

+        // ----- Creates a temporay file

+        $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp';

+

+        // ----- Creates a temporary zip archive

+        $v_temp_zip = new PclZip($v_zip_temp_name);

+

+        // ----- Open the temporary zip file in write mode

+        if (($v_result = $v_temp_zip->privOpenFd('wb')) != 1) {

+            $this->privCloseFd();

+

+            // ----- Return

+            return $v_result;

+        }

+

+        // ----- Look which file need to be kept

+        for ($i=0; $i<sizeof($v_header_list); $i++) {

+

+            // ----- Calculate the position of the header

+            @rewind($this->zip_fd);

+            if (@fseek($this->zip_fd,  $v_header_list[$i]['offset'])) {

+                // ----- Close the zip file

+                $this->privCloseFd();

+                $v_temp_zip->privCloseFd();

+                @unlink($v_zip_temp_name);

+

+                // ----- Error log

+                PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size');

+

+                // ----- Return

+                return PclZip::errorCode();

+            }

+

+            // ----- Read the file header

+            $v_local_header = array();

+            if (($v_result = $this->privReadFileHeader($v_local_header)) != 1) {

+                // ----- Close the zip file

+                $this->privCloseFd();

+                $v_temp_zip->privCloseFd();

+                @unlink($v_zip_temp_name);

+

+                // ----- Return

+                return $v_result;

+            }

+            

+            // ----- Check that local file header is same as central file header

+            if ($this->privCheckFileHeaders($v_local_header,

+			                                $v_header_list[$i]) != 1) {

+                // TBC

+            }

+            unset($v_local_header);

+

+            // ----- Write the file header

+            if (($v_result = $v_temp_zip->privWriteFileHeader($v_header_list[$i])) != 1) {

+                // ----- Close the zip file

+                $this->privCloseFd();

+                $v_temp_zip->privCloseFd();

+                @unlink($v_zip_temp_name);

+

+                // ----- Return

+                return $v_result;

+            }

+

+            // ----- Read/write the data block

+            if (($v_result = PclZipUtilCopyBlock($this->zip_fd, $v_temp_zip->zip_fd, $v_header_list[$i]['compressed_size'])) != 1) {

+                // ----- Close the zip file

+                $this->privCloseFd();

+                $v_temp_zip->privCloseFd();

+                @unlink($v_zip_temp_name);

+

+                // ----- Return

+                return $v_result;

+            }

+        }

+

+        // ----- Store the offset of the central dir

+        $v_offset = @ftell($v_temp_zip->zip_fd);

+

+        // ----- Re-Create the Central Dir files header

+        for ($i=0; $i<sizeof($v_header_list); $i++) {

+            // ----- Create the file header

+            if (($v_result = $v_temp_zip->privWriteCentralFileHeader($v_header_list[$i])) != 1) {

+                $v_temp_zip->privCloseFd();

+                $this->privCloseFd();

+                @unlink($v_zip_temp_name);

+

+                // ----- Return

+                return $v_result;

+            }

+

+            // ----- Transform the header to a 'usable' info

+            $v_temp_zip->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]);

+        }

+

+

+        // ----- Zip file comment

+        $v_comment = '';

+        if (isset($p_options[PCLZIP_OPT_COMMENT])) {

+          $v_comment = $p_options[PCLZIP_OPT_COMMENT];

+        }

+

+        // ----- Calculate the size of the central header

+        $v_size = @ftell($v_temp_zip->zip_fd)-$v_offset;

+

+        // ----- Create the central dir footer

+        if (($v_result = $v_temp_zip->privWriteCentralHeader(sizeof($v_header_list), $v_size, $v_offset, $v_comment)) != 1) {

+            // ----- Reset the file list

+            unset($v_header_list);

+            $v_temp_zip->privCloseFd();

+            $this->privCloseFd();

+            @unlink($v_zip_temp_name);

+

+            // ----- Return

+            return $v_result;

+        }

+

+        // ----- Close

+        $v_temp_zip->privCloseFd();

+        $this->privCloseFd();

+

+        // ----- Delete the zip file

+        // TBC : I should test the result ...

+        @unlink($this->zipname);

+

+        // ----- Rename the temporary file

+        // TBC : I should test the result ...

+        //@rename($v_zip_temp_name, $this->zipname);

+        PclZipUtilRename($v_zip_temp_name, $this->zipname);

+    

+        // ----- Destroy the temporary archive

+        unset($v_temp_zip);

+    }

+    

+    // ----- Remove every files : reset the file

+    else if ($v_central_dir['entries'] != 0) {

+        $this->privCloseFd();

+

+        if (($v_result = $this->privOpenFd('wb')) != 1) {

+          return $v_result;

+        }

+

+        if (($v_result = $this->privWriteCentralHeader(0, 0, 0, '')) != 1) {

+          return $v_result;

+        }

+

+        $this->privCloseFd();

+    }

+

+    // ----- Return

+    return $v_result;

+  }

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function : privDirCheck()

+  // Description :

+  //   Check if a directory exists, if not it creates it and all the parents directory

+  //   which may be useful.

+  // Parameters :

+  //   $p_dir : Directory path to check.

+  // Return Values :

+  //    1 : OK

+  //   -1 : Unable to create directory

+  // --------------------------------------------------------------------------------

+  function privDirCheck($p_dir, $p_is_dir=false)

+  {

+    $v_result = 1;

+

+

+    // ----- Remove the final '/'

+    if (($p_is_dir) && (substr($p_dir, -1)=='/'))

+    {

+      $p_dir = substr($p_dir, 0, strlen($p_dir)-1);

+    }

+

+    // ----- Check the directory availability

+    if ((is_dir($p_dir)) || ($p_dir == ""))

+    {

+      return 1;

+    }

+

+    // ----- Extract parent directory

+    $p_parent_dir = dirname($p_dir);

+

+    // ----- Just a check

+    if ($p_parent_dir != $p_dir)

+    {

+      // ----- Look for parent directory

+      if ($p_parent_dir != "")

+      {

+        if (($v_result = $this->privDirCheck($p_parent_dir)) != 1)

+        {

+          return $v_result;

+        }

+      }

+    }

+

+    // ----- Create the directory

+    if (!@mkdir($p_dir, 0777))

+    {

+      // ----- Error log

+      PclZip::privErrorLog(PCLZIP_ERR_DIR_CREATE_FAIL, "Unable to create directory '$p_dir'");

+

+      // ----- Return

+      return PclZip::errorCode();

+    }

+

+    // ----- Return

+    return $v_result;

+  }

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function : privMerge()

+  // Description :

+  //   If $p_archive_to_add does not exist, the function exit with a success result.

+  // Parameters :

+  // Return Values :

+  // --------------------------------------------------------------------------------

+  function privMerge(&$p_archive_to_add)

+  {

+    $v_result=1;

+

+    // ----- Look if the archive_to_add exists

+    if (!is_file($p_archive_to_add->zipname))

+    {

+

+      // ----- Nothing to merge, so merge is a success

+      $v_result = 1;

+

+      // ----- Return

+      return $v_result;

+    }

+

+    // ----- Look if the archive exists

+    if (!is_file($this->zipname))

+    {

+

+      // ----- Do a duplicate

+      $v_result = $this->privDuplicate($p_archive_to_add->zipname);

+

+      // ----- Return

+      return $v_result;

+    }

+

+    // ----- Open the zip file

+    if (($v_result=$this->privOpenFd('rb')) != 1)

+    {

+      // ----- Return

+      return $v_result;

+    }

+

+    // ----- Read the central directory informations

+    $v_central_dir = array();

+    if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1)

+    {

+      $this->privCloseFd();

+      return $v_result;

+    }

+

+    // ----- Go to beginning of File

+    @rewind($this->zip_fd);

+

+    // ----- Open the archive_to_add file

+    if (($v_result=$p_archive_to_add->privOpenFd('rb')) != 1)

+    {

+      $this->privCloseFd();

+

+      // ----- Return

+      return $v_result;

+    }

+

+    // ----- Read the central directory informations

+    $v_central_dir_to_add = array();

+    if (($v_result = $p_archive_to_add->privReadEndCentralDir($v_central_dir_to_add)) != 1)

+    {

+      $this->privCloseFd();

+      $p_archive_to_add->privCloseFd();

+

+      return $v_result;

+    }

+

+    // ----- Go to beginning of File

+    @rewind($p_archive_to_add->zip_fd);

+

+    // ----- Creates a temporay file

+    $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp';

+

+    // ----- Open the temporary file in write mode

+    if (($v_zip_temp_fd = @fopen($v_zip_temp_name, 'wb')) == 0)

+    {

+      $this->privCloseFd();

+      $p_archive_to_add->privCloseFd();

+

+      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_zip_temp_name.'\' in binary write mode');

+

+      // ----- Return

+      return PclZip::errorCode();

+    }

+

+    // ----- Copy the files from the archive to the temporary file

+    // TBC : Here I should better append the file and go back to erase the central dir

+    $v_size = $v_central_dir['offset'];

+    while ($v_size != 0)

+    {

+      $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);

+      $v_buffer = fread($this->zip_fd, $v_read_size);

+      @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size);

+      $v_size -= $v_read_size;

+    }

+

+    // ----- Copy the files from the archive_to_add into the temporary file

+    $v_size = $v_central_dir_to_add['offset'];

+    while ($v_size != 0)

+    {

+      $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);

+      $v_buffer = fread($p_archive_to_add->zip_fd, $v_read_size);

+      @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size);

+      $v_size -= $v_read_size;

+    }

+

+    // ----- Store the offset of the central dir

+    $v_offset = @ftell($v_zip_temp_fd);

+

+    // ----- Copy the block of file headers from the old archive

+    $v_size = $v_central_dir['size'];

+    while ($v_size != 0)

+    {

+      $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);

+      $v_buffer = @fread($this->zip_fd, $v_read_size);

+      @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size);

+      $v_size -= $v_read_size;

+    }

+

+    // ----- Copy the block of file headers from the archive_to_add

+    $v_size = $v_central_dir_to_add['size'];

+    while ($v_size != 0)

+    {

+      $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);

+      $v_buffer = @fread($p_archive_to_add->zip_fd, $v_read_size);

+      @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size);

+      $v_size -= $v_read_size;

+    }

+

+    // ----- Merge the file comments

+    $v_comment = $v_central_dir['comment'].' '.$v_central_dir_to_add['comment'];

+

+    // ----- Calculate the size of the (new) central header

+    $v_size = @ftell($v_zip_temp_fd)-$v_offset;

+

+    // ----- Swap the file descriptor

+    // Here is a trick : I swap the temporary fd with the zip fd, in order to use

+    // the following methods on the temporary fil and not the real archive fd

+    $v_swap = $this->zip_fd;

+    $this->zip_fd = $v_zip_temp_fd;

+    $v_zip_temp_fd = $v_swap;

+

+    // ----- Create the central dir footer

+    if (($v_result = $this->privWriteCentralHeader($v_central_dir['entries']+$v_central_dir_to_add['entries'], $v_size, $v_offset, $v_comment)) != 1)

+    {

+      $this->privCloseFd();

+      $p_archive_to_add->privCloseFd();

+      @fclose($v_zip_temp_fd);

+      $this->zip_fd = null;

+

+      // ----- Reset the file list

+      unset($v_header_list);

+

+      // ----- Return

+      return $v_result;

+    }

+

+    // ----- Swap back the file descriptor

+    $v_swap = $this->zip_fd;

+    $this->zip_fd = $v_zip_temp_fd;

+    $v_zip_temp_fd = $v_swap;

+

+    // ----- Close

+    $this->privCloseFd();

+    $p_archive_to_add->privCloseFd();

+

+    // ----- Close the temporary file

+    @fclose($v_zip_temp_fd);

+

+    // ----- Delete the zip file

+    // TBC : I should test the result ...

+    @unlink($this->zipname);

+

+    // ----- Rename the temporary file

+    // TBC : I should test the result ...

+    //@rename($v_zip_temp_name, $this->zipname);

+    PclZipUtilRename($v_zip_temp_name, $this->zipname);

+

+    // ----- Return

+    return $v_result;

+  }

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function : privDuplicate()

+  // Description :

+  // Parameters :

+  // Return Values :

+  // --------------------------------------------------------------------------------

+  function privDuplicate($p_archive_filename)

+  {

+    $v_result=1;

+

+    // ----- Look if the $p_archive_filename exists

+    if (!is_file($p_archive_filename))

+    {

+

+      // ----- Nothing to duplicate, so duplicate is a success.

+      $v_result = 1;

+

+      // ----- Return

+      return $v_result;

+    }

+

+    // ----- Open the zip file

+    if (($v_result=$this->privOpenFd('wb')) != 1)

+    {

+      // ----- Return

+      return $v_result;

+    }

+

+    // ----- Open the temporary file in write mode

+    if (($v_zip_temp_fd = @fopen($p_archive_filename, 'rb')) == 0)

+    {

+      $this->privCloseFd();

+

+      PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive file \''.$p_archive_filename.'\' in binary write mode');

+

+      // ----- Return

+      return PclZip::errorCode();

+    }

+

+    // ----- Copy the files from the archive to the temporary file

+    // TBC : Here I should better append the file and go back to erase the central dir

+    $v_size = filesize($p_archive_filename);

+    while ($v_size != 0)

+    {

+      $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE);

+      $v_buffer = fread($v_zip_temp_fd, $v_read_size);

+      @fwrite($this->zip_fd, $v_buffer, $v_read_size);

+      $v_size -= $v_read_size;

+    }

+

+    // ----- Close

+    $this->privCloseFd();

+

+    // ----- Close the temporary file

+    @fclose($v_zip_temp_fd);

+

+    // ----- Return

+    return $v_result;

+  }

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function : privErrorLog()

+  // Description :

+  // Parameters :

+  // --------------------------------------------------------------------------------

+  function privErrorLog($p_error_code=0, $p_error_string='')

+  {

+    if (PCLZIP_ERROR_EXTERNAL == 1) {

+      PclError($p_error_code, $p_error_string);

+    }

+    else {

+      $this->error_code = $p_error_code;

+      $this->error_string = $p_error_string;

+    }

+  }

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function : privErrorReset()

+  // Description :

+  // Parameters :

+  // --------------------------------------------------------------------------------

+  function privErrorReset()

+  {

+    if (PCLZIP_ERROR_EXTERNAL == 1) {

+      PclErrorReset();

+    }

+    else {

+      $this->error_code = 0;

+      $this->error_string = '';

+    }

+  }

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function : privDisableMagicQuotes()

+  // Description :

+  // Parameters :

+  // Return Values :

+  // --------------------------------------------------------------------------------

+  function privDisableMagicQuotes()

+  {

+    $v_result=1;

+

+    // ----- Look if function exists

+    if (   (!function_exists("get_magic_quotes_runtime"))

+	    || (!function_exists("set_magic_quotes_runtime"))) {

+      return $v_result;

+	}

+

+    // ----- Look if already done

+    if ($this->magic_quotes_status != -1) {

+      return $v_result;

+	}

+

+	// ----- Get and memorize the magic_quote value

+	$this->magic_quotes_status = @get_magic_quotes_runtime();

+

+	// ----- Disable magic_quotes

+	if ($this->magic_quotes_status == 1) {

+	  @set_magic_quotes_runtime(0);

+	}

+

+    // ----- Return

+    return $v_result;

+  }

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function : privSwapBackMagicQuotes()

+  // Description :

+  // Parameters :

+  // Return Values :

+  // --------------------------------------------------------------------------------

+  function privSwapBackMagicQuotes()

+  {

+    $v_result=1;

+

+    // ----- Look if function exists

+    if (   (!function_exists("get_magic_quotes_runtime"))

+	    || (!function_exists("set_magic_quotes_runtime"))) {

+      return $v_result;

+	}

+

+    // ----- Look if something to do

+    if ($this->magic_quotes_status != -1) {

+      return $v_result;

+	}

+

+	// ----- Swap back magic_quotes

+	if ($this->magic_quotes_status == 1) {

+  	  @set_magic_quotes_runtime($this->magic_quotes_status);

+	}

+

+    // ----- Return

+    return $v_result;

+  }

+  // --------------------------------------------------------------------------------

+

+  }

+  // End of class

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function : PclZipUtilPathReduction()

+  // Description :

+  // Parameters :

+  // Return Values :

+  // --------------------------------------------------------------------------------

+  function PclZipUtilPathReduction($p_dir)

+  {

+    $v_result = "";

+

+    // ----- Look for not empty path

+    if ($p_dir != "") {

+      // ----- Explode path by directory names

+      $v_list = explode("/", $p_dir);

+

+      // ----- Study directories from last to first

+      $v_skip = 0;

+      for ($i=sizeof($v_list)-1; $i>=0; $i--) {

+        // ----- Look for current path

+        if ($v_list[$i] == ".") {

+          // ----- Ignore this directory

+          // Should be the first $i=0, but no check is done

+        }

+        else if ($v_list[$i] == "..") {

+		  $v_skip++;

+        }

+        else if ($v_list[$i] == "") {

+		  // ----- First '/' i.e. root slash

+		  if ($i == 0) {

+            $v_result = "/".$v_result;

+		    if ($v_skip > 0) {

+		        // ----- It is an invalid path, so the path is not modified

+		        // TBC

+		        $v_result = $p_dir;

+                $v_skip = 0;

+		    }

+		  }

+		  // ----- Last '/' i.e. indicates a directory

+		  else if ($i == (sizeof($v_list)-1)) {

+            $v_result = $v_list[$i];

+		  }

+		  // ----- Double '/' inside the path

+		  else {

+            // ----- Ignore only the double '//' in path,

+            // but not the first and last '/'

+		  }

+        }

+        else {

+		  // ----- Look for item to skip

+		  if ($v_skip > 0) {

+		    $v_skip--;

+		  }

+		  else {

+            $v_result = $v_list[$i].($i!=(sizeof($v_list)-1)?"/".$v_result:"");

+		  }

+        }

+      }

+      

+      // ----- Look for skip

+      if ($v_skip > 0) {

+        while ($v_skip > 0) {

+            $v_result = '../'.$v_result;

+            $v_skip--;

+        }

+      }

+    }

+

+    // ----- Return

+    return $v_result;

+  }

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function : PclZipUtilPathInclusion()

+  // Description :

+  //   This function indicates if the path $p_path is under the $p_dir tree. Or,

+  //   said in an other way, if the file or sub-dir $p_path is inside the dir

+  //   $p_dir.

+  //   The function indicates also if the path is exactly the same as the dir.

+  //   This function supports path with duplicated '/' like '//', but does not

+  //   support '.' or '..' statements.

+  // Parameters :

+  // Return Values :

+  //   0 if $p_path is not inside directory $p_dir

+  //   1 if $p_path is inside directory $p_dir

+  //   2 if $p_path is exactly the same as $p_dir

+  // --------------------------------------------------------------------------------

+  function PclZipUtilPathInclusion($p_dir, $p_path)

+  {

+    $v_result = 1;

+    

+    // ----- Look for path beginning by ./

+    if (   ($p_dir == '.')

+        || ((strlen($p_dir) >=2) && (substr($p_dir, 0, 2) == './'))) {

+      $p_dir = PclZipUtilTranslateWinPath(getcwd(), FALSE).'/'.substr($p_dir, 1);

+    }

+    if (   ($p_path == '.')

+        || ((strlen($p_path) >=2) && (substr($p_path, 0, 2) == './'))) {

+      $p_path = PclZipUtilTranslateWinPath(getcwd(), FALSE).'/'.substr($p_path, 1);

+    }

+

+    // ----- Explode dir and path by directory separator

+    $v_list_dir = explode("/", $p_dir);

+    $v_list_dir_size = sizeof($v_list_dir);

+    $v_list_path = explode("/", $p_path);

+    $v_list_path_size = sizeof($v_list_path);

+

+    // ----- Study directories paths

+    $i = 0;

+    $j = 0;

+    while (($i < $v_list_dir_size) && ($j < $v_list_path_size) && ($v_result)) {

+

+      // ----- Look for empty dir (path reduction)

+      if ($v_list_dir[$i] == '') {

+        $i++;

+        continue;

+      }

+      if ($v_list_path[$j] == '') {

+        $j++;

+        continue;

+      }

+

+      // ----- Compare the items

+      if (($v_list_dir[$i] != $v_list_path[$j]) && ($v_list_dir[$i] != '') && ( $v_list_path[$j] != ''))  {

+        $v_result = 0;

+      }

+

+      // ----- Next items

+      $i++;

+      $j++;

+    }

+

+    // ----- Look if everything seems to be the same

+    if ($v_result) {

+      // ----- Skip all the empty items

+      while (($j < $v_list_path_size) && ($v_list_path[$j] == '')) $j++;

+      while (($i < $v_list_dir_size) && ($v_list_dir[$i] == '')) $i++;

+

+      if (($i >= $v_list_dir_size) && ($j >= $v_list_path_size)) {

+        // ----- There are exactly the same

+        $v_result = 2;

+      }

+      else if ($i < $v_list_dir_size) {

+        // ----- The path is shorter than the dir

+        $v_result = 0;

+      }

+    }

+

+    // ----- Return

+    return $v_result;

+  }

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function : PclZipUtilCopyBlock()

+  // Description :

+  // Parameters :

+  //   $p_mode : read/write compression mode

+  //             0 : src & dest normal

+  //             1 : src gzip, dest normal

+  //             2 : src normal, dest gzip

+  //             3 : src & dest gzip

+  // Return Values :

+  // --------------------------------------------------------------------------------

+  function PclZipUtilCopyBlock($p_src, $p_dest, $p_size, $p_mode=0)

+  {

+    $v_result = 1;

+

+    if ($p_mode==0)

+    {

+      while ($p_size != 0)

+      {

+        $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE);

+        $v_buffer = @fread($p_src, $v_read_size);

+        @fwrite($p_dest, $v_buffer, $v_read_size);

+        $p_size -= $v_read_size;

+      }

+    }

+    else if ($p_mode==1)

+    {

+      while ($p_size != 0)

+      {

+        $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE);

+        $v_buffer = @gzread($p_src, $v_read_size);

+        @fwrite($p_dest, $v_buffer, $v_read_size);

+        $p_size -= $v_read_size;

+      }

+    }

+    else if ($p_mode==2)

+    {

+      while ($p_size != 0)

+      {

+        $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE);

+        $v_buffer = @fread($p_src, $v_read_size);

+        @gzwrite($p_dest, $v_buffer, $v_read_size);

+        $p_size -= $v_read_size;

+      }

+    }

+    else if ($p_mode==3)

+    {

+      while ($p_size != 0)

+      {

+        $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE);

+        $v_buffer = @gzread($p_src, $v_read_size);

+        @gzwrite($p_dest, $v_buffer, $v_read_size);

+        $p_size -= $v_read_size;

+      }

+    }

+

+    // ----- Return

+    return $v_result;

+  }

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function : PclZipUtilRename()

+  // Description :

+  //   This function tries to do a simple rename() function. If it fails, it

+  //   tries to copy the $p_src file in a new $p_dest file and then unlink the

+  //   first one.

+  // Parameters :

+  //   $p_src : Old filename

+  //   $p_dest : New filename

+  // Return Values :

+  //   1 on success, 0 on failure.

+  // --------------------------------------------------------------------------------

+  function PclZipUtilRename($p_src, $p_dest)

+  {

+    $v_result = 1;

+

+    // ----- Try to rename the files

+    if (!@rename($p_src, $p_dest)) {

+

+      // ----- Try to copy & unlink the src

+      if (!@copy($p_src, $p_dest)) {

+        $v_result = 0;

+      }

+      else if (!@unlink($p_src)) {

+        $v_result = 0;

+      }

+    }

+

+    // ----- Return

+    return $v_result;

+  }

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function : PclZipUtilOptionText()

+  // Description :

+  //   Translate option value in text. Mainly for debug purpose.

+  // Parameters :

+  //   $p_option : the option value.

+  // Return Values :

+  //   The option text value.

+  // --------------------------------------------------------------------------------

+  function PclZipUtilOptionText($p_option)

+  {

+    

+    $v_list = get_defined_constants();

+    for (reset($v_list); $v_key = key($v_list); next($v_list)) {

+	    $v_prefix = substr($v_key, 0, 10);

+	    if ((   ($v_prefix == 'PCLZIP_OPT')

+           || ($v_prefix == 'PCLZIP_CB_')

+           || ($v_prefix == 'PCLZIP_ATT'))

+	        && ($v_list[$v_key] == $p_option)) {

+        return $v_key;

+	    }

+    }

+    

+    $v_result = 'Unknown';

+

+    return $v_result;

+  }

+  // --------------------------------------------------------------------------------

+

+  // --------------------------------------------------------------------------------

+  // Function : PclZipUtilTranslateWinPath()

+  // Description :

+  //   Translate windows path by replacing '\' by '/' and optionally removing

+  //   drive letter.

+  // Parameters :

+  //   $p_path : path to translate.

+  //   $p_remove_disk_letter : true | false

+  // Return Values :

+  //   The path translated.

+  // --------------------------------------------------------------------------------

+  function PclZipUtilTranslateWinPath($p_path, $p_remove_disk_letter=true)

+  {

+    if (stristr(php_uname(), 'windows')) {

+      // ----- Look for potential disk letter

+      if (($p_remove_disk_letter) && (($v_position = strpos($p_path, ':')) != false)) {

+          $p_path = substr($p_path, $v_position+1);

+      }

+      // ----- Change potential windows directory separator

+      if ((strpos($p_path, '\\') > 0) || (substr($p_path, 0,1) == '\\')) {

+          $p_path = strtr($p_path, '\\', '/');

+      }

+    }

+    return $p_path;

+  }

+  // --------------------------------------------------------------------------------

+

+

+?>

blob - /dev/null
blob + 157dd06d93f78abbd3e4e9e59ec8ca2157a26da9 (mode 644)
--- /dev/null
+++ phpinfo.php
@@ -0,0 +1 @@
+<?php phpinfo()?>
blob - /dev/null
blob + 67877d8e44a1dc9390168ccfbb5cde14bc0edebf (mode 644)
--- /dev/null
+++ rss.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<?xml-stylesheet type="text/xsl" href="rss.xslt" ?>
+<!--
+J'ai crée ce flux RSS a partir de l'exemple de Sébastien sauvage.
+(http://www.sebsauvage.net/comprendre/rss/creer.html)
+
+Je l'ai modifié et j'utilise (comme lui) une feuille de style xslt
+pour rendre ma page lisible.
+Ce fichier est a l'adresse http://sylvain.sab.free.fr/rss/rss.xslt
+
+Vous pouvez librement reprendre ces fichiers
+
+Si vous avez une question, n'hésitez pas a me contacter.
+-->
+<rss version="2.0">
+    <channel>
+
+	      <title>Flux RSS - Sylvain.sab</title>
+        <description>Les mises &#224; jour de Sylvain.sab par Flux RSS</description>
+        <link>http://sylvain.sab.free.fr/</link>
+        <language>fr</language>
+        <ttl>30</ttl>
+
+        <image>
+          <url>http://sylvain.sab.free.fr/img/boutons/btssylvainsab.gif</url>
+          <title>la page d'accueil</title>
+          <link>http://sylvain.sab.free.fr/</link>
+          <width>123</width>
+          <height>33</height>
+       </image>
+
+       <item><title>C'est quoi Linux ?</title>
+          <link>http://sylvain.sab.free.fr/cestquoi/gnu-linux/</link>
+          <guid isPermaLink="false">linux</guid>
+          <description>Linux est un système d'exploitation libre.</description>
+          <pubDate>Sun, 09 Sep 2007 22:00:00 GMT</pubDate></item>
+
+       <item><title>C'est quoi les logiciels libres, l'open-source ?</title>
+          <link>http://sylvain.sab.free.fr/cestquoi/libre/</link>
+          <guid isPermaLink="false">libre</guid>
+          <description>Le logiciel libre n'est soumis à aucune contrainte : vous êtes libre de le distribuer, le modifier...</description>
+          <pubDate>Sun, 09 Sep 2007 22:00:00 GMT</pubDate></item>
+
+       <item><title>Configurer Thunderbird</title>
+          <link>http://sylvain.sab.free.fr/configurer/thunderbird.php</link>
+          <guid isPermaLink="false">configurer tb</guid>
+          <description>Les règles de filtrage et deux astuces.</description>
+          <pubDate>Fri, 02 Feb 2007 23:00:00 GMT</pubDate></item>
+
+       <item><title>Qu'est-ce que l'hébergement ? C'est quoi un hébergeur ?</title>
+          <link>http://sylvain.sab.free.fr/cestquoi/web/hebergement.php</link>
+          <guid isPermaLink="false">c'est quoi l'hébergement</guid>
+          <description>Après l'explication sur les serveurs, j'ai ajouté un petit article sur les hébergeurs et l'hébergement, qui permettent de stocker ses fichiers pour les mettre à disposition en ligne.</description>
+        <pubDate>Sat, 27 Jan 2007 23:50:00 GMT</pubDate></item>
+
+    </channel>
+</rss>
blob - /dev/null
blob + 7f87028ad8f03dd8a3a1725627c1b7ded3dc6ec0 (mode 644)
--- /dev/null
+++ rss.xslt
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>

+<!--

+J'ai crée ce fichier xslt en me basant sur celui de Sébastien Sauvage

+qui s'est lui-même inspiré de celui de CCM, qui ont eux mêmes repris celui

+d'un autre site dont je ne me rapelle plus le nom.

+

+Vous pouvez librement reprendre ce fichier.

+Cependant les CSS sont adaptés a mon site,

+il est donc probable que vous devrez les modifier.

+

+Le fichier CSS que j'utilise avec cette page est a l'adresse :

+http://sylvain.sab.free.fr/autres/css/rss.css

+

+J'utilise plusieurs autres fichiers CSS

+que je vous laisse trouver si vous les voulez.

+

+Si vous avez une question, n'hésitez pas a me contacter.

+-->

+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:dc="http://purl.org/dc/elements/1.1/">

+<xsl:output method="html" version="4" encoding="iso-8859-1" indent="yes" />

+<xsl:template match="channel">

+

+<html xml:lang="fr" lang="fr" xmlns="http://www.w3.org/1999/xhtml"> 

+<head>

+

+<title><xsl:value-of select="title" /></title>

+

+<!--metas de contenu-->

+<meta http-equiv="Content-Style-Type" content="text/css" />

+<meta http-equiv="Content-Type" content="application/rss+xml;charset=iso-8859-1" />

+

+<!--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="start" href="/" title="Page d'accueil du site Sylvain.sab" />

+<link rel="help" title="Liste des Accesskeys de ce site" href="/apropos/accesskeys.php" />

+

+<!--CSS et favicon selon IE ou autre navigateur-->

+<!--[if !IE]><-->

+<link rel="stylesheet" type="text/css" href="/autres/css/notie.css" />

+<link rel="icon" type="image/png" href="/img/mini/favicon.png" />

+<!--><![endif]-->

+<!--[if IE]>

+<link rel="shortcut icon" type="image/x-icon" href="/img/mini/favicon.ico" />

+<link rel="stylesheet" type="text/css" href="/autres/css/styledefautie.css" />

+<![endif]-->

+

+<!--les autres balises selon les pages-->

+<link rel="stylesheet" type="text/css" href="/autres/css/rss.css" />

+

+</head>

+<body>

+

+<div id="parent">

+  <a href="{image/link}" title="{image/title}">

+  <img style="width:{image/width}px;height:{image/height}px;" src="{image/url}" />

+  </a><br /><br />

+  <strong id="titresite"><xsl:value-of select="title" /></strong><br /><br />

+  <a href="http://validator.w3.org/feed/check.cgi?url=http://sylvain.sab.free.fr/rss/rss.xml">

+  <img src="/img/valide/validrss.png" alt="[Valid RSS]" style="width:88px;height:31px;" /></a><br />

+  Cette page est au format RSS 2.0. <br />

+  Elle est conçue pour être lue par des aggrégateurs de flux RSS.

+</div>

+

+<xsl:call-template name="item" />     

+<hr />

+</body>

+</html>

+</xsl:template>

+

+<xsl:template match="item" name="item">

+		<xsl:for-each select="item">

+

+		<div class="item">

+			<a href="{link}" class="nomitem"><xsl:value-of select="title" /></a>

+	    <br />

+	    <xsl:value-of select="description" />

+	  </div>

+

+		</xsl:for-each>

+	</xsl:template>

+</xsl:stylesheet>