Tocra.org, Tocra Web Media(s): Le web 2.0, medias riches & design pour internet. http://www.tocra.org/ Web Medias | Web Design & Conception et mise en forme de contenu web 2.0 riche interactif. [Handmade Quality] 2007 © · Tocra.org · http://www.tocra.org fr SPIP - www.spip.net Tocra Web Media(s): Le web 2.0, medias riches & design pour internet. http://www.tocra.org/img/logo_site.gif http://www.tocra.org/ 40 36 Article PlopBox, V2.0 http://www.tocra.org/articles/Article_PlopBox-V2.0.html http://www.tocra.org/articles/Article_PlopBox-V2.0.html 05-02-2012 text/html fr Redacteur Ajax Compatibilité CSS Design Flexibilité Javascript Layout Prototype Scriptaculous <p><img style="float: right; clear: right;" src="/img/icon_new_07.png" alt="" />Après une version perso qui a été poussée jusqu'à sa version 1.7, c'est enfin que le projet reprend du service.</p> <p>PlopBox V. 2.0 m'a rendu de grands services avec une vrai valeur ajoutée ! Tels l'affichage de web medias et autre contenus riches sous une forme joliment décorée...</p> <p><a href="http://www.google.fr/#q=PlopBox+Tocra+Web+Medias">http://www.tocra.org/rechercher/?q=PlopBox</a></p> <p><a onclick="window.open(this.href,'','resizable=yes,location=no,menubar=no,scrollbars=no,status=no,toolbar=no,fullscreen=no,dependent=no,status'); return false" href="http://plopbox.web-medias.com/media/demo_plopbox.pdf">Demo_PlopBox.pdf</a></p> <p>La version de PlopBox 2.0 devrait sortir d'ici peu avec son changelog.</p> <p><a href="http://www.google.fr/#q=PlopBox+Tocra+Web+Medias">Plus d'info sur PlopBox</a></p> Article Google Cloud SQL : un SGBD relationnel dans le nuage, quelle garantie de confidentialité ? http://www.tocra.org/articles/Article_Google-Cloud-SQL--un-SGBD-relationnel-dans-le-nuage-quelle-garantie-de-confidentialite-Y.html http://www.tocra.org/articles/Article_Google-Cloud-SQL--un-SGBD-relationnel-dans-le-nuage-quelle-garantie-de-confidentialite-Y.html 11-10-2011 text/html fr Redacteur Outils Ressources Sécurité Serveur <p> <table border="0" cellspacing="3" cellpadding="0" width="100%" align="left"> <tbody> <tr> <td valign="middle" width="120" align="left"><img class="" alt="" src="http://www.indexel.net/images/indexel/google-cloud-sql.jpg" /></td> <td align="left"> <p align="left">Reposant sur MySQL, ce service d&rsquo;hébergement de données étend les capacités de Google Apps Engine et répond à la demande pressante des développeurs de disposer d&rsquo;un modèle relationnel.</p> </td> </tr> </tbody> </table> </p> <p> </p> <div> <p>Jusqu'à présent, pour créer des services Java ou Python sur le serveur d'applications en mode hébergé Google App Engine, les développeurs devaient s'appuyer sur la base de données propriétaire BigTable de Google. Cette dernière appartient à la famille noSQL qui repose sur un modèle en colonnes très différent des bases de données traditionnelles. Une gageure pour des informaticiens rompus au modèle relationnel ! Le géant du web vient donc d'ajouter le populaire moteur SQL de MySQL à son offre hébergée.</p> <p>Baptisé Google Cloud SQL, ce service permet d'exécuter des bases de données relationnelles MySQL directement dans le nuage de Google. Deux interfaces - DB-API pour Python et JDBC pour Java - permettent de lier le code Google Apps Engine avec les données relationnelles de MySQL. Afin de faciliter la migration des données existantes depuis les serveurs de l'entreprise, Google propose un outil d'import-export. L'administration s'effectue via une console d'administration graphique.</p> <p>L'intérêt de cette plate-forme hébergée (Platform as a Service, PaaS) est, selon Google, de disposer d'une plate-forme d'hébergement de données « managée » et d'une très haute disponibilité. L'entreprise n'a plus à investir dans des serveurs dédiés, à les mettre à jour, à gérer la montée en charge et la disponibilité via une réplication dynamique des données sur plusieurs centre de données. Google se charge de tout et promet un service "zéro-maintenance" et "zéro-administration".</p> <p>Pour le moment, Google Cloud SQL est accessible gratuitement, en version beta fermée (sur invitation), sur le site Google Code Labs. Google devrait proposer dans les prochains mois une grille tarifaire adaptée. Nul doute que le géant du web proposera des prix attractifs car il n'est pas le seul à proposer ce type d'hébergement de données. Amazon avec ses services S3 et SimpleDB est déjà implanté sur ce marché depuis plusieurs années. Il a été rejoint par Microsoft qui propose SQL Server Data Services (SSDS) depuis près de trois ans.</p> <p>Une question se pose...<br /> Qu'en est-il de la confidentialité des données ?</p> <p>L'unification des données se trouvant réunie sur une même plate-forme (cela se fera par répartition ou clustering sur des fermes de serveurs évidement...), les données seront stokées en clair... Seul les donnée de mod passe seront chiffrées.<br /> En ce qui concerne ds autres données, elle ne pourront pas être chiffrées. Bien que techniquement, cela est faisable. Il suffirait d'implanter une brique fonctionnelle faisant le chiffrement/déchiffrement à la volée...<br /> Cela prendrait un temps de calcul et de ressources colossal. De plus, les requetes SQL nécessitant de faire de la correspondance ou du l'expression régulière ne fonctionneraient pas !</p> <p>Il en va donc d'un stokage massif, c'est le but du Cloud sur cet aspect de la sauvegarde. <br /> Bien que ce nouveau service est vraiment un intérêt, comment Google va nous garantir une confidentialité des données stokées ?</p> </div> Article FluidSpaner, version 1.2 http://www.tocra.org/articles/Article_FluidSpaner-version-1.2.html http://www.tocra.org/articles/Article_FluidSpaner-version-1.2.html 24-04-2009 text/html fr Redacteur Ajax Compatibilité CSS Design Flexibilité Javascript Layout Prototype Scriptaculous <p><img style="float: right; clear: right;" src="/img/icon_new_07.png" alt="" /></p> <p><strong>Le voici, FluidSpaner dans sa version 1.2<br /> </strong><em><a target="_blank" href="http://spaner.web-medias.com">http://spaner.web-medias.com</a></em></p> <p>FluidSpaner est un slider / scroller de panneaux horizontal fluide et dont l'effet de glissement a été particulièrement travaillé afin de le rendre paramétrable si on le désire à l'aide des transitions (easing).<br /> <br /> J'ai pu voir des sliders horizontaux un peu de tout les cotés, mais rien à faire. Soit les panneaux glissent en passant par les panneaux intermédiaires (je ne trouve pas cela esthétique à mon goût) trop grosse accélération ou bien ils ne passent pas sur FF ou bien IE (mac ou pc) ou bien des problèmes d'affichage ...<a target="_blank" href="http://spaner.web-medias.com"><br /> </a></p> <p>Il a fallu prendre les crayons et faire quelques ébauches avant d'arriver à quelque chose de convenable pour enfin me lancer dans le développement de ce nouveau composant.<br /> FluidSpaner permet de s'ajuster automatiquement à son conteneur, et également si celui-ci est redimensionné (comme la fenêtre par exemple ou un élément bloc en pourcentage) et bien entendu que le contenu soit toujours disponible à l'affichage (centrage automatique sous les yeux de l'internaute et non un repositionnement saccadé !).</p> <p>Bref, dans cette version, il est possible de définir des panneaux dont le contenu se charge en Ajax et de préserver ou non le contenu qui vient d'être nouvellement charger (option de persistance pour les panneaux ajax).</p> <p>Merci donc à tous de vos réactions et du tracking que vous pourrez faire ...<br /> <br /> <a href="http://spaner.web-medias.com" target="_blank">http://spaner.web-medias.com</a></p> Article PayPal Synchro Cart ! http://www.tocra.org/articles/Article_PayPal-Synchro-Cart.html http://www.tocra.org/articles/Article_PayPal-Synchro-Cart.html 28-12-2008 text/html fr Redacteur Design Flexibilité Javascript Layout <p><img height="50" width="200" class="" title="PayPal SynchroCart" alt="PayPal SynchroCart" src="https://www.paypal.com/fr_FR/FR/i/logo/paypal_logo.gif" /><br /> <strong>PayPal <em><font color="#999999">Synchro Cart</font></em></strong>, c'est quoi ?</p> <p>C'est un petit plugin qui permet de gérer des paniers Paypal pour des mini boutiques en ligne sans ouvrir les énormes et monstrueuses fenètres intampestives du panier PayPal à chaque ajout d'un article.</p> <p>Il faut savoir que pour des raisons de sécurité, PayPal n'autorise pas d'intégrer des iframes dans sa page web. Lorsque Paypal reçoit une action, il vérifie qu'elle soit en mode POST, et que le document CGI gérant les échanges ne soit pas intégré dans un contenu <span class="dotted" title="Un contenu mixte correspond à plusieurs protocoles HTTP réunis. comme page HTTP et iframe HTTPS">mixte</span></p> <p>Vous pouvez intégrer les boutons 'acheter maintenant' sous la forme d'un formulaire, ou un bouton 'afficher mon panier' également sous la forme d'un formulaire.<br /> <br /> Chaque fois que vous cliquez sur un bouton 'acheter maintenant' ceci a pour but d'ajouter le produit sélectionné au panier.<br /> Ça c'est le fonctionnement basique et quoi de plus normal ! A ceci près que cela ouvre une nouvelle fenêtre, afficher votre panier et il faut refermer cette fenêtre... Et le hic, c'est bien ça. Qu'une fenêtre s'ouvre (dans un nouvel onglet ou non) cela fini par agacer sérieusement.<br /> <br /> Il faut avouer que l'utilisation de PayPal est extrêmement simple, mais cette manipulation pour refermer la fenêtre est légèrement nuisible pour les internautes qui font leurs emplettes en ligne.<br /> <br /> Je présente donc ici un nouveau plugin que j'ai mis au point aujourd'hui afin de contrer ce désagrément.</p> <p><strong>Comment ça marche ?</strong></p> <p>Voici un petit exemple tout simple avec un fonctionnement basique sans <strong>PayPal</strong> <em><strong><font color="#999999">Synchro Cart</font></strong></em></p> <p><font color="#999999"><style type="text/css"> .btnFrmPaypal, .btnCartPaypal{margin:0.5em 0 0 0;padding:0;} .txtqtFrmPaypal{height:17px;width:26px;margin:0 0.5em 4px 0;line-height:16px;border:#d8dcca solid 1px;background-color:#edf5d8;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:10px;color:#474747;text-align:center;} .btnaddFrmPaypal{}</style></font></p> <p> </p> <form class="btnFrmPaypal" action="https://www.paypal.com/cgi-bin/webscr" method="post" target="paypal"> <input type="hidden" name="cmd" value="_cart" /> <input type="hidden" name="business" value="sandbox@domain.tld" /> <input type="hidden" name="add" value="1" /> <input type="hidden" name="item_name" value="Produit item_name" /> <input type="hidden" name="item_number" value="Produit item_number" /> <input type="hidden" name="amount" value="1.00" /> <input type="hidden" name="currency_code" value="EUR" /> <input type="hidden" name="no_shipping" value="2" /> <input type="hidden" name="no_note" value="1" /> <input type="hidden" name="lc" value="FR" /> <input type="hidden" name="bn" value="PP-ShopCartBF" /> <input type="hidden" name="page_style" value="SamplePaypal" /> <input type="hidden" name="cpp_header_image" value="http://www.tocra.org/img/tocra.jpg" /> <input type="hidden" name="image_url" value="http://www.tocra.org/img/tocra.jpg" /> <input border="0" type="image" class="btnaddFrmPaypal" alt="Effectuez vos paiements via PayPal : une solution rapide, gratuite et sécurisée" src="http://www.tocra.org/img/x-click-but22.gif" longdesc="undefined" name="submit" /> <input type="text" class="txtqtFrmPaypal" maxlength="2" name="quantity" value="1" /> </form> <p> </p> <p>Comme on peut le voir, le fait de cliquer sur le bouton 'Ajouter au panier' ouvre une nouvelle fenêtre...<br /> <br /> Après plusieurs tentatives de panier PayPal 'Full Ajax' sans succès, j'ai opté pour une solution stable, synchrone et semi-transparente pour l'internaute. Semi-transparente : il faudra bien indiquer à l'internaute que le produit qu'il a cliqué a bien été ajouté à son panier !</p> <p>Ce plugin a pour fonctionnalité d'implémenter un écouteur sur tous les formulaires PayPal '<em><font color="#999999">add to cart</font></em>' de la page pour l'évennement <font face="Courier New">onsubmit</font>.<br /> <br /> Après quoi, chaque clic sur le bouton submit du formulaire ajouter au panier sera interprété comme une action automatisée d'ouverture d'un mini popup synchronisée et se refermera dès que (et uniquement dès que) le produit sera enregistré dans le panier PayPal.<br /> <br /> Une option de skin permet d'afficher la mini popup (elle passe les bloqueurs) avec un message personnalisé du genre :</p> <p><em><font color="#00ccff" style="padding: 0.8em 0.2em; line-height: 30px; background-color: rgb(51, 51, 51);">Le produit que vous sélectionné a bien été ajouté à votre panier.</font></em></p> <p><br /> <strong>Installation</strong></p> <p>On utilise une des librairies d'un framework récent disponible. Dans la section <font face="Courier New">head</font> de la page ajouter la librairie javascript pour le framework Prototype :</p> <div class="code"><font color="#339966"><</font>script language="<font color="#ff9900">javascript</font>" type="<font color="#ff9900">text/javascript</font>" src="<font color="#ff9900">/js/prototype.js</font>"<font color="#339966">><</font>/script<font color="#339966">></font></div> <p> </p> <p>Et ajouter ensuite le plugin PayPal SynchroCart :</p> <div class="code"><font color="#339966"><</font>script language="<font color="#ff9900">javascript</font>" type="<font color="#ff9900">text/javascript</font>" src="<font color="#ff9900">/js/paypal_synchrocart.js</font>"<font color="#339966">><</font>/script<font color="#339966">></font></div> <p><br /> <strong>Configuration</strong></p> <p>La configuration est simple, il suffit d'ajouter la classe <font face="Courier New" color="#00ccff">paypal_synchrocart</font> au formulaire devant fonctionner avec le plugin.</p> <p><strong>Live Demo</strong> <span id="PPSCobserving"> </span></p> <p> </p> <!-- Ajout au panier (synchrocart) --> <form class="btnFrmPaypal paypal_synchrocart" title="item description" action="https://www.paypal.com/cgi-bin/webscr" method="post" target="paypal" rel="{itemName:'Marmelade 50g.',itemDescription:'Marmelade (Orange) W:50g. Andros',thumnail:'productThumbnail.jpg'}"> Quantité de l'article ou du produit : <input type="text" class="txtqtFrmPaypal" maxlength="2" name="quantity" value="1" /> <br /> <input type="hidden" name="cmd" value="_cart" /> <input type="hidden" name="business" value="sandbox@domain.tld" /> <input type="hidden" name="add" value="1" /> <input type="hidden" name="item_name" value="Produit item_name" /> <input type="hidden" name="item_number" value="Produit item_number" /> <input type="hidden" name="amount" value="1.00" /> <input type="hidden" name="currency_code" value="EUR" /> <input type="hidden" name="no_shipping" value="2" /> <input type="hidden" name="no_note" value="1" /> <input type="hidden" name="lc" value="FR" /> <input type="hidden" name="bn" value="PP-ShopCartBF" /> <input type="hidden" name="page_style" value="SamplePaypal" /> <input type="hidden" name="cpp_header_image" value="http://www.tocra.org/img/tocra.jpg" /> <input type="hidden" name="image_url" value="http://www.tocra.org/img/tocra.jpg" /> <input border="0" type="image" class="btnaddFrmPaypal" alt="Effectuez vos paiements via PayPal : une solution rapide, gratuite et sécurisée" src="http://www.tocra.org/img/x-click-but22.gif" name="submit" /> </form> <!-- Afficher le panier (synchrocart) --> <form class="btnCartPaypal" action="https://www.paypal.com/fr/cgi-bin/webscr" method="post" target="paypal" name="_xclick"> <input type="hidden" name="cmd" value="_cart" /> <input type="hidden" name="business" value="sandbox@domain.tld" /> <input border="0" type="image" alt="Afficher le panier" src="http://www.tocra.org/img/x-show-but22.gif" name="submit" /> <input type="hidden" name="display" value="1" /> </form> <script language="javascript" type="text/javascript" src="/js/paypal_synchrocart.js"></script><script language="javascript" type="text/javascript"> document.observe("paypal_synchrocart:loaded", function(event) { $('PPSCobserving').update('paypal_synchrocart:loaded'); }); document.observe("paypal_synchrocart:open", function(event) { $('PPSCobserving').update('paypal_synchrocart:open'); }); document.observe("paypal_synchrocart:write'", function(event) { $('PPSCobserving').update('paypal_synchrocart:write'); }); document.observe("paypal_synchrocart:beforeSend", function(event) { $('PPSCobserving').update('paypal_synchrocart:beforeSend'); }); document.observe("paypal_synchrocart:onComplete", function(event) { $('PPSCobserving').update('paypal_synchrocart:onComplete'); }); </script> <div class="code"><font color="#339966"><</font>form class="<font color="#ff9900">btnFrmPaypal </font><font color="#00ccff">paypal_synchrocart</font>" title="<font color="#ff9900">item description</font>" action="<font color="#ff9900">https://www.paypal.com/cgi-bin/webscr</font>" method="<font color="#ff9900">post</font>" target="<font color="#ff9900">paypal</font>"<font color="#339966">></font></div> <p> </p> <p><strong>Téléchargement</strong></p> <p><a class="bloc_download_lib" href="/samples/paypal_synchrocart_1.2.js"><em><strong>Télécharger</strong> paypal_synchrocart_1.2.js (V. 1.2) </em></a></p> Article Règles de réécriture générées à la volée http://www.tocra.org/articles/Article_Regles-de-reecriture-generees-a-la-volee.html http://www.tocra.org/articles/Article_Regles-de-reecriture-generees-a-la-volee.html 20-03-2008 text/html fr Redacteur Apache Règles de réécriture Sécurité Serveur <p>De façon a être le plus respectueux des notations d'url web, les règles de réécriture sont avant tout un moyen simple d'afficher des urls plus lisible humainement parlant !<br /> J'expose ici une méthode permettant de coder des urls sans avoir besoins de passer de reférence ou d'Id dans l'url ni de date : utiliser simplement le titre d'un article ou d'un commentaire et de traiter tout ça via une simple règle de réécriture et quelques ligne de code serveur (ici PHP).</p> <p>Il est important de pouvoir gérer ses redirections et ses règles de réécriture correctement. De nombreux <u><font color="#666699">CMS</font></u> et autres <u><font color="#666699">GED</font></u> permettent en interne de manipuler les pages sans se préocuper du méchanisme serveur.<br /> <br /> Et pourtant, si l'on utilise pas de CMS, il faudra se pencher sur les directives des fichiers de configuration afin de créer ses propres règles.</p> <p>Pour les dévoloppeurs désireux de gérer correctement leur règles de réécriture, la manipulation de catégories, thématique, articles, commentaires, et les id ou référence est incontournable.</p> <p>Le but de cet article et de montrer une méthodologie permettant d'exploiter les fichiers de configuration tel que les fichiers <font face="Courier New">.htaccess</font> pour des serveurs de type <strong>Apache</strong> par exemple et quelques lignes de code en PHP pour le contrôle.</p> <p>Supposons que nous voulions afficher des articles stokés en base de données. Les articles seront accessibles à partir d'un dossier articles situé la racine du site.<br /> Un fichier se chargera de l'affichage des articles listés et un autre se contentera d'afficher le détail d'un article.<br /> La partie qui nous intéresse est celle qui va afficher le détail de l'article disponible via une url simple telle que :<br /> <font face="Courier New">http://www.domaine.tld/articles/Article_Titre-de-mon-article.html</font><br /> <br /> Nous devons donc mettre en place un règle de réécriture qui redirigera cette url vers le fichier affichant le détail de celui-ci. Notre règle devrait ressembler à ceci :<font face="Courier New"><br /> RewriteRule ^articles/Article_([A-Za-z0-9_-]*).html$ /articles/display-article.php?title=$1 [NC,L]</font></p> <p>Afin de disposer d'une url simple sans caratères spéciaux ( uniquement les lettres majuscules, minuscules, les chiffres, l'underscore et le tiret ), nous utiliserons directement le titre de l'article formaté correctement est injecté dans l'url.<br /> <br /> Cette petite fonction PHP permet de supprimer tous les caractères inutiles et d'en remplacer certains afin d'obtenir une lecture de l'url sans équivoque.</p> <p><font face="Courier New"><font color="#3366ff">function</font> getISOCharTranslation($sStr)<br /> {<br />    $ISOTransChar = <font color="#3366ff">array</font>( "'"=>'_', ' "'=>'-', <br />    'áàåäâã'=>'a', 'ÁÀÅÄÂÃ'=>'A', 'éèëê'=>'e', 'ÉÈËÊ'=>'E', <br />    'íìïî¡'=>'i', 'ÍÌÏÎ'=>'I', 'óòöôõð'=>'o', 'ø'=>'0', 'ÓÒÖÔÕØ'=>'O', <br />    'µúùüû'=>'u',  'ÚÙÜÛ'=>'U', 'ýÿ'=>'y', 'Ý&Yuml;'=>'Y', <br />    'æ'=>'ae', 'Æ'=>'AE', '&oelig;'=>'oe', '&OElig;'=>'OE', <br />    'ß'=>'B', 'ç'=>'c', 'Ç'=>'C', 'Ð'=>'D', 'ñ'=>'n', 'Ñ'=>'N', <br />    'Þ'=>'p', 'þ'=>'P', '&scaron;'=>'s', '&Scaron;'=>'S' );<br /> <br />    $tmp = <font color="#3366ff">array</font>();<br />    <font color="#3366ff">for</font>($c=0; $c<<font color="#3366ff">strlen</font>($sStr); $c++)<br />    {<br />       $carac = $sStr{$c};<br />       <font color="#3366ff">foreach</font>($ISOTransChar <font color="#3366ff">as</font> $chars => $r)<br />       {<br />          if( <font color="#3366ff">strpos</font>( $chars, $sStr{$c} )>-1 || <font color="#3366ff">strpos</font>( <font color="#3366ff">utf8_decode</font>($chars), $sStr{$c} )>-1 )<br />          { $carac = $r; <font color="#3366ff">break</font>; }<br />       }<br />       $tmp[] = $carac;<br />   }<br /> <br />    $newStr = <font color="#3366ff">implode</font>("",$tmp);<br />    $newStr = <font color="#3366ff">preg_replace</font>('/--+/', '-', $newStr);<br />    $newStr = <font color="#3366ff">preg_replace</font>('/([^a-z0-9_-])/i', '', $newStr);<br />    $newStr = <font color="#3366ff">preg_replace</font>('/([-])$/', '', $newStr);<br />    <br />    <font color="#339966">return</font> $newStr;<br /> }<br /> </font></p> Article Sécurité des requêtes Ajax http://www.tocra.org/articles/Article_Securite-des-requetes-Ajax.html http://www.tocra.org/articles/Article_Securite-des-requetes-Ajax.html 19-03-2008 text/html fr Redacteur Ajax Sécurité <p>Sécuriser des requêtes Ajax afin de ne pas distribuer du contenu à tout va sans contrôler l'origine du requêteur. Il n'est pas question ici de sécuriser le protocole, mais bien la requête elle-même...</p> <p><strong>Phase 1</strong><br /> Dans un premier temps utiliser les sessions serveur en fonction de la plate-forme (PHP / JAVA / ...).</p> <p>La page servie qui s'affiche au client doit coté serveur générer une clef <em><font color="#808080">(alphanumérique par ex. de 10 à 20 caractères)</font></em>. Affecter cette clef à une variable de l'espace de session:<br /> <font face="Courier New">$_SESSION['Env_UserSession']['AjaxKey'] = $la_clef_alphanum</font></p> <p><strong>Phase 2<br /> </strong>Coté client, la clef devra être disponible via javascript. Elle pourra être une valeur d'un champ caché par exemple. <em><font color="#808080">(Le script serveur devra l'écrire dans le champ ou l'affecter à une variable javascript)</font></em></p> <p><strong>Phase 3</strong><br /> Lors de la requête Ajax, récupérer cette clef et la transmettre aux paramètres Ajax <em><font color="#808080">(aux arguments paires de la requête en réalité)</font></em></p> <p><strong>Phase 4</strong><br /> Lorsque la requête est lancée, le principe est de contrôler coté serveur l'existence de cette clef, et la vérifier avec celle stocké en session.<br /> Celle-ci doit être contrôlée avant de servir <em><font color="#808080">(générer)</font></em> le contenu Ajax au client.</p> <p>Pour aller encore plus loin, je propose de générer un champ input de type hidden <em><font color="#808080">(en Phase 2)</font></em>. Ce champs aura pour nom <em><font color="#808080">(attribut <u>name</u>)</font></em> le hachage en <u><font color="#666699">md5</font></u> de la clef. La valeur de champs pourra être ce que vous désirer !</p> <p>Lors du contrôle coté serveur <em><font color="#808080">(Phase 4)</font></em> contrôler bien l'existence <u><font color="#666699">POST</font></u> ou <u><font color="#666699">GET</font></u> d'un argument dont la variable correspond au md5 de la clef stockée en session. <em><font color="#808080">(S&rsquo;assurer bien sûr qu'elle existe sinon c'est qu'elle est vide, donc une tentative de contournement ou de vol en est la cause...)</font></em></p> <p>Si c'est le cas et qu'elles sont identiques, vous pouvez à ce moment livrer votre contenu ou le générer.</p> <p>Votre requête est donc à présent sécurisée. Je vous laisse le soin d'étudier les échanges serveur / client afin d'optimiser cette astuce ;)</p>