1<?php 2$_SERVER['BASE_PAGE'] = 'releases/4_1_0_fr.php'; 3include_once __DIR__ . '/../include/prepend.inc'; 4site_header("Annonce de publication de PHP 4.1.0", ["lang" => "fr"]); 5?> 6 7<h1>Annonce de publication de PHP 4.1.0</h1> 8 9<p> 10 Après un long processus "QA", PHP 4.1.0 <a href="/downloads.php">est enfin sorti</a>!<br> 11 [ <a href="/releases/4_1_0.php">English Version</a> ] 12</p> 13 14<p> 15 PHP 4.1.0 inclut beaucoup d'améliorations importantes: 16</p> 17<ul> 18 <li>Une nouvelle interface d'entrée en général (voir plus bas)</li> 19 <li>Perfomance grandement accrue en général</li> 20 <li> 21 Sous Windows une stabilité et une performance révolutionnaire. Les 22 modules serveur multi-thread sous windows (ISAPI, Apache, etc...) 23 s'exécute jusqu'à 30 fois plus rapidement sous la charge! Nous 24 voulons remercier Brett Brewer et son équipe chez Microsoft pour 25 son travail avec nous pour améliorer PHP pour Windows. 26 </li> 27 <li> 28 Gestion des versions pour les extensions. A l'heure actuelle, ceci 29 est très peu utilisé, l'infrastructure était mise en place pour le 30 support séparé des numéros de versions pour différentes extensions. 31 L'effet de bord négatif est que le faite de charger des extensions 32 avec une ancienne version de PHP résultait d'un crash, à la place 33 d'un message correct et claire. Soyez sûrs que vous utilisez 34 seulement des extensions intégrées à PHP 4.1.0. 35 </li> 36 <li>Support "Turn-Key" de la compression des sorties</li> 37 <li><strong>BEAUCOUP</strong> de corrections et de nouvelles fonctions</li> 38</ul> 39 40<p> 41 Comme certains l'ont noté, cette version est quelque peu historique, 42 comme c'est la première fois dans l'histoire que nous incrémentons 43 le numéro du milieu ! 44 Les deux principales raisons à cela sont d'un côté les changements sans 45 précédent de la nouvelle interface d'entrée, et de l'autre l'incompatibilité 46 des modules dus au support des versions. 47</p> 48 49<p> 50 Ce qui suit concerne une description du nouveau mécanisme d'entrée. 51 Pour une liste complète des changements voir le 52 <a href="/ChangeLog-4.php#4.1.0">ChangeLog</a>. 53</p> 54 55<hr> 56 57<h2>SECURITE: NOUVEAU MECANISME D'ENTREE</h2> 58 59<p> 60 Avant tout, il est important de signaler que, sans tenir compte de ce 61 que vous pourriez lire dans les lignes qui suivent, PHP 4.1.0 <strong>gère 62 encore</strong> les anciens mécanismes d'entrée des anciennes versions. 63 D'anciennes applications devraient bien fonctionner sans modifications ! 64</p> 65 66<p>Passsons à la suite mainenant que cela est dit :)</p> 67 68<p> 69 Pour différentes raisons, PHP qui se repose sur register_globals ON 70 (ex. sur les formulaires, les variables serveur et d'environnement 71 deviennent partie de la portée globale d'un script [namespace], et 72 ce automatiquement) sont très souvent exploitable à des degrés 73 divers. Par exemple le code suivant: 74</p> 75 76<?php highlight_php('<?php 77if (authenticate_user()) { 78 $authenticated = true; 79} 80... 81?>');?> 82 83<p> 84 Peut être exploitable de la manière suivante, des utilisateurs 85 distants peuvent simplement passer 'authenticated' comme variable 86 d'un formulaire et même si authenticate_user() retourne false, 87 $authentiticated va actuellement contenir true. Ce"la semble etre un 88 exemple très simple, mais en réalité, bien des applications PHP 89 sont exploitable par ce dysfonctionnement. 90</p> 91 92<p> 93 Tandis qu'il est parfaitement possible d'écrire du code PHP 94 sécurisé, nous sentions que le fait que PHP permette, de manière beaucoup 95 trop facile, d'écrire du code PHP non sécurisé n'était pas 96 acceptable, et nous avons décidé de tenter un changement très grand 97 et de rendre caduque register_globals. 98 Evidemment, à cause de la grande majorité de code PHP dans le monde se 99 reposant sur l'existence de cette fonctionnalité, nous ne la supprimerons 100 jamais, mais nous avons décidés d'encourager les utilisateurs de ne plus 101 l'utiliser à chaque fois que cela est possible. 102</p> 103 104<p> 105 Afin d'aider les utilisateurs à construire des applications PHP avec 106 register_globals à Off, nous avons ajouté quelques nouvelles 107 variables spéciales, variables qui peuvent être utilisées à la place 108 des anciennes variables globales. Il y a 7 nouveaux tableaux spéciaux: 109</p> 110 111<ul> 112 <li>$_GET - contient les variables passées par la méthode GET</li> 113 <li>$_POST - contient les variables passées par la méthode POST</li> 114 <li>$_COOKIE - contient les variables HTTP cookie</li> 115 <li>$_SERVER - contient les variables serveur (par ex. REMOTE_ADDR)</li> 116 <li>$_ENV - contient les variables d'environnement</li> 117 <li> 118 $_REQUEST - Une fusion des variables GET. POST, COOKIE. En d'autres 119 termes toutes les informations qui arrivent de l'utilisateur, 120 et qui d'un point de vue purement sécuritaire, ne sont pas sûres 121 </li> 122 <li> 123 $_SESSION - contient toutes les variables HTTP enregistrées par le 124 module des sessions 125 </li> 126</ul> 127 128<p> 129 Maintenant, entre autre le fait que ces variables contiennent ces 130 informations spéciales, elles sont aussi automatiquement globales 131 dans toutes les portées. Cela signifie que vous pouvez y accéder 132 de n'importe où, sans avoir à les déclarer en globales. Par exemple: 133</p> 134 135<?php highlight_php('<?php 136function example1() 137{ 138 print $_GET["name"]; // fonctionne, pas besoin de \'global $_GET;\' ! 139} 140?>');?> 141 142<p> 143 va fonctionner très bien! Nous espérons que cela va faciliter la tâche 144 durant la migration de vieux code vers le nouveau, et nous sommes sûrs 145 que cela vous simplifiera l'écriture de nouveaux codes. 146 Une autre astuce est que le fait de créer de nouvelles entrées dans 147 $_SESSION va automatiquement les enregistrer comme variables de session, 148 comme si vous auriez appelé session_register(). Cette astuce est limitée 149 uniquement au module de gestion de session - par exemple, créer de 150 nouvelles entrés dans $_ENV ne va <strong>pas</strong> exécuter un put_env() 151 implicite. 152</p> 153 154<p> 155 PHP 4.1.0 doit toujours avoir register_globals mis a On par défaut. 156 C'est une version de transition, et nous encourageons les auteurs 157 d'applications, spécialement les applications publiques qui sont utilisées 158 par une large audience, de changer leurs applications pour fonctionner 159 avec un environnement où register_globals est à Off. Il est clair 160 qu'ils devraient profiter des nouvelles fonctionnalités fournies 161 avec PHP 4.1.0 qui font que cette transition est plus aisée. 162</p> 163 164<p> 165 Dans la prochaine version "semi majeure" de PHP, de nouvelles installations 166 de PHP devrait avoir register_globals mis à Off par défaut. Ne vous en 167 faites pas! Les installations existantes, qui ont déjà un fichier php.ini 168 qui a register_globals à On, ne vont pas être affectées. Cela vous 169 affectera seulement si vous installez PHP sur une nouvelle machine 170 (typiquement si vous êtes un nouvel utilisateur), et si vous le désirez 171 vous pourrez toujours le mettre à On. 172</p> 173 174<p> 175 Note: Certains de ces tableaux ont d'anciens noms, exemple : $HTTP_GET_VARS. 176 Ces noms fonctionnent toujours, mais nous encourageons les utilisateurs 177 de migrer vers le nouveaux noms, plus courts et qui sont des versions 178 automatiquement globales. 179</p> 180 181<p> 182 Les remerciements vont à Shaun Clowes (shaun at securereality dot com dot au) 183 pour avoir révélé ce problème et avoir aidé 184 à l'analyser. 185</p> 186 187<p> 188 French translation is available courtesy of Pierre-Alain Joye 189 (pierre-alain dot joye at wanadoo dot fr). 190</p> 191 192<?php site_footer(); ?> 193