Move_Upload_files qui ne fonctionne pas
                    
        
     
             
                    fareohh
    
        
    
                    Messages postés
            
                
     
             
            65
        
            
                                    Statut
            Membre
                    
                -
                                     
fareohh Messages postés 65 Statut Membre -
        fareohh Messages postés 65 Statut Membre -
        Bonjour, je suis en galère depuis un petit moment. 
Lorsque je remplis mon formulaire, et que j'upload mes fichiers, rien ne vas.
Dans mon formulaire j'ai:
- Fichier (obligatoire)
- Image (optionnel)
- Difficultés (optionnel)
- Email (obligatoire)
- Pseudo (obligatoire)
Mais il se trouve que quand je submit, rien ne vas.
L'upload s'effectue, mais ça ne vas pas jusqu'au bout (pas jusqu'à la BDD)
j'ai déjà essayé de retourner toutes les variable avec le message d'erreur.
Il me trouve le nom temporaire de l'image mais pas celui du fichier ! Rien à faire...
Du coup (je pense) que c'est à cause de ça.. merci d'avance.
J'ai pris le temps de commenter tout le code PHP pour que vous sachiez comment je procède dans ce code.
Merci d'avance !
            
            
                
            
                
    
    
    
        Lorsque je remplis mon formulaire, et que j'upload mes fichiers, rien ne vas.
Dans mon formulaire j'ai:
- Fichier (obligatoire)
- Image (optionnel)
- Difficultés (optionnel)
- Email (obligatoire)
- Pseudo (obligatoire)
Mais il se trouve que quand je submit, rien ne vas.
L'upload s'effectue, mais ça ne vas pas jusqu'au bout (pas jusqu'à la BDD)
j'ai déjà essayé de retourner toutes les variable avec le message d'erreur.
Il me trouve le nom temporaire de l'image mais pas celui du fichier ! Rien à faire...
Du coup (je pense) que c'est à cause de ça.. merci d'avance.
J'ai pris le temps de commenter tout le code PHP pour que vous sachiez comment je procède dans ce code.
Merci d'avance !
<!-- Maxime Zorloni Copyright 2018 -->
<!-- OSUDL.RE -->
<!doctype html>
<html>
 <head>
  <title>OsuDL V3</title>
  <link href="https://fonts.googleapis.com/css?family=Oswald" rel="stylesheet">
  <meta charset="UTF-8" />
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" type ="text/css" href="https://osudl.re/style.css">
  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
  
 </head>
 <body>
  <div id="bodyhtml" >
  <?php include('includes/menu.php'); ?>
  <div class="main" >
   <div class="form-style-2">
    <div class="form-style-2-heading">Upload</div>
    <form method="post" enctype="multipart/form-data" >
     <input type="hidden" name="MAX_FILE_SIZE" value="12345" />
     <label for="fichier"><span>Fichier (osz, osk, osr) <span class="required">*</span></span><input class="input-field" type="file" accept=".osr, .osk, .osz" name="fichier" /></label>
     <label for="diff"><span>Diff </span>
     <select name="diff" class="select-field"></label>
      <option value="00">----</option>
      <option value="01">Easy</option>
      <option value="02">Normal</option>
      <option value="03">Hard</option>
      <option value="04">Insane</option>
      <option value="05">Maitre</option>
      <option value="06">Infinite</option>
     </select></label>
     <label for="img"><span>Image d'illustration </span><input class="input-field" type="file" accept=".jpg, .png, .jpeg, .png" name="img" name="img" /></label>
     <label for="pseudo"><span>Pseudo <span class="required">*</span></span><input type="text" class="input-field" name="pseudo" value="<?php error_reporting(0); $cookiespsd = $_COOKIE['pseudo']; echo $cookiespsd;    ?>" /></label>
     <label for="email"><span>E-mail* <span class="required">*</span></span><input type="text" class="input-field" name="email"  value="<?php error_reporting(0); $cookiesemail = $_COOKIE['email']; echo $cookiesemail; ?>" /></label>
     <input type="text" name="confirm" value="ok" hidden ><br />
     <input type="submit" value="Envoyer" id="one" name ="subimt"/>
    </form>
    <p>*Votre adresse e-mail vous est demandé afin de vérifier votre identité. Ne vous trompez pas car je ne pourrais 
    pas vérifier si c'est réelement votre fichier. Par la suite, une vérification InGame se fera et simplifiera les choses.</p>
    <br /> 
   </div>
