]> granicus.if.org Git - apache/commitdiff
xforms
authorJim Jagielski <jim@apache.org>
Wed, 6 Feb 2013 20:43:02 +0000 (20:43 +0000)
committerJim Jagielski <jim@apache.org>
Wed, 6 Feb 2013 20:43:02 +0000 (20:43 +0000)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1443203 13f79535-47bb-0310-9956-ffa450edef68

docs/manual/expr.html.fr
docs/manual/expr.xml.fr
docs/manual/howto/ssi.html.fr
docs/manual/howto/ssi.xml.meta
docs/manual/mod/mod_cache.html.fr
docs/manual/mod/mod_cache.xml.meta
docs/manual/mod/mod_lua.html.fr
docs/manual/mod/mod_lua.xml.fr

index 16804edc11a17f5fb2d27ccdb9b5d3754cc59484..c16696850b6f82ccdab5bab319dbdfa3dc9b11dd 100644 (file)
@@ -436,7 +436,8 @@ listfunction ::= listfuncname "<strong>(</strong>" word "<strong>)</strong>"
 <tr><td><code>resp</code></td>
         <td>Lit l'en-tête de réponse HTTP</td><td /></tr>
 <tr class="odd"><td><code>reqenv</code></td>
-        <td>Recherche une variable d'environnement de requête</td><td /></tr>
+        <td>Recherche une variable d'environnement de requête (on
+       peut aussi utiliser le raccourci <code>v</code>).</td><td /></tr>
 <tr><td><code>osenv</code></td>
         <td>Recherche une variable d'environnement du système
        d'exploitation</td><td /></tr>
index ac04584134d220a1358cfed31816c90b139513e9..e158474e9f09382b926d1f43c5c360152bec769d 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ISO-8859-1" ?>
 <!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
 <?xml-stylesheet type="text/xsl" href="./style/manual.fr.xsl"?>
-<!-- English Revision : 1422598 -->
+<!-- English Revision: 1422598:1440056 (outdated) -->
 <!-- French translation : Lucien GENTIS -->
 <!-- Reviewed by : Vincent Deffontaines -->
 
index 29c3f86c2d11f9f1c944a43d71931105df5758c0..20dde9131e861c2bba8db2b1dd837335fb2053b2 100644 (file)
@@ -28,8 +28,6 @@
 <a href="../ja/howto/ssi.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
 <a href="../ko/howto/ssi.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
 </div>
-<div class="outofdate">Cette traduction peut être périmée. Vérifiez la version
-            anglaise pour les changements récents.</div>
 
 <p>Les SSI permettent d'ajouter du contenu dynamique à des documents
 HTML préexistants.</p>
@@ -481,12 +479,6 @@ HTML pr
         &lt;!--#endif --&gt;
 </code></p></div>
 
-    <p>Notez que je n'ai rien contre IE sur Macintosh - J'ai juste
-    phosphoré quelques heures la semaine dernière pour faire fonctionner
-    du JavaScript sous IE sur Macintosh, alors qu'il fonctionnait sous
-    tout autre environnement. Ce qui précède a constitué un
-    contournement provisoire.</p>
-
     <p>Toute autre variable (que vous avez définie, ou une variable
     d'environnement normale) peut être utilisée dans les expressions
     conditionnelles. Associée à la possibilité avec Apache de définir
index 1c020635eb5d849c17e027dedfbc2d0ce5bed1d7..0d8deb802c38f150156d34339ef19d927cf41150 100644 (file)
@@ -8,7 +8,7 @@
 
   <variants>
     <variant>en</variant>
-    <variant outdated="yes">fr</variant>
+    <variant>fr</variant>
     <variant outdated="yes">ja</variant>
     <variant outdated="yes">ko</variant>
   </variants>
index 82dba0de50531aed793d56fe7c417269eca90efe..e65b71411e343dcf71386d6b6973488ea6b15dc9 100644 (file)
@@ -29,8 +29,6 @@
 <a href="../ja/mod/mod_cache.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
 <a href="../ko/mod/mod_cache.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
 </div>
-<div class="outofdate">Cette traduction peut être périmée. Vérifiez la version
-            anglaise pour les changements récents.</div>
 <table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Filtre de mise en cache HTTP conforme à la RFC 2616</td></tr>
 <tr><th><a href="module-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
 <tr><th><a href="module-dict.html#ModuleIdentifier">Identificateur de Module:</a></th><td>cache_module</td></tr>
@@ -551,23 +549,25 @@ URL</var>]</code></td></tr>
     être activée.</p>
 
     <pre class="prettyprint lang-config">
