1.
Comment puis-je manipuler le manuel compressé en bzip2 sous Windows ?
Si vous n'avez pas d'outil d'archivage prenant en charge les fichiers au
format bz2, téléchargez l'outil en
ligne de commande à partir de Redhat (merci de lire les informations
plus bas).
Si vous préférez ne pas utiliser d'outil en ligne de commande, vous
pouvez essayer des outils gratuits comme Stuffit Expander,
UltimateZip,
7-Zip, ou
Quick Zip. Si vous avez
des outils comme WinRAR ou
Power Archiver, vous pouvez
facilement décompresser les fichiers bz2 avec. Si vous utilisez Total Commander
(autrefois Windows Commander), un plugin bz2 est disponible gratuitement sur le site de
Total Commander.
L'outil en ligne commande bzip2 de Redhat :
Les utilisateurs du service pack 2 de Win2K doivent prendre la version
1.0.2, tous les autres utilisateurs de Windows doivent prendre la
version 1.00. Après avoir téléchargé, renommez l'exécutable en bzip2.exe.
Pour votre convenance, mettez-le dans un dossier dans votre path, c'est
à dire C:\Windows où C représente votre disque où Windows est installé.
Note : Dans ce qui suit, lang représente votre langue et x le format
désiré, par exemple : pdf.
Pour décompresser php_manual_lang.x.bz2 suivez les instructions
suivantes :
ouvrez un invite de commande
déplacez-vous dans le dossier où se trouvent les fichiers php_manual_lang.x.bz2
lancez la commande bzip2 -d php_manual_lang.x.bz2, pour extraire
php_manual_lang.x dans ce même dossier
Dans le cas où vous avez téléchargé le fichier php_manual_lang.tar.bz2
avec beaucoup de fichiers HTML Ã l'intérieur, la procédure est la même.
La seule différence est que vous obtiendrez un fichier php_manual_lang.tar.
Le format tar est connu pour être pris en compte par la plupart des
archiveurs de Windows, comme WinZip.
2.
Que signifie le caractère "&" devant les arguments dans les déclarations
des fonctions comme la fonction asort() ?
Cela signifie que cet argument est
passé par référence
et que la fonction le modifiera, comme expliqué dans la documentation.
Vous pouvez passer uniquement des variables de cette façon et vous
n'avez pas besoin de les passer avec le caractère "&" dans l'appel de la fonction
(car dépréciée).
3.
Comment puis-je gérer la directive register_globals ?
Pour plus d'informations concernant l'implication sur la sécurité de la
directive register_globals, lisez le chapitre sur la sécurité
concernant l'utilisation de register_globals.
Il est préférable d'utiliser les
superglobals,
plutôt que de remettre à on la directive
register_globals.
Si vous êtes sur un serveur mutualisé avec la directive
register_globals de positionnée à off
et que vous devez utiliser des applications qui requièrent que cette option soit Ã
on ou si vous êtes hébergés sur un serveur qui a cette directive d'activée
mais que vous voudriez éliminer ce risque sécuritaire, vous devriez émuler
l'argument opposé avec PHP. C'est toujours une bonne idée que de demander tout d'abord
s'il est possible de modifier cette option dans la configuration de PHP mais si cela n'est
pas possible, vous pouvez utiliser ces astuces de compatibilité.
Exemple 62-1. Émulation des Register Globals
Ceci émulera la directive register_globals à On.
Si vous modifiez la directive
variables_order, modifiez la variable
$superglobals pour qu'elle corresponde à votre nouvelle
directive..
<?php // Émulation de register_globals à on if (!ini_get('register_globals')) { $superglobals = array($_SERVER, $_ENV, $_FILES, $_COOKIE, $_POST, $_GET); if (isset($_SESSION)) { array_unshift($superglobals, $_SESSION); } foreach ($superglobals as $superglobal) { extract($superglobal, EXTR_SKIP); } } ?>
|
Ceci émulera register_globals à Off. Gardez à l'esprit que ce code doit être appelé au tout
début de votre script ou après la foncton
session_start() si vous l'utilisez pour commencer votre session.
<?php // Émulation de register_globals à off function unregister_GLOBALS() { if (!ini_get('register_globals')) { return; }
// Vous pouvez vouloir modifier cela pour avoir une erreur plus jolie if (isset($_REQUEST['GLOBALS']) || isset($_FILES['GLOBALS'])) { die('Tentative d\'effacement des GLOBALS détectée'); }
// Les variables à ne jamais effacer $noUnset = array('GLOBALS', '_GET', '_POST', '_COOKIE', '_REQUEST', '_SERVER', '_ENV', '_FILES');
$input = array_merge($_GET, $_POST, $_COOKIE, $_SERVER, $_ENV, $_FILES, isset($_SESSION) && is_array($_SESSION) ? $_SESSION : array());
foreach ($input as $k => $v) { if (!in_array($k, $noUnset) && isset($GLOBALS[$k])) { unset($GLOBALS[$k]); } } }
unregister_GLOBALS();
?>
|
|