<?php 
 date_default_timezone_set('UTC+01');
 
 if (isset($_POST['confirm'])) { //si jamais un formulaire à été envoyé
   
  if ((isset($_FILES['fichier'])) && (isset($_POST['pseudo'])) && (isset($_POST['email'])) ) { //si le fichier/pseudo et email sont présent
   if (($_FILES['fichier'] < (20480 * 1024))) {
    echo 'Votre fichier est trop volumineux';
   }
   else {
    function random($car) { //on créer une clé aléatore pour le nom de l'image et l'id du fichier
     $string = "";
     $chaine = "1234567890ABCDEFGHIJKLMNOPRSTUVWXYZ";
     srand((double)microtime()*1000000);
     for($i=0; $i<$car; $i++) {
     $string .= $chaine[rand()%strlen($chaine)];
    }
    return $string;
    }
    $chaine = random(5);
    
    $pseudo = $_POST['pseudo']; //on récupère le pseudo
    $email = $_POST['email']; //on récupère l'email
    $diff = $_POST['diff']; //on récupère la diff
    $ip = $_SERVER['REMOTE_ADDR']; //on récupère l'ip
    $date = date("j.n.20y à H:i"); //on récupère la date
    
    $image_name = $_FILES['img']['name']; //on défini le nom de l'image
    $image_size = $_FILES['img']['size']; //on récupère la taille de l'image 
    $image_tmp_name = $_FILES['img']['tmp_name']; //on récupère le nom temporaire de l'image
    
    $fichier_name = $_FILES['fichier']['name']; //on défini le nom du fichier
    $fichier_size = $_FILES['fichier']['size']; //on récupère la taille du fichier
    $fichier_tmp_name = $_FILES['fichier']['tmp_name']; //on récupère le nom temporaire du fichier
    
    $image_extension = strrchr($image_name, "."); //on récupère l'extension de l'image
    $fichier_extension = strrchr($fichier_name, "."); //on récupère l'extension du fichier
    
    
    
    $image_name_change = $chaine; //on défini le nouveau nom de l'image
    
    
    if ($fichier_extension == ".osz"){ //si l'extension correspond à .osz, on défini $type en  Beatmap
      $type =  "Beatmap";
    }
     elseif ($fichier_extension == ".osk"){ //si l'extension correspond à .osk, on défini $type en  Skin
      $type = "Skin";
     }
     elseif ($fichier_extension == ".osr"){ //si l'extension correspond à .osr, on défini $type en Replay
      $type = "Replay";
     }
     else{
      $type = ['Unknown']; //sinon on mets unknown
    }
    
    
    if ($fichier_extension == ".osz"){ //si l'extension correspond à .osz, on défini le dossiers de destination dans Beatmaps/
      $fichier_dest =  'Beatmaps/'.$fichier_name;
    }
     elseif ($fichier_extension == ".osk"){ //si l'extension correspond à .osk, on défini le dossiers de destination dans Skins/
      $fichier_dest =  'Skins/'.$fichier_name;
     }
     elseif ($fichier_extension == ".osr"){ //si l'extension correspond à .osr, on défini le dossiers de destination dans Replay/
      $fichier_dest =  'Replay/'.$fichier_name;
     }
     else{
      $fichier_dest = 'Inconnue/'.$fichier_name; //si l'extension ne correspond à rien alors on mets dans Inconnue (ça devrais pas arriver vu que dans le formulaire on prend que les osz, osr et osk..)
     }
    
    if (empty($image_name)){ //si l n'y a pas d'image sélectionné alors on défini celle par défaut 
     $image = 'defaut-font-4v34ed8v.png'; 
     $image_tmp_name = 'defaut-font-4v34ed8v.png';
     $image_dest = 'images/defaut-font-4v34ed8v.png';
    }
     else { //sinon on défin $image sur le réel nom de l'image..
     $image = $image_name; 
    }
    
    include('functions/GetSizeName.php'); //permets d'avoir le poid du fichier sous cette forme "[poid]Mo"
    
    
    if((move_uploaded_file($_FILES['image']['tmp_name'], $fichier_dest))){ //On upload le fichier 
     setcookie('pseudo', $_POST['pseudo'], time() + 365*24*3600, null, null, false, true);  // on défini les cookies pour faciliter l'envoie d'autres fichiers dans le future
     setcookie('email', $_POST['email'], time() + 365*24*3600, null, null, false, true); 
     move_uploaded_file($image_tmp_name, $image_dest . $image_name_change); //On upload l'image
     
     $bdd = mysqli_connect('web2.pulseheberg.net', 'wkmfc8_osudl', 'genre je vais vous donner la clé ^^ ;) '); //on se connecte à la BDD
      
     if (mysqli_connect_errno()){
      echo "Failed to connect to MySQL: " . mysqli_connect_error();
     }
     
     $req_pre = mysqli_prepare($bdd, 'INSERT INTO fichiers (id, name, type, img, pseudo, ip, date, poid, diff, email) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)'); //on pré défini les entrées
      
     mysqli_stmt_bind_param($req_pre, 'ssssssssss', $chaine, $fichier_name, $type, $image_name_change, $pseudo, $ip, $date, $result, $diff, $email); //on pré défini les valeurs à insérer
     mysqli_stmt_execute($req_pre); // on execute
     echo printf("Erreur : %s.\n", mysqli_stmt_error($req_pre));
    }
    else { // si l'upload ne c'est pas passé correctement, alors on affiche erreur 
     echo 'erreur'; 
    }
   }
  } 
  else { // si il manque l'adresse email/pseudo ou le fichier alors on mets cette erreur
   echo 'Veuillez vérifier si les éléments correspondents aux conditions' ; 
  }
 }
