[RESOLU] Compréhension de if (!empty($_FILES)) {

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Compréhension de if (!empty($_FILES)) {

Re: Compréhension de if (!empty($_FILES)) {

par JAG11 » 12 avr. 2021, 18:52

Super merci, je n'ai pas vu la chose comme cela

Re: Compréhension de if (!empty($_FILES)) {

par Ryle » 12 avr. 2021, 18:23

$_FILES n'est pas vide dans ton cas, elle contient un tableau associatif qui lui non plus n'est pas vide ;)

En revanche l'index $_FILES['file']['tmp_name'] est quant à lui bien vide.
A noter que la fonction is_uploaded_file() te permet de vérifier si un fichier a été uploadé correctement :)

https://www.php.net/manual/fr/function. ... d-file.php

Re: Compréhension de if (!empty($_FILES)) {

par JAG11 » 12 avr. 2021, 17:51

Merci mais ce que je comprends pas, ma variable est vide $_FILES est vide et pourtant je rentre dans la condition IF et j'ai mon message d'erreur de l'extension de fichier qui s'affiche:
Array
(
[file] => Array
(
[name] =>
[type] =>
[tmp_name] =>
[error] => 4
[size] => 0
)

)

Erreur dans le format de fichier. Seules les extensions en pdf sont autorisées

Re: Compréhension de if (!empty($_FILES)) {

par Ryle » 12 avr. 2021, 17:02

Salutations !

L'opérateur "!" en php est un opérateur logique qui permet d'inverser le résultat d'une condition booléenne. En gros, il permet d'évaluer "le contraire" de ce qui va suivre. Par exemple : !false == true, !true == false.

Pour l'appliquer dans ton contexte :
- empty() retourne "true" si $_FILES n'est pas défini, est vide, est égale à 0 ... et "false" sinon
Au contraire :
- !empty() retournera "false" si $_FILES n'est pas défini, est vide, égale à 0 ... et "true" sinon

En utilisant cet opérateur tu cherches à savoir si la variable N'EST PAS vide pour effectuer le traitement associé

Cela permet de simplifier ce type d'écriture :
if (empty($_FILES)) {
  // ne fait rien
}
else {
  // fait quelque chose
}
En
if (!empty($_FILES)) {
  // fait quelque chose
}

Compréhension de if (!empty($_FILES)) {

par JAG11 » 12 avr. 2021, 14:26

Bonjour je n'arrive ps à bien comprendre

Code : Tout sélectionner

if (!empty($_FILES)) {
Et en particulier
!
Je me sers de cet fonction pour télécharger un fichier PDF.
Quand le fichier PDF existe il n'y a pas de problème, mais quand il n'y en a pas ça ne marche plus. La présence d'un fichier pdf n'est pas nécessaire.

Voici le code complet

Code : Tout sélectionner

<?php try { include("../connect.php"); } catch (Exception $e) { die('Erreur : ' . $e->getMessage()); } $Id_Type_Assos = strip_tags($_POST['Id_Type_Assos']); $Id_Type_Article = strip_tags($_POST['Id_Type_Article']); $Titre_News = strip_tags($_POST['Titre_News']); $Commentaires_News = strip_tags($_POST['Commentaires_News']); $Commentaires_Court = substr($Commentaires_News, 0, 100) . "..."; $date = strip_tags($_POST['Date_News']); // On ajoute une entrée dans la table $pdoStat = $db->prepare('INSERT INTO t_newsletters VALUES(NULL,:Id_Type_Assos,:Id_Type_Article,:Titre_News,:Commentaires_News,:Commentaires_Court,:Lien_News,:Date_News)'); //on lie chaque marqueur à une valeur $pdoStat->bindValue(':Id_Type_Assos', $_POST['Id_Type_Assos'], PDO::PARAM_INT); $pdoStat->bindValue(':Id_Type_Article', $Id_Type_Article, PDO::PARAM_INT); $pdoStat->bindValue(':Titre_News', $Titre_News, PDO::PARAM_STR); $pdoStat->bindValue(':Commentaires_News', $Commentaires_News, PDO::PARAM_STR); $pdoStat->bindValue(':Commentaires_Court', $Commentaires_Court, PDO::PARAM_STR); $pdoStat->bindParam(':Lien_News', $file_dest, PDO::PARAM_STR); $pdoStat->bindValue(':Date_News', $date, PDO::PARAM_STR); $nom = 'ffmo' . $date . " " . $Id_Type_Article; //Récupération du fichier PDF if (!empty($_FILES)) { $file_name = $_FILES['file']['name']; //qui contient le nom qu'avait le fichier dans l'espace de l'utilisateur $file_tmp_name = $_FILES['file']['tmp_name']; //contient le nom (et chemin) du fichier temporaire sous lequel le fichier a été stocké $file_type = $_FILES['file']['type']; //contient le type de fichier $size = $_FILES['file']['size']; //qui contient la taille du fichier en octets $file_extension = strrchr($file_name, "."); //contient l'extension //RENOMMAGE DU FICHIER $file_dest = 'PDF/' . $nom . $file_extension; //contient la destination $extension_autorisee = array('.pdf', '.PDF'); //Extenion autorisée if (in_array($file_extension, $extension_autorisee)) { if (move_uploaded_file($file_tmp_name, $file_dest)) { } } else { echo 'Erreur dans le format de fichier. Seules les extensions en png sont autorisées'; exit(); } } //Excution de la requete preparée $pdoStat->execute(); header("Location: index.php"); include("../close.php"); exit;