Décompresser des fichiers avec PHP : une approche Segura
La décompression de fichiers est une tâche courante dans le développement Web. Bien que l'exécution directe de la commande system('unzip File.zip') puisse fonctionner, l'utilisation de paramètres d'URL pour spécifier le nom de fichier peut s'avérer difficile.
Le piège lié à l'utilisation des paramètres d'URL
Le problème dans le code fourni survient lors de l'utilisation de $master.zip dans la commande system('unzip $master.zip'). Les variables en PHP ne sont pas interpolées dans les chaînes entourées de guillemets simples ('). Par conséquent, la commande tentera d'exécuter unzip $master.zip, qui n'est pas le nom de fichier prévu.
Une solution sécurisée et efficace
Pour résoudre ce problème, PHP des extensions intégrées pour gérer les fichiers compressés doivent être utilisées. L'une de ces extensions est ZipArchive. Voici un code révisé :
<?php // Get the filename from the URL parameter $filename = $_GET["master"]; // Instantiate the ZipArchive object $zip = new ZipArchive(); // Open the zip file $res = $zip->open($filename); // Check if the zip file was opened successfully if ($res === TRUE) { // Extract the contents of the zip file to the current directory $zip->extractTo('.'); // Close the zip file $zip->close(); echo "$filename extracted successfully."; } else { echo "Could not open $filename."; } ?>
Considérations supplémentaires
Lors de l'acceptation d'une entrée utilisateur via des variables $_GET, il est crucial de nettoyer l'entrée pour éviter d'éventuelles attaques malveillantes. Validez et filtrez toujours les données soumises par l'utilisateur avant de les utiliser dans le code PHP.
Extraction vers le même répertoire que le fichier Zip
Si l'emplacement d'extraction souhaité est le même répertoire dans lequel réside le fichier zip, déterminez le chemin absolu du fichier :
// Get the absolute path to the zip file $path = pathinfo(realpath($filename), PATHINFO_DIRNAME); // Extract the zip file to the determined path $zip->extractTo($path);
En employant ces techniques, vous pouvez décompresser les fichiers de manière sécurisée et efficace. avec PHP. N'oubliez pas de toujours donner la priorité à la validation des entrées et aux mesures de sécurité lorsque vous travaillez avec des données soumises par les utilisateurs.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!