Questions diverses

Il y'a quelques questions inclassables. Vous les trouverez ici.

  1. Comment puis-je manipuler le manuel compress� en bzip2 sous Windows ?
  2. Que signifie le caract�re "&" devant les arguments dans les d�clarations des fonctions comme la fonction asort() ?
  3. Comment puis-je g�rer la directive register_globals ?

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.

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).

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 #1 �mulation des Register Globals

Ceci �mulera la directive register_globalsOn. 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($superglobalEXTR_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 fonction 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();

?>