xref: /web-php/releases/4_1_0_fr.php (revision d9bcfed4)
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&egrave;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&eacute;liorations importantes:
16</p>
17<ul>
18 <li>Une nouvelle interface d'entr&eacute;e en g&eacute;n&eacute;ral (voir plus bas)</li>
19 <li>Perfomance grandement accrue en g&eacute;n&eacute;ral</li>
20 <li>
21  Sous Windows une stabilit&eacute; et une performance r&eacute;volutionnaire. Les
22  modules serveur multi-thread sous windows (ISAPI, Apache, etc...)
23  s'ex&eacute;cute jusqu'&agrave; 30 fois plus rapidement sous la charge! Nous
24  voulons remercier Brett Brewer et son &eacute;quipe chez Microsoft pour
25  son travail avec nous pour am&eacute;liorer PHP pour Windows.
26 </li>
27 <li>
28  Gestion des versions pour les extensions. A l'heure actuelle, ceci
29  est tr&egrave;s peu utilis&eacute;, l'infrastructure &eacute;tait mise en place pour le
30  support s&eacute;par&eacute; des num&eacute;ros de versions pour diff&eacute;rentes extensions.
31  L'effet de bord n&eacute;gatif est que le faite de charger des extensions
32  avec une ancienne version de PHP r&eacute;sultait d'un crash, &agrave; la place
33  d'un message correct et claire. Soyez s&ucirc;rs que vous utilisez
34  seulement des extensions int&eacute;gr&eacute;es &agrave; 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&eacute;, cette version est quelque peu historique,
42 comme c'est la premi&egrave;re fois dans l'histoire que nous incr&eacute;mentons
43 le num&eacute;ro du milieu !
44 Les deux principales raisons &agrave; cela sont d'un c&ocirc;t&eacute; les changements sans
45 pr&eacute;c&eacute;dent de la nouvelle interface d'entr&eacute;e, et de l'autre l'incompatibilit&eacute;
46 des modules dus au support des versions.
47</p>
48
49<p>
50 Ce qui suit concerne une description du nouveau m&eacute;canisme d'entr&eacute;e.
51 Pour une liste compl&egrave;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&egrave;re
62 encore</strong> les anciens m&eacute;canismes d'entr&eacute;e des anciennes versions.
63 D'anciennes applications devraient bien fonctionner sans modifications !
64</p>
65
66<p>Passsons &agrave; la suite mainenant que cela est dit :)</p>
67
68<p>
69 Pour diff&eacute;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&eacute;e globale d'un script [namespace], et
72 ce automatiquement) sont tr&egrave;s souvent exploitable &agrave; des degr&eacute;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 &ecirc;tre exploitable de la mani&egrave;re suivante, des utilisateurs
85 distants peuvent simplement passer 'authenticated' comme variable
86 d'un formulaire et m&ecirc;me si authenticate_user() retourne false,
87 $authentiticated va actuellement contenir true. Ce"la semble etre un
88 exemple tr&egrave;s simple, mais en r&eacute;alit&eacute;, bien des applications PHP
89 sont exploitable par ce dysfonctionnement.
90</p>
91
92<p>
93 Tandis qu'il est parfaitement possible d'&eacute;crire du code PHP
94 s&eacute;curis&eacute;, nous sentions que le fait que PHP permette, de mani&egrave;re beaucoup
95 trop facile, d'&eacute;crire du code PHP non s&eacute;curis&eacute; n'&eacute;tait pas
96 acceptable, et nous avons d&eacute;cid&eacute; de tenter un changement tr&egrave;s grand
97 et de rendre caduque register_globals.
98 Evidemment, &agrave; cause de la grande majorit&eacute; de code PHP dans le monde se
99 reposant sur l'existence de cette fonctionnalit&eacute;, nous ne la supprimerons
100 jamais, mais nous avons d&eacute;cid&eacute;s d'encourager les utilisateurs de ne plus
101 l'utiliser &agrave; chaque fois que cela est possible.
102</p>
103
104<p>
105 Afin d'aider les utilisateurs &agrave; construire des applications PHP avec
106 register_globals &agrave; Off, nous avons ajout&eacute; quelques nouvelles
107 variables sp&eacute;ciales, variables qui peuvent &ecirc;tre utilis&eacute;es &agrave; la place
108 des anciennes variables globales. Il y a 7 nouveaux tableaux sp&eacute;ciaux:
109</p>
110
111<ul>
112 <li>$_GET - contient les variables pass&eacute;es par la m&eacute;thode GET</li>
113 <li>$_POST - contient les variables pass&eacute;es par la m&eacute;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&eacute;curitaire, ne sont pas s&ucirc;res
121 </li>
122 <li>
123  $_SESSION - contient toutes les variables HTTP enregistr&eacute;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&eacute;ciales, elles sont aussi automatiquement globales
131 dans toutes les port&eacute;es. Cela signifie que vous pouvez y acc&eacute;der
132 de n'importe o&ugrave;, sans avoir &agrave; les d&eacute;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&egrave;s bien! Nous esp&eacute;rons que cela va faciliter la t&acirc;che
144 durant la migration de vieux code vers le nouveau, et nous sommes s&ucirc;rs
145 que cela vous simplifiera l'&eacute;criture de nouveaux codes.
146 Une autre astuce est que le fait de cr&eacute;er de nouvelles entr&eacute;es dans
147 $_SESSION va automatiquement les enregistrer comme variables de session,
148 comme si vous auriez appel&eacute; session_register(). Cette astuce est limit&eacute;e
149 uniquement au module de gestion de session - par exemple, cr&eacute;er de
150 nouvelles entr&eacute;s dans $_ENV ne va <strong>pas</strong> ex&eacute;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&eacute;faut.
156 C'est une version de transition, et nous encourageons les auteurs
157 d'applications, sp&eacute;cialement les applications publiques qui sont utilis&eacute;es
158 par une large audience, de changer leurs applications pour fonctionner
159 avec un environnement o&ugrave; register_globals est &agrave; Off. Il est clair
160 qu'ils devraient profiter des nouvelles fonctionnalit&eacute;s fournies
161 avec PHP 4.1.0 qui font que cette transition est plus ais&eacute;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 &agrave; Off par d&eacute;faut. Ne vous en
167 faites pas! Les installations existantes, qui ont d&eacute;j&agrave; un fichier php.ini
168 qui a register_globals &agrave; On, ne vont pas &ecirc;tre affect&eacute;es. Cela vous
169 affectera seulement si vous installez PHP sur une nouvelle machine
170 (typiquement si vous &ecirc;tes un nouvel utilisateur), et si vous le d&eacute;sirez
171 vous pourrez toujours le mettre &agrave; 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 &agrave; Shaun Clowes (shaun at securereality dot com dot au)
183 pour avoir r&eacute;v&eacute;l&eacute; ce probl&egrave;me et avoir aid&eacute;
184 &agrave; 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