Comment vérifier si l'image est légale avant de l'enregistrer lorsque vous utilisez PHP pour enregistrer une image distante ?
Pendant le développement, nous rencontrons souvent le besoin de sauvegarder des images distantes, telles que l'exploration d'images sur des pages Web, le téléchargement d'avatars par les utilisateurs, etc. Cependant, afin de garantir la sécurité du serveur et de réduire le gaspillage inutile de ressources, nous devons effectuer un contrôle de légalité avant de sauvegarder des images distantes. Cet article explique comment utiliser PHP pour vérifier la légalité des images avant de les enregistrer et fournit des exemples de code correspondants.
1. Vérifiez la légalité de l'image
Avant d'enregistrer l'image distante, nous devons nous assurer que l'image est légale et éviter d'enregistrer des scripts malveillants ou des formats de fichiers non pris en charge. Voici quelques méthodes de vérification courantes :
$allowedExtensions = array('jpg', 'jpeg', 'png', 'gif'); // 允许的图片格式 $extension = pathinfo($imageUrl, PATHINFO_EXTENSION); // 获取文件后缀名 if (!in_array(strtolower($extension), $allowedExtensions)) { die('Invalid file format'); }
$responseHeaders = get_headers($imageUrl); $contentType = ''; foreach ($responseHeaders as $header) { if (strpos($header, 'Content-Type:') === 0) { $contentType = substr($header, 14); break; } } $allowedContentTypes = array('image/jpeg', 'image/png', 'image/gif'); if (!in_array($contentType, $allowedContentTypes)) { die('Invalid file format'); }
$maxFileSize = 2 * 1024 * 1024; // 最大文件大小为2MB $fileSize = filesize($tempFilePath); if ($fileSize > $maxFileSize) { die('File size too large'); }
2. Enregistrez l'image distante
Après avoir confirmé la légalité de l'image distante, nous pouvons utiliser la fonction file_put_contents de PHP pour enregistrer l'image sur le serveur. Voici un exemple de code :
// 获取远程图片内容 $imageData = file_get_contents($imageUrl); // 生成保存路径和文件名(可根据实际需求修改) $savePath = 'path/to/save/directory/'; $saveFileName = uniqid() . '.' . $extension; $saveFilePath = $savePath . $saveFileName; // 保存图片 if (file_put_contents($saveFilePath, $imageData)) { echo 'Save successfully'; } else { echo 'Save failed'; }
Ce qui précède explique comment vérifier si l'image est légale avant de l'enregistrer lorsque vous utilisez PHP pour enregistrer une image distante. En vérifiant l'extension du fichier, le format du fichier, la taille du fichier, etc., vous pouvez augmenter la sécurité du serveur et vous assurer que les images enregistrées sont légales. J'espère que cet article pourra vous aider.
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!