?>
<p><span style="color:red;">Ce site web utilise des cookies</span></p> </div> </div> </body> </html>
2 réponses
                        
                    Bonjour,
Je n'ai pas regardé ton code en détail....
mais
Ne serait-ce pas plutôt sur
Surtout que tu en refais un second en dessous
pour l'image justement...
 
                
                
    
                Je n'ai pas regardé ton code en détail....
mais
if((move_uploaded_file($_FILES['image']['tmp_name'], $fichier_dest))){ //On upload le fichier 
Ne serait-ce pas plutôt sur
$_FILES['fichier']que tu veux le faire ??
Surtout que tu en refais un second en dessous
move_uploaded_file($image_tmp_name,
pour l'image justement...
                        
                    Bon...
Commence par placer ton PHP AVANT ton html.
Et remplace le par ça :
Je t'invite à lire et à appliquer ceci :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
 
                
                
    
                Commence par placer ton PHP AVANT ton html.
Et remplace le par ça :
<?php 
date_default_timezone_set('UTC+01');
//--------------------------------------------------//
//Affichage des erreurs PHP
//--------------------------------------------------//
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
//--------------------------------------------------//
// Fonctions
//--------------------------------------------------//
function getPostVar($varName,$default = NULL){
  return !empty($_POST[$varName]) ? $_POST[$varName] : $default;
}
function getFilesVar($varName){
  return !empty($_FILES[$varName]) ? $_FILES[$varName] : NULL;
}
//on créer une clé aléatore pour le nom de l'image et l'id du fichier
function random($car) { 
  $string = "";
  $chaine = "1234567890ABCDEFGHIJKLMNOPRSTUVWXYZ";
  srand((double)microtime()*1000000);
  for($i=0; $i<$car; $i++) {
    $string .= $chaine[rand()%strlen($chaine)];
  }
  return $string;
}
/**
* Insertion dans la bdd
*/
function InsertDb($chaine, $fichier_name, $type, $image_name_change, $pseudo, $ip, $date, $result, $diff, $email){
  $bdd = mysqli_connect('web2.pulseheberg.net', 'wkmfc8_osudl', 'genre je vais vous donner la clé ^^ ;) '); //on se connecte à la BDD 
   if (mysqli_connect_errno()){
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
    exit();
   }
  $req_pre = mysqli_prepare($bdd, 'INSERT INTO fichiers (id, name, type, img, pseudo, ip, date, poid, diff, email) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)'); //on pré défini les entrées    
  mysqli_stmt_bind_param($req_pre, 'ssssssssss', $chaine, $fichier_name, $type, $image_name_change, $pseudo, $ip, $date, $result, $diff, $email); //on pré défini les valeurs à insérer
  if (!mysqli_stmt_execute($req_pre)){
   echo printf("Erreur : %s.\n", mysqli_stmt_error($req_pre));
   exit();
  }else{
    return true;
  }
}
//--------------------------------------------------//
// Récupération PROPRE des variables AVANT de les utiliser 
//--------------------------------------------------//
//files
$fichier = getFilesVar('fichier');
$image = getFilesVar('image');
//post
$pseudo = getPostVar('pseudo'); //on récupère le pseudo
$email = getPostVar('email'); //on récupère l'email
$diff = getPostVar('diff'); //on récupère la diff
//autres variables / constantes
$ip = $_SERVER['REMOTE_ADDR']; //on récupère l'ip
$date = date("j.n.20y à H:i"); //on récupère la date
//--------------------------------------------------//
// Début du traitement
//--------------------------------------------------//
//si jamais un formulaire à été envoyé
if (isset($_POST['confirm'])) { 
  //si le fichier/pseudo et email sont présent 
  if ($fichier && $pseudo && $email ) { 
   
    $image_name_change = random(5);
    $image_name = $image['name']; //on défini le nom de l'image
    $image_size = $image['size']; //on récupère la taille de l'image 
    $image_tmp_name = $image['tmp_name']; //on récupère le nom temporaire de l'image
    $image_extension = pathinfo($image_name, PATHINFO_EXTENSION);
    
    if (empty($image_name)){ //si l n'y a pas d'image sélectionné alors on défini celle par défaut 
      $image = 'defaut-font-4v34ed8v.png'; 
      $image_tmp_name = 'defaut-font-4v34ed8v.png';
      $image_dest = 'images/defaut-font-4v34ed8v.png';
    } else { 
      //sinon on défin $image sur le réel nom de l'image..
      $image = $image_name; 
    }
    
    require_once('functions/GetSizeName.php'); //permets d'avoir le poid du fichier sous cette forme "[poid]Mo"
    
    $errors = array();
    if(! $fichier){
      $errors[] = "Aucun fichier passé à la fonction de vérification !";
    }else{
      $fichier_name = $fichier['name'];
      $fichier_extension = pathinfo($filename, PATHINFO_EXTENSION);
      $fichier_size = $fichier['size'];
      $fichier_tmp_name = $fichier['tmp_name'];
      
      if($fichier_size > $maxSize){
        $errors[] = "Fichier trop volumineux";
      }else{
        switch($fichier_extension){
          case "osz":
            $rep_dest =  'Beatmaps/';
            $type =  "Beatmap";
            break;
          case "osk":
            $rep_dest =  'Skins/';
             $type = "Skin";
            break;
          case "osr":
            $rep_dest =  'Replay/';
            $type = "Replay";
            break;
          default:
            $rep_dest = 'Inconnue/';
            $type = ['Unknown']; //sinon on mets unknown
            break;
        }
        
        //on verifie le répertoire de destination existe
        $repCheck = true;
        if( !is_dir($rep_dest)){
          $errors[] = " Répertoire ".$rep_dest." inconnu !";
        }
        if(!is_writable($rep_dest)){
          $errors[] = "Ecriture dans le répertoire ".$rep_dest." non autorisé !";
        }
        
        $fichier_dest = $rep_dest . $fichier_name;
        if(move_uploaded_file($fichier_tmp_name, $fichier_dest)){
          setcookie('pseudo', $pseudo, time() + 365*24*3600, null, null, false, true);  // on défini les cookies pour faciliter l'envoie d'autres fichiers dans le future
          setcookie('email', $email, time() + 365*24*3600, null, null, false, true); 
          move_uploaded_file($image_tmp_name, $image_dest . $image_name_change); //On upload l'image
          
          //insertion en bdd
          InsertDb($chaine, $fichier_name, $type, $image_name_change, $pseudo, $ip, $date, $result, $diff, $email);
        
        }else{
           $errors[] = 'Upload error : ' . $fichier_tmp_name .' vers '. $fichier_dest;
        }
     }   
      
    }
  }else{
    $errors[] = "Erreur : Email, Pseudo ou Fichier vide ";
  }
  
  //Affichage du résultat :
  if(!empty($errors)){
    foreach($errors as $R){
      echo "<br>".$R;
    }
  }else{
    echo " OK ";
  }
  
}
?>
Je t'invite à lire et à appliquer ceci :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Notice: Undefined variable: size in /var/www/wzh1cj/www/functions/GetSizeName.php on line 33
Je ne sais pas ce que contient ce fichier...
Notice: Undefined variable: filename in /var/www/wzh1cj/www/up/index.php on line 102
filename à remplacer par fichier_name
Notice: Undefined variable: maxSize in /var/www/wzh1cj/www/up/index.php on line 106
J'ai oublié de déclarer la variable $maxSize
Il faut que tu la déclare et que tu y spécifie la taille max autorisée pour tes fichiers
    Warning: move_uploaded_file(Beatmaps/test.osz): failed to open stream: No such file or directory in /var/www/wzh1cj/www/up/index.php on line 139
Warning: move_uploaded_file(): Unable to move 'tmp/phpPNiaG1' to 'Beatmaps/test.osz' in /var/www/wzh1cj/www/up/index.php on line 139
Répertoire Beatmaps/ inconnu !
Ecriture dans le répertoire Beatmaps/ non autorisé !
Upload error : tmp/phpPNiaG1 vers Beatmaps/test.osz
[https://img-19.ccm2.net/Lq6Ew1POlPNA9pyFduDPuDPaqEw=/5c6105fdf19446ae817abd6d38b72ee8/ccm-ugc/51564658.PNG
Là je ne comprend pas... Tout est ok pour les répertoires pourtant...
    Warning: move_uploaded_file(): Unable to move 'tmp/phpPNiaG1' to 'Beatmaps/test.osz' in /var/www/wzh1cj/www/up/index.php on line 139
Répertoire Beatmaps/ inconnu !
Ecriture dans le répertoire Beatmaps/ non autorisé !
Upload error : tmp/phpPNiaG1 vers Beatmaps/test.osz
[https://img-19.ccm2.net/Lq6Ew1POlPNA9pyFduDPuDPaqEw=/5c6105fdf19446ae817abd6d38b72ee8/ccm-ugc/51564658.PNG
Là je ne comprend pas... Tout est ok pour les répertoires pourtant...
    Après réflexion je crois que j'ai juste confonfu deux choses.
De base la page d'upoad se trouvais dans www/event/
Mais maintenant elle se trouve dans www/up/
Et les dossiers se trouvent dans www/ ainsi que le dossier temp
Donc je suppose que je doit redésendre d'un étage comme ceci:
'../Beatmap'
'../Skins'
'../Replay'
'../tmp'
C'est okay comme ça ?
    De base la page d'upoad se trouvais dans www/event/
Mais maintenant elle se trouve dans www/up/
Et les dossiers se trouvent dans www/ ainsi que le dossier temp
Donc je suppose que je doit redésendre d'un étage comme ceci:
'../Beatmap'
'../Skins'
'../Replay'
'../tmp'
C'est okay comme ça ?
 
    
    
    
    
Vérifie les droits sur les dossiers de destination.
Montre nous le code modifié