Upload un fichier

Fermé
Natha-2001 Messages postés 12 Date d'inscription jeudi 14 novembre 2019 Statut Membre Dernière intervention 15 septembre 2021 - 15 sept. 2021 à 12:52
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 - 15 sept. 2021 à 18:04
Bonjour,

j'ai un gros pb je ne sais pas ce qui se passe en fait. j'ai un formulaire php pour Upload des fichier un peu partout dans mon site web et elles fonctionnaient parfaitement jusqu’à ce matin chaque fois que je valide un formulaire j'ai une erreur qui me dépasse franchement et tous mes formulaires ne fonctionne plus et me retournent la même erreur pardon vraiment je suis dépassée aider moi
voici mon code php
 <!-- code de comment ca marche -->
<?php
require 'page de connexion/config.php';
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

session_start();
if(isset($_SESSION['id_utilisateur']))
$id_utilisateur = isset($_SESSION['id_utilisateur']);
//---------------------------------//
// Affichage des erreurs PHP
//---------------------------------//
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

//---------------------------------//
//connexion à la base avec activation des erreurs PDO
//---------------------------------//
try {
// Activation des erreurs PDO
  $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
  $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
} catch (PDOException $e) {
  die('Erreur : ' . $e->getMessage());
}

//---------------------------------//
// FONCTIONS
//---------------------------------//
function getPost($varName, $defaultValue = "") {
  return isset($_POST[$varName]) ? $_POST[$varName] : $defaultValue;
}

function getFiles($fieldFileName) {
  return !empty($_FILES[$fieldFileName]) ? $_FILES[$fieldFileName] : NULL;
}

function moveFile($fieldFileName, $uploadDir = 'formation/') {

  $maxUploadFileSize = 1500000;

  $phpFileUploadErrors = array(
      0 => 'There is no error, the file uploaded with success',
      1 => 'The uploaded file exceeds the upload_max_filesize directive in php.ini',
      2 => 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form',
      3 => 'The uploaded file was only partially uploaded',
      4 => 'No file was uploaded',
      6 => 'Missing a temporary folder',
      7 => 'Failed to write file to disk.',
      8 => 'A PHP extension stopped the file upload.',
  );

  // récupération propre des variables avant de les utiliser
  $F = getFiles($fieldFileName);
  $fileTmpPath = $F['tmp_name'];
  $fileName = $F['name'];
  $fileSize = $F['size'];
  // $fileType = $F['type']; // Si tu veux vérifier le type mime du fichier..


  //on vérifie qu'il n'y a pas d'erreur dans le $_FILES
  $error = !empty($F['error']) ? $phpFileUploadErrors[$F['error']] : NULL;
  if ($error) {
    echo $error;
    return false;
  }

  if (!is_dir($uploadDir)) {
    // si le dossier de destination n'existe pas on le créé !
    mkdir($uploadDir, 0755, true);
  }

  // on vérifie que le répertoire de déstination est accessible en écriture
  if (!is_writable($uploadDir)) {
    echo "Permission denied on " . $uploadDir;
    return false;
  }

      // on verifie l'extension des fichiers
      $validExt =array('.jpeg','.jpg','.gif','.png','.pdf');
      $fileExt = "." . strtolower(substr(strrchr($fileName,'.'),1));
      if(!in_array($fileExt,$validExt)){
      echo " veuillez selectionner une image de type jpeg , jpg , gif , png , pdf";
      }

// on vérifie la taille du fichier envoyé
  if ($fileSize > $maxUploadFileSize) {
    echo "file Size Error : " . $fileSize;
    return false;
  }

  $dest_path = $uploadDir . $fileName;

//On vérifie que le fichier s'est chargé sur le serveur
  if (!is_uploaded_file($fileTmpPath)) {
    echo "upload file error ";
    return false;
  }

//On déplace le fichier dans son répertoire finale
  if (move_uploaded_file($fileTmpPath, $dest_path)) {
    return $fileName;
  } else {
    echo 'There was some error moving the file to upload directory. Please make sure the upload directory is writable by web server.';
    return false;
  }
}

