Menu

Upload [Résolu]

Gardeboue 45 Messages postés mardi 9 mai 2017Date d'inscription 30 avril 2018 Dernière intervention - 29 janv. 2018 à 18:19 - Dernière réponse : Gardeboue 45 Messages postés mardi 9 mai 2017Date d'inscription 30 avril 2018 Dernière intervention
- 5 févr. 2018 à 18:16
Bonjour à tous,

Je poursuis la mise en place de mon formulaire d'échange de fichiers qui fonctionne bien grâce à la collaboration de yg_be et jordan45 qui m'ont déjà bien aidé.
Il me reste une dernière petite amélioration à apporter.
Concernant l'upload, lorsqu'un fichier de même nom existe dans le répertoire du serveur je sors du php en avertissant l'utilisateur que le fichier existe déjà et il click sur un lien pour retourner au formulaire. Je voudrais à ce moment là qu'il ait le choix de retourner au formulaire ou bien d'écraser le fichier existant.
Le problème c'est que si je relance le php tout le monde sait (même moi et c'est pas peu dire) que les variables sont partis au panier.

voilà le code partiel de l'endroit critique.
 //on regarde si le fichier existe déjà
  if(file_exists($filename))

 //Le fichier existe déjà
 {
 

echo "Le fichier ".$_FILES['fichier']['name']. " existe déjà dans le répertoire ".$dossier.".<br>";
echo "Vous devez auparavant effacer le fichier du serveur:".'<br>';
echo "Pour retourner au formulaire cliquez <a href=\"coffre-fort.php\">ici</a>".'<br><br>';
}
else
{

 //on stock le fichier dans le répertoire du serveur
 
 move_uploaded_file($_FILES['fichier']['tmp_name'], 'upload/'.basename($_FILES['fichier']['name']));

 echo "Le fichier ".$_FILES['fichier']['name']. " a été stocké sur le site".'<br>';
 echo "Il est dès à présent disponnible dans la liste des fichiers.".'<br>';
 echo "Pour retourner au formulaire, cliquez <a href=\"coffre-fort.php\">ici</a>";
 }


Le but serait soit de garder le principe des echo même si c'est pas très esthétique en complémentant les lignes 8/9/10 pour pouvoir soit sortir soit poursuivre le code pour effectuer la copie qui se fait en ligne 17 ou mieux encore d'avoir une boite de dialogue oui/nan je veux écraser....

Merci à tous


Afficher la suite 

Votre réponse

18 réponses

Gardeboue 45 Messages postés mardi 9 mai 2017Date d'inscription 30 avril 2018 Dernière intervention - 3 févr. 2018 à 15:37
0
Utile
bon étant seul au monde :-) je cherche du côté des $_session mais je n'arrive toujours pas à garder ma variable.
J'ai mis dans mon html:
<?php
session_start();

?>

J'ai modifié ma ligne input file:
<input type="file" name="fichier" /><br />


Par:
<input type="file" id="fichier" name="fichier" value="<?php if(isset($_SESSION['fichier'])) { echo htmlentities($_SESSION['fichier']);}?>"/><br />


Puis dons mon php j'ai donc mis en tête:

session_start();
$_SESSION['fichier']= $POST['fichier'];
$fichier     = (isset($_POST['fichier']));
$dossier = 'upload';

$fichier = $_FILES['fichier']['name'];
$filename = "$dossier/$fichier";


à la première execution du php la variable fichier est bien là mais à la deuxième execution la variable n'a pas été gardée.

Help me pliz
Gardeboue 45 Messages postés mardi 9 mai 2017Date d'inscription 30 avril 2018 Dernière intervention - 4 févr. 2018 à 23:21
Pour le stocker je veux bien, par contre dans le ecrase le truc c'est que je n'utilise plus $fichier et $chemin, j'avais fais de la sorte pour utiliser ma fonction move_upload_file à l'identique que dans le stocker à savoir:
move_uploaded_file($_FILES['fichier']['tmp_name'], 'upload/'.basename($_FILES['fichier']['name']));

Je comprends tes codes mais quel est l'inconvénient de ma version par rapport à la tienne.
si je comprends bien charger $_FILE avec $_SESSION c'est pas bien??
Et vis versa également
yg_be 5595 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 21 mai 2018 Dernière intervention > Gardeboue 45 Messages postés mardi 9 mai 2017Date d'inscription 30 avril 2018 Dernière intervention - 4 févr. 2018 à 23:30
mieux, en effet, de ne pas modifier $_FILE, de l'utiliser uniquement pour récupérer ce qui vient du navigateur, et donc de faire (dans les deux php):
move_uploaded_file($chemin, 'upload/'.basename($fichier));
Gardeboue 45 Messages postés mardi 9 mai 2017Date d'inscription 30 avril 2018 Dernière intervention - 4 févr. 2018 à 23:38
Ok je vais suivre tes conseils et si tu peux m'en dire plus sur les inconvénients je suis preneur pour ma culture personnel.
yg_be 5595 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 21 mai 2018 Dernière intervention > Gardeboue 45 Messages postés mardi 9 mai 2017Date d'inscription 30 avril 2018 Dernière intervention - 5 févr. 2018 à 09:28
le but, c'est de ne pas mélanger ce qui vient de l'extérieur (files, post, ...) et est donc potentiellement inconnu ou dangereux, et les variables dont le contenu est bien géré.
Gardeboue 45 Messages postés mardi 9 mai 2017Date d'inscription 30 avril 2018 Dernière intervention - 5 févr. 2018 à 18:16
Merci pour tout ces tuyaux et précisions, je vais en tenir compte et modifier mes codes.
Encore merci et peut-être à bientôt pour de nouvelles aventures :-)
Commenter la réponse de Gardeboue