-# Mise en cache de contenu
+# Mise en cache de contenu (gestionnaire normal seulement)
+CacheQuickHandler off
 &lt;Location /foo&gt;
     CacheEnable disk
 &lt;/Location&gt;
 
-# Mise en cache via une expression rationnelle
+# Mise en cache via une expression rationnelle (gestionnaire normal seulement)
+CacheQuickHandler off
 &lt;LocationMatch foo$&gt;
     CacheEnable disk
 &lt;/LocationMatch&gt;
 
-# Mise en cache des URLs mandatées
+# Mise en cache des URLs mandatées (gestionnaire normal ou rapide)
 CacheEnable  disk  /
 
-# Mise en cache des URLs FTP mandatées
+# Mise en cache des URLs FTP mandatées (gestionnaire normal ou rapide)
 CacheEnable  disk  ftp://
 
-# Mise en cache des contenus situés dans www.example.org
+# Mise en cache des contenus situés dans www.example.org (gestionnaire normal ou rapide)
 CacheEnable  disk  http://www.example.org/
     </pre>
 
index 29181a9f4862519cf52c83c01e42fd950e6e795b..92f1aa14034e75eb937f06f0dfbbef25cc4017b6 100644 (file)
@@ -8,7 +8,7 @@
 
   <variants>
     <variant>en</variant>
-    <variant outdated="yes">fr</variant>
+    <variant>fr</variant>
     <variant outdated="yes">ja</variant>
     <variant outdated="yes">ko</variant>
   </variants>
index 8d3809fac2e4cc97c2a8a1f52674125cc6d7cdd9..d50f8700b1ff70fb181024ab7c2848d082143362 100644 (file)
@@ -84,6 +84,7 @@ jour.</div>
 <li><img alt="" src="../images/down.gif" /> <a href="#datastructures">Structures de données</a></li>
 <li><img alt="" src="../images/down.gif" /> <a href="#logging">Fonctions de journalisation</a></li>
 <li><img alt="" src="../images/down.gif" /> <a href="#apache2">Paquet apache2</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#databases">Connectivité aux bases de données</a></li>
 </ul><ul class="seealso"><li><a href="#comments_section">Commentaires</a></li></ul></div>
 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
 <div class="section">
@@ -487,6 +488,13 @@ end
        corps de la réponse
         </pre>
 
+
+       <pre class="prettyprint lang-lua">
+       r:dbacquire(dbType[, dbParams]) -- Acquiert une connexion à une
+base de données et renvoie une classe database. Voir '<a href="#databases">Connectivité aux bases de données</a>' pour plus de
+détails.
+        </pre>
+
         </dd>
     </dl>
 
