Warning : fopen(): Filename cannot be empty

Fermé
Damino10 - 31 oct. 2013 à 11:10
Atropa Messages postés 1940 Date d'inscription mercredi 25 juin 2008 Statut Membre Dernière intervention 11 mai 2014 - 3 nov. 2013 à 21:01
Bonjour,

dans le cade de sécurisation de mon formulaire d'upload je demande a php d'ouvrir les images "uploadé"et de vérifier qu'il n'y est pas de php a l'intérieur... pour l'instant la commande a l'air de bien fonctionner excepté quand la personne appuis sur "submit" sans n'avoir choisir aucun fichier j'obtiens l'erreur "Warning: fopen(): Filename cannot be empty in".
Ce qui n'est pas normal car je précise bien en début de code if(!empty($_FILES)) si différend de vide.


if(!empty($_FILES))
{
$validate = true;
$image = $_FILES['image'];
$nom_image = $image['name'];
$tmp = $image['tmp_name'];


$fp=fopen("$tmp","r");
if (!$fp)
{
// si on ne peut pas ouvrire l'image en temps que fichier on retourne false
echo "Impossible de verifier la validité de l'image ";
$validate = false;

}else{
// On va rechercher dans l'image un code php ou html
while (!feof($fp))

{
$ligne = fgets($fp, 1024);
$php = preg_match("!|include|date|base_convert|requiere|while|file_exists|echo|print|base64|<html>|<body>|<div |eval!Usi", $ligne) ;

// Si le nombre de code php trouver n'es pas egale à zero on retourne false
if($php != 0) {
$erreur="Erreur ";
$validate = false;
}

}

}
}

merci a ceux qui prendrons le temps de m'aider

bonne journée

1 réponse

Atropa Messages postés 1940 Date d'inscription mercredi 25 juin 2008 Statut Membre Dernière intervention 11 mai 2014 274
Modifié par Atropa le 3/11/2013 à 21:03
bonjour,

ce code ne sert strictement à rien à moins qu'apache soit très mal configuré pour autoriser l'exécution d'images...

function mimeType($path) {
if(!is_file($path)) return false;
$finfo = finfo_open(FILEINFO_MIME_TYPE);
return finfo_file($finfo,realpath($path));
}

$test = stripos(mimeType($image['tmp_name']), 'image') === 0;
echo ($test)? 'ok' : 'bad';

var_dump($test);
var_dump(mimeType($image['tmp_name']));

tu devrais utiliser une fonction de ce genre, c'est beaucoup plus fiable...
0