//---------------------------------//
// Début du script :
//récupération des variables POST et FILES
$nf= getPost('nf'); //nom du concours//
$vf = getPost('vf');//ville et pays du concoursou bources//
$ncf = getPost('ncf');//nom du centre de formation//
$df = getPost('df');//duree formation//
$mf = getPost('mf');//modalite de la formation//
$jf = getPost('jf');//justificatif formation//
$nt= getPost('nt');//numero de telephone//
$am = getPost('am');//adresse mail de la formation//
//on upload le fichier
$irf = moveFile('irf', 'formation/');//image representati de la formationf//
$dmf = moveFile('dmf', 'formation/');//different module de la formation//
if(isset($_FILES['ve'])){
  //$ss=mkdir("videos/",0777);
  $uploaddir="formation/";
  $filetype=$_FILES['ve']['type'];
  $filename=$_FILES['ve']['name'];
  $realpath=$uploaddir.$filename;
  if(!empty($filetype))
  {
   move_uploaded_file($_FILES['ve']['tmp_name'],$realpath );
   $ve =$filename;//video explicite//
  }else{
      echo "nous n'avons pas pu enregistrer votre video";
  }
  }


//Si il s'est bien uploadé...
if ($irf) {


  if(isset($_SESSION['id_utilisateur'])){
    $id_utilisateur = $_SESSION['id_utilisateur'];
            $requete = "INSERT INTO formation ( id_utilisateur,	nom_formation,ville,nom_centre_for,dure_formation,modalites_form,justificatif_form,tel_form,email_form,modul_form,video_form,img_form) 
                    VALUES (?,?,?,?,?,?,?,?,?,?,?,?)";
            $params = array($id_utilisateur,$nf, $vf, $ncf, $df, $mf, $jf, $nt, $am,$dmf,$ve,$irf); 
            $resultat = $bdd->prepare($requete);
            $resultat->execute($params);

}else {echo "utilisateur n'existe pas";}

} else {
  echo "<br>Error !";
  exit;
}


et voici les erreurs que je reçoit




Remarque : Tentative d'accès au tableau offset sur la valeur de type null dans /var/www/private/afrijob/envoi_formation.php à la ligne 58

Remarque : Tentative d'accès au tableau offset sur la valeur de type null dans /var/www/private/afrijob/ envoi_formation.php à la ligne 59

Remarque : Tentative d'accès au tableau offset sur la valeur de type null dans /var/www/private/afrijob/envoi_formation.php à la ligne 60

Remarque : Tentative d'accès au tableau offset sur la valeur de type null dans /var/ www/private/afrijob/envoi_formation.php on line 61
erreur de téléchargement du fichier
Remarque : Tentative d'accès au tableau offset sur la valeur de type null in/var/www/private/afrijob/envoi_formation.php en ligne 58

Remarque : Tentative d'accès au tableau offset sur la valeur de type null dans /var/www/private/afrijob/envoi_formation.php en ligne 59

Remarque : Tentative d'accès au tableau offset sur valeur de type null dans /var/www/private/afrijob/envoi_formation.php sur la ligne 60

Indication : Tentative de réseau d'accès de décalage sur la valeur de zéro de type dans /var/www/private/afrijob/envoi_formation.php sur la ligne 61
téléchargement erreur de fichier Erreur !

Configuration: Linux / Chrome 92.0.4515.159
A voir également:

2 réponses

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
15 sept. 2021 à 15:25
Bonjour,

D'après les messages d'erreur, le soucis vient de la variable $F initialisée à la ligne 57 qui a pour valeur null.
Puisque le tableau $F est null, les lignes suivantes pour accéder aux éléments de ce tableau ($F['tmp_name']) retourne donc ces erreurs.

Cette variable est initialisée par la fonction getFiles() qui retourne null si la variable $_FILES[$fieldFileName] est vide (empty). Il semble donc que la variables $_FILES['irf'] (et/ou $_FILES['dmf']) soit vide.

Sans vraiment savoir d'où vient le fait que le formulaire ne fonctionne plus du jour au lendemain, est-ce que tu (ou ton hébergeur) aurais changé la version de PHP utilisé pour le site ?
Si c'est le cas, il est possible que tu avais déjà cette erreur avant ce changement de version mais PHP affiche un warning si on accède à un tableau null seulement depuis la version 7.4 : https://www.php.net/manual/fr/migration74.incompatible.php
0
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
15 sept. 2021 à 18:04
Bonjour,

Déjà, tu peux modifier le code de la fonction moveFile
A la ligne 57, ajoute
 $F = getFiles($fieldFileName);
 return false ; // sort si aucun fichier trouvé 


ensuite.. pourquoi ne pas avoir utilisé cette même fonction pour ton fichier ve ?

Et pour finir, ton formulaire transmet -il bien les fichiers irf et dmf ?
Pour t'en assurer, fais donc un var_dump($_FILES); pour le vérifier
0