Maison > développement back-end > tutoriel php > Comment décompresser en toute sécurité des fichiers à partir d'une URL en PHP ?

Comment décompresser en toute sécurité des fichiers à partir d'une URL en PHP ?

Linda Hamilton
Libérer: 2024-12-10 21:42:21
original
503 Les gens l'ont consulté

How to Safely Unzip Files from a URL in PHP?

Décompression de fichier en PHP

Vous souhaitez décompresser un fichier en PHP mais vous rencontrez des difficultés lorsque vous essayez de transmettre le nom du fichier via l'URL . Examinons le problème et vous proposons une solution.

Analyse des erreurs

Vous obtenez le nom du fichier via $_GET, mais le $HTTP_GET_VARS obsolète est utilisé dans le code, PHP recommande d'utiliser $_GET. De plus, vous utilisez system('unzip $master.zip') pour décompresser le fichier, ce qui est dangereux car cela nécessite l'exécution d'un appel système sur le serveur.

Solution recommandée

PHP fournit une extension spécialement conçue pour gérer les fichiers compressés, à savoir ZipArchive. Il est recommandé de l'utiliser comme ceci :

$zip = new ZipArchive;
$res = $zip->open('file.zip');
if ($res === TRUE) {
  $zip->extractTo('/myzips/extract_path/');
  $zip->close();
  echo '解压成功!';
} else {
  echo '解压失败!';
}
Copier après la connexion

Gérer les chemins relatifs

Si vous souhaitez que le fichier soit extrait dans le même répertoire que le fichier, vous peut déterminer le fichier de Chemin absolu et spécifiez-le comme cible de décompression comme ceci :

$file = 'file.zip';
$path = pathinfo(realpath($file), PATHINFO_DIRNAME);
$zip = new ZipArchive;
$res = $zip->open($file);
if ($res === TRUE) {
  $zip->extractTo($path);
  $zip->close();
  echo "解压成功! $file 已解压到 $path";
} else {
  echo "解压失败!无法打开 $file";
}
Copier après la connexion

Conseils de sécurité

Validez toujours les entrées de l'utilisateur pour empêcher l'injection de code malveillant. N'oubliez pas :

Validez toujours les entrées des 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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal