par
publiphobe » 25 avr. 2021, 08:37
Bonjour à tous,
j'ai un code PHP qui fonctionne très bien, qui consiste à uploader une image sur un site. Par contre, depuis que je lui ai ajouté une fonction qui vérifie qu'il n'y a pas la chaîne de caractère "<?" dans le fichier, le code ne s’exécute plus. Et je ne parviens pas à comprendre d'où vient l'erreur.
Voici le code complet.
Code : Tout sélectionner
<?php
// Vérifier si le formulaire a été soumis
if($_SERVER["REQUEST_METHOD"] == "POST"){
// Vérifie si le fichier a été uploadé sans erreur.
if(isset($_FILES["photo"]) && $_FILES["photo"]["error"] == 0){
$allowed = array("jpg" => "image/jpg", "jpeg" => "image/jpeg", "gif" => "image/gif", "png" => "image/png");
$filename = $_FILES["photo"]["name"];
$filetype = $_FILES["photo"]["type"];
$filesize = $_FILES["photo"]["size"];
$tmp_name = $_FILES["photo"]["tmp_name"];
// Vérifie qu'il n'y pas pas la chaine "<?" dans le contenu du fichier
$photo = file_get_contents($tmp_name);
if (mb_strpos($photo, "<?") !== FALSE) die("Pourquoi mettre du code dans une image ?");
// Vérifie l'extension du fichier
$ext = pathinfo($filename, PATHINFO_EXTENSION);
if(!array_key_exists($ext, $allowed)) die("Erreur : Veuillez sélectionner un format de fichier valide.");
// Vérifie la taille du fichier - 5Mo maximum
$maxsize = 5 * 1024 * 1024;
if($filesize > $maxsize) die("Error: La taille du fichier est supérieure à la limite autorisée.");
// Vérifie le type MIME du fichier
if(in_array($filetype, $allowed)){
// Vérifie si le fichier existe avant de le télécharger.
if(file_exists("upload/" . $_FILES["photo"]["name"])){
echo $_FILES["photo"]["name"] . " existe déjà.";
} else{
move_uploaded_file($_FILES["photo"]["tmp_name"], "upload/" . $_FILES["photo"]["name"]);
echo "Votre fichier a été téléchargé avec succès.";
}
} else{
echo "Error: Il y a eu un problème de téléchargement de votre fichier. Veuillez réessayer.";
}
} else{
echo "Error: " . $_FILES["photo"]["error"];
}
}
?>
Si l'un d'entre vous a une idée, je suis preneur.
Merci beaucoup,
Bonjour à tous,
j'ai un code PHP qui fonctionne très bien, qui consiste à uploader une image sur un site. Par contre, depuis que je lui ai ajouté une fonction qui vérifie qu'il n'y a pas la chaîne de caractère "<?" dans le fichier, le code ne s’exécute plus. Et je ne parviens pas à comprendre d'où vient l'erreur.
Voici le code complet.
[code]
<?php
// Vérifier si le formulaire a été soumis
if($_SERVER["REQUEST_METHOD"] == "POST"){
// Vérifie si le fichier a été uploadé sans erreur.
if(isset($_FILES["photo"]) && $_FILES["photo"]["error"] == 0){
$allowed = array("jpg" => "image/jpg", "jpeg" => "image/jpeg", "gif" => "image/gif", "png" => "image/png");
$filename = $_FILES["photo"]["name"];
$filetype = $_FILES["photo"]["type"];
$filesize = $_FILES["photo"]["size"];
$tmp_name = $_FILES["photo"]["tmp_name"];
// Vérifie qu'il n'y pas pas la chaine "<?" dans le contenu du fichier
$photo = file_get_contents($tmp_name);
if (mb_strpos($photo, "<?") !== FALSE) die("Pourquoi mettre du code dans une image ?");
// Vérifie l'extension du fichier
$ext = pathinfo($filename, PATHINFO_EXTENSION);
if(!array_key_exists($ext, $allowed)) die("Erreur : Veuillez sélectionner un format de fichier valide.");
// Vérifie la taille du fichier - 5Mo maximum
$maxsize = 5 * 1024 * 1024;
if($filesize > $maxsize) die("Error: La taille du fichier est supérieure à la limite autorisée.");
// Vérifie le type MIME du fichier
if(in_array($filetype, $allowed)){
// Vérifie si le fichier existe avant de le télécharger.
if(file_exists("upload/" . $_FILES["photo"]["name"])){
echo $_FILES["photo"]["name"] . " existe déjà.";
} else{
move_uploaded_file($_FILES["photo"]["tmp_name"], "upload/" . $_FILES["photo"]["name"]);
echo "Votre fichier a été téléchargé avec succès.";
}
} else{
echo "Error: Il y a eu un problème de téléchargement de votre fichier. Veuillez réessayer.";
}
} else{
echo "Error: " . $_FILES["photo"]["error"];
}
}
?>
[/code]
Si l'un d'entre vous a une idée, je suis preneur.
Merci beaucoup,