Après un long processus "QA", PHP 4.1.0 est enfin sorti!
[ English Version ]
PHP 4.1.0 inclut beaucoup d'améliorations importantes:
Comme certains l'ont noté, cette version est quelque peu historique, comme c'est la première fois dans l'histoire que nous incrémentons le numéro du milieu ! Les deux principales raisons à cela sont d'un côté les changements sans précédent de la nouvelle interface d'entrée, et de l'autre l'incompatibilité des modules dus au support des versions.
Ce qui suit concerne une description du nouveau mécanisme d'entrée. Pour une liste complète des changements voir le ChangeLog.
Avant tout, il est important de signaler que, sans tenir compte de ce que vous pourriez lire dans les lignes qui suivent, PHP 4.1.0 gère encore les anciens mécanismes d'entrée des anciennes versions. D'anciennes applications devraient bien fonctionner sans modifications !
Passsons à la suite mainenant que cela est dit :)
Pour différentes raisons, PHP qui se repose sur register_globals ON (ex. sur les formulaires, les variables serveur et d'environnement deviennent partie de la portée globale d'un script [namespace], et ce automatiquement) sont très souvent exploitable à des degrés divers. Par exemple le code suivant:
<?php
if (authenticate_user()) {
$authenticated = true;
}
...
?>
Peut être exploitable de la manière suivante, des utilisateurs distants peuvent simplement passer 'authenticated' comme variable d'un formulaire et même si authenticate_user() retourne false, $authentiticated va actuellement contenir true. Ce"la semble etre un exemple très simple, mais en réalité, bien des applications PHP sont exploitable par ce dysfonctionnement.
Tandis qu'il est parfaitement possible d'écrire du code PHP sécurisé, nous sentions que le fait que PHP permette, de manière beaucoup trop facile, d'écrire du code PHP non sécurisé n'était pas acceptable, et nous avons décidé de tenter un changement très grand et de rendre caduque register_globals. Evidemment, à cause de la grande majorité de code PHP dans le monde se reposant sur l'existence de cette fonctionnalité, nous ne la supprimerons jamais, mais nous avons décidés d'encourager les utilisateurs de ne plus l'utiliser à chaque fois que cela est possible.
Afin d'aider les utilisateurs à construire des applications PHP avec register_globals à Off, nous avons ajouté quelques nouvelles variables spéciales, variables qui peuvent être utilisées à la place des anciennes variables globales. Il y a 7 nouveaux tableaux spéciaux:
Maintenant, entre autre le fait que ces variables contiennent ces informations spéciales, elles sont aussi automatiquement globales dans toutes les portées. Cela signifie que vous pouvez y accéder de n'importe où, sans avoir à les déclarer en globales. Par exemple:
<?php
function example1()
{
print $_GET["name"]; // fonctionne, pas besoin de 'global $_GET;' !
}
?>
va fonctionner très bien! Nous espérons que cela va faciliter la tâche durant la migration de vieux code vers le nouveau, et nous sommes sûrs que cela vous simplifiera l'écriture de nouveaux codes. Une autre astuce est que le fait de créer de nouvelles entrées dans $_SESSION va automatiquement les enregistrer comme variables de session, comme si vous auriez appelé session_register(). Cette astuce est limitée uniquement au module de gestion de session - par exemple, créer de nouvelles entrés dans $_ENV ne va pas exécuter un put_env() implicite.
PHP 4.1.0 doit toujours avoir register_globals mis a On par défaut. C'est une version de transition, et nous encourageons les auteurs d'applications, spécialement les applications publiques qui sont utilisées par une large audience, de changer leurs applications pour fonctionner avec un environnement où register_globals est à Off. Il est clair qu'ils devraient profiter des nouvelles fonctionnalités fournies avec PHP 4.1.0 qui font que cette transition est plus aisée.
Dans la prochaine version "semi majeure" de PHP, de nouvelles installations de PHP devrait avoir register_globals mis à Off par défaut. Ne vous en faites pas! Les installations existantes, qui ont déjà un fichier php.ini qui a register_globals à On, ne vont pas être affectées. Cela vous affectera seulement si vous installez PHP sur une nouvelle machine (typiquement si vous êtes un nouvel utilisateur), et si vous le désirez vous pourrez toujours le mettre à On.
Note: Certains de ces tableaux ont d'anciens noms, exemple : $HTTP_GET_VARS. Ces noms fonctionnent toujours, mais nous encourageons les utilisateurs de migrer vers le nouveaux noms, plus courts et qui sont des versions automatiquement globales.
Les remerciements vont à Shaun Clowes (shaun at securereality dot com dot au) pour avoir révélé ce problème et avoir aidé à l'analyser.
French translation is available courtesy of Pierre-Alain Joye (pierre-alain dot joye at wanadoo dot fr).
怂人是什么意思 | 什么叫cd | 厨娘是什么意思 | 自然数的定义是什么 | 痰多吃什么好化痰 |
责任是什么生肖 | 婴儿什么时候长牙 | 毛是什么意思 | 十玉九裂是什么意思 | 什么药治肝最好最安全 |
真丝和桑蚕丝有什么区别 | 7月5日什么星座 | 前羽念什么 | 干细胞有什么作用 | 咽炎吃什么药好 |
糖尿病人可以吃什么 | 看幽门螺旋杆菌挂什么科 | 千年杀是什么 | 脚拇指外翻是什么原因造成的 | 白细胞介素是什么 |
副高相当于什么级别hcv8jop5ns4r.cn | 成服是什么意思hcv9jop0ns3r.cn | 白色虫子是什么虫图片hcv9jop4ns0r.cn | 3月12号是什么星座hcv9jop5ns6r.cn | 生长因子是什么东西hcv8jop7ns2r.cn |
尿酸高去医院挂什么科xianpinbao.com | 黄金分割点是什么hcv8jop6ns7r.cn | 喉咙干痒吃什么药hcv8jop4ns8r.cn | 撒拉族和回族有什么区别hcv8jop0ns5r.cn | 白脸红脸代表什么hcv8jop5ns0r.cn |
拮抗剂是什么hcv9jop3ns6r.cn | 西地那非有什么副作用hcv8jop9ns0r.cn | 灵芝有什么功效和作用hcv9jop7ns3r.cn | 上夜班吃什么对身体好hcv9jop4ns7r.cn | 扭转乾坤什么意思hcv9jop3ns9r.cn |
白色舌苔厚是什么原因hcv7jop6ns6r.cn | 气球是什么生肖hcv9jop5ns8r.cn | ssr是什么意思hcv9jop5ns9r.cn | 踏马什么意思hcv8jop5ns1r.cn | 肚子疼吃什么食物好inbungee.com |