@@ -531,6 +539,194 @@ contenu suivant :</p>
   <dd>Constantes internes utilisées par <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code></dd>
 </dl>
 <p>Les autres codes d'état HTTP ne sont pas encore implémentés.</p>
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="databases" id="databases">Connectivité aux bases de données</a></h2>
+    
+    <p>Mod_lua implémente une fonctionnalité basique de connexion aux
+bases de données permettant d'envoyer des requêtes ou d'exécuter des
+commandes auprès des moteurs de base de données les plus courants
+(mySQL, PostgreSQL, FreeTDS, ODBC, SQLite, Oracle), ainsi que mod_dbd.
+    </p>
+    <p>L'exemple suivant montre comment se connecter à une base de
+données et extraire des informations d'une table :</p>
+    <pre class="prettyprint lang-lua">
+function handler(r)
+    -- connexion à la base de données
+    local database, err = r:dbacquire("mysql", "server=localhost,user=root,dbname=mydb")
+    if not err then
+        -- Sélection de certaines informations
+        local results, err = database:select(r, "SELECT `name`, `age` FROM `people` WHERE 1")
+        if not err then
+            local rows = results(0) -- extrait tous les enregistrements en mode synchrone
+            for k, row in pairs(rows) do
+                r:puts( string.format("Name: %s, Age: %s&lt;br/&gt;", row[1], row[2]) )
+            end
+        else
+            r:puts("Database query error: " .. err)
+        end
+        database:close()
+    else
+        r:puts("Connexion à la base de données impossible : " .. err)
+    end
+end
+    </pre>
+
+    <p>
+    Pour utiliser <code class="module"><a href="../mod/mod_dbd.html">mod_dbd</a></code>, spécifiez
+<code>mod_dbd</code> comme type de base de données, ou laissez le champ
+vide :
+    </p>
+    <pre class="prettyprint lang-lua">
+    local database = r:dbacquire("mod_dbd")
+    </pre>
+
+    <h3><a name="database_object" id="database_object">L'objet database et ses méthodes</a></h3>
+        
+        <p>L'objet database renvoyé par <code>dbacquire</code> possède
+les méthodes suivantes :</p>
+        <p><strong>Sélection normale et requête vers une base de données
+:</strong></p>
+    <pre class="prettyprint lang-lua">
+-- Exécution d'une requête et renvoie du nombre d'enregistrements
+affectés :
+local affected, errmsg = database:query(r, "DELETE FROM `tbl` WHERE 1")
+
+-- Exécution d'une requête et renvoie du résultat qui peut être utilisé
+en mode synchrone ou asynchrone :
+local result, errmsg = database:select(r, "SELECT * FROM `people` WHERE 1")
+    </pre>
+
+        <p><strong>Utilisation de requêtes préparées (recommandé) :</strong></p>
+    <pre class="prettyprint lang-lua">
+-- Création et exécution d'une requête préparée :
+local statement, errmsg = database:prepare(r, "DELETE FROM `tbl` WHERE `age` &gt; %u")
+if not errmsg then
+    local result, errmsg = statement:query(20) -- exécute la requête pour age &gt; 20
+end
+
+-- Extrait une requête préparée depuis une directive DBDPrepareSQL :
+local statement, errmsg = database:prepared(r, "someTag")
+if not errmsg then
+    local result, errmsg = statement:select("John Doe", 123) -- injecte les valeurs "John Doe" et 123 dans la requête
+end
+
+</pre>
+
+        <p><strong>Echappement de valeurs, fermeture de la base données,
+etc...</strong></p>
+    <pre class="prettyprint lang-lua">
+-- Echappe une valeur pour pouvoir l'utiliser dans une requête :
+local escaped = database:escape(r, [["'|blabla]])
+
+-- Ferme une base de données et libère les liens vers cette dernière :
+database:close()
+
+-- Vérifie si une connexion à une base de données est en service et
+opérationnelle :
+local connected = database:active()
+    </pre>
+
+    
+    <h3><a name="result_sets" id="result_sets">Travail avec les jeux d'enregistrements renvoyés par les requêtes</a></h3>
+    
+    <p>Les jeux d'enregistrements renvoyés par <code>db:select</code> ou par des
+requêtes préparées créées par <code>db:prepare</code> permettent de
+sélectionner des enregistrements en mode synchrone ou
+asynchrone, selon le nombre d'enregistrements spécifié :<br />
+    <code>result(0)</code> sélectionne tous les enregistrements en mode
+synchrone en renvoyant une table d'enregistrements.<br />
+    <code>result(-1)</code> sélectionne le prochain enregistrement disponible en
+mode asynchrone.<br />
+    <code>result(N)</code> sélectionne l'enregistrement numéro
+<code>N</code> en mode asynchrone.
+    </p>
+    <pre class="prettyprint lang-lua">
+-- extrait un jeu d'enregistrements via une requête régulière :
+local result, err = db:select(r, "SELECT * FROM `tbl` WHERE 1")
+
+local rows = result(0) -- sélectionne tous les enregistrements en mode synchrone
+local row = result(-1) -- sélectionne le prochain enregistrement disponible en mode asynchrone
+local row = result(1234) -- sélectionne l'enregistrement 1234 en mode asynchrone
+    </pre>
+
+    <p>Il est possible de construire une fonction qui renvoie une
+fonction itérative permettant de traiter tous les enregistrement en mode
+synchrone ou asynchrone selon la valeur de l'argument async :
+    </p>
+    <pre class="prettyprint lang-lua">
+function rows(resultset, async)
+    local a = 0
+    local function getnext()
+        a = a + 1
+        local row = resultset(-1)
+        return row and a or nil, row
+    end
+    if not async then
+        return pairs(resultset(0))
+    else
+        return getnext, self
+    end
+end
+
+local statement, err = db:prepare(r, "SELECT * FROM `tbl` WHERE `age` &gt; %u")
+if not err then
+     -- sélectionne des enregistrements en mode asynchrone :
+    local result, err = statement:select(20)
+    if not err then
+        for index, row in rows(result, true) do
+            ....
+        end
+    end
+
+     -- sélectionne des enregistrements en mode synchrone :
+    local result, err = statement:select(20)
+    if not err then
+        for index, row in rows(result, false) do
+            ....
+        end
+    end
+end
+    </pre>
+
+    
+    <h3><a name="closing_databases" id="closing_databases">Fermeture d'une connexion à une base de données</a></h3>
+        
+
+    <p>Lorsqu'elles ne sont plus utilisées, les connexions aux bases de
+données doivent être fermées avec <code>database:close()</code>. Si vous
+ne les fermez pas manuellement, mod_lua les fermera peut-être en tant
+que résidus collectés, mais si ce n'est pas le cas, vous pouvez finir
+pas avoir trop de connexions vers la base de données inutilisées. Les
+deux mesures suivantes sont pratiquement identiques :
+    </p>
+    <pre class="prettyprint lang-lua">
+-- Méthode 1 : fermeture manuelle de la connexion
+local database = r:dbacquire("mod_dbd")
+database:close() -- c'est tout
+
+-- Méthode 2 : on laisse le collecteur de résidus la fermer
+local database = r:dbacquire("mod_dbd")
+database = nil -- on coupe le lien
+collectgarbage() -- fermeture de la connexion par le collecteur de résidus
+</pre>
+
+    
+    <h3><a name="database_caveat" id="database_caveat">Précautions à prendre lorsque l'on travaille avec les bases
+de données</a></h3>
+    
+    <p>Bien que les fonctions <code>query</code> et <code>run</code>
+soient toujours disponibles, il est recommandé d'utiliser des requêtes
+préparées chaque fois que possible, afin d'une part d'optimiser les
+performances (si votre connexion reste longtemps en vie), et d'autre part
+minimiser le risque d'attaques par injection SQL. Les fonctions
+<code>run</code> et <code>query</code> ne doivent être utilisées que
+lorsque la requête ne contient pas de variables (requête statique). Dans
+le cas des requêtes dynamiques, utilisez <code>db:prepare</code> ou
+<code>db:prepared</code>.
+    </p>
+    
+
 </div>
 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
 <div class="directive-section"><h2><a name="LuaAuthzProvider" id="LuaAuthzProvider">LuaAuthzProvider</a> <a name="luaauthzprovider" id="luaauthzprovider">Directive</a></h2>
index 235def48ea1cb61d47f11e1fbb1be63489835284..f8c492d83100a2cbabf15b442d48cf700486213a 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
 <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
-<!-- English Revision : 1439099 -->
+<!-- English Revision: 1439099:1442083 (outdated) -->
 <!-- French translation : Lucien GENTIS -->
 <!-- Reviewed by : Vincent Deffontaines -->