Move_Upload_files qui ne fonctionne pas
fareohh
Messages postés
63
Date d'inscription
Statut
Membre
Dernière intervention
-
fareohh Messages postés 63 Date d'inscription Statut Membre Dernière intervention -
fareohh Messages postés 63 Date d'inscription Statut Membre Dernière intervention -
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é