Page 1 sur 1
Garder en session la valeur d'un champ FILES
Posté : 17 déc. 2006, 12:49
par charabia
Bonjour !
J'ai fait un formulaire avec un upload. Il y a des tests dessus et je fais un retour sur le formulaire s'il y a une erreur quelconque.
Mais voila, mon souci c'est que je n'arrive pas à garder en mémoire grâce à une session la valeur d'un champ de type FILES.
Si par exemple dans ce champ il y a "C:\Documents and Settings\Admin\Bureau\1.txt", j'aimerais retrouver exactement ce lien lors de mon retour.
Est-ce possible ?
Merci !
Posté : 17 déc. 2006, 12:57
par mere-teresa
As-tu des session_start() en haut de chaque page ?
Comment fais tu ta redirection ?
Posté : 17 déc. 2006, 13:02
par charabia
Oui oui session_start() est bien présent. En fait ce n'est pas un problème de session mais plutôt de récupération exact du lien.
Ma redirection c'est juste le message d'erreur avec un lien permettant de revenir sur le formulaire après initialisation des sessions.
J'arrive par exemple à récupérer "1.txt" mais pas entièrement "C:\Documents and Settings\Admin\Bureau\1.txt". Or il me faut ce lien exact pour que la personne n'ait pas à rechercher le fichier en question.
Posté : 18 déc. 2006, 11:43
par charabia
J'utilise les :
$_FILES['uploadedfile']['name']
$_FILES['uploadedfile']['tmp_name']
Mais ce n'est pas le vrai chemin que l'on voit une fois le parcours sur la machine effectué. En cherchant sur google pas moyen de trouver

Posté : 18 déc. 2006, 11:48
par zeus
Je trouve normal que quand un utilisateur pose un fichier sur une page web qu'il soit impossible de connaitre le chemin
Sinon il est possible de connaitre l'architecture des données
Par contre, ce que je peut te proposer, c'est un système qui lui dit "J'ai bien uploadé ton fichier, est-ce que tu veux le conserver ou le remplacer"

Posté : 18 déc. 2006, 11:53
par Ryle
Je ne suis pas sur que tu puisses le récupérer ainsi... En revanche, tu peux, je crois, lors de la validation du formulaire, copier la valeur du champ dans un champ hidden et ainsi la récupérer...
Ceci dit, je ne suis pas certain que tu puisses le remettre comme valeur par défaut... je vois là une grosse faille de sécurité puisqu'il suffirait de passer ce champ a hidden et de le pré-renseigner avec certains chemins pour récuperer des fichiers à l'insu de l'utilisateur
Edit : faudrait jeter un coup d'oeil aux uploaders de multiples fichiers en ajax.. chais pas comment ils fonctionnent pour le coup...
Posté : 18 déc. 2006, 11:54
par charabia
En fait mon souci se passe avant l'upload en question. C'est là le souci
Il s'agit en fait de gestion d'erreur. Si par exemple dans mon formulaire la personne a mis un mauvais login, une fois validé j'ai un message d'erreur et un retour au formulaire. Et c'est là que je voudrais que le champs FILES gardes en mémoire le chemin qui avait été choisi pour que la personne n'ai pas à aller le rechercher.
Donc dans mon étape aucun envoi n'est fait.
Posté : 18 déc. 2006, 11:55
par charabia
Je ne suis pas sur que tu puisses le récupérer ainsi... En revanche, tu peux lors de la validation du formulaire, copier la valeur du champ dans un champ hidden et ainsi la récupérer...
Ceci dit, je ne suis pas certain que tu puisses le remettre comme valeur par défaut... je vois là une grosse faille de sécurité puisqu'il suffirait de passer ce champ a hidden et de le pré-renseigner avec certains chemins pour récuperer des fichiers à l'insu de l'utilisateur

Oui c'est vrai...donc en gros il vaut mieux qu'au retour du formulaire je laisse le soin au membre de rechercher son fichier ? Il n'y a pas d'autres solutions à votre avis ?
Posté : 18 déc. 2006, 12:19
par zeus
Justement, ce que je te propose, c'est d'uploader le fichier, de détecter les erreurs et, si erreur, de réafficher le formulaire avec les messages d'erreur et de lui dire "J'ai uplodé ton fichier, est-ce que tu veux le conserver ou le supprimer ?"
Tu peut uploder ce fichier dans un répertoire bien de chez toi, conserver son chemin en session, s'il le change, tu supprimes l'ancien fichier, sinon, tu conserves l'ancien fichier

Posté : 18 déc. 2006, 12:21
par charabia
Justement, ce que je te propose, c'est d'uploader le fichier, de détecter les erreurs et, si erreur, de réafficher le formulaire avec les messages d'erreur et de lui dire "J'ai uplodé ton fichier, est-ce que tu veux le conserver ou le supprimer ?"
Tu peut uploder ce fichier dans un répertoire bien de chez toi, conserver son chemin en session, s'il le change, tu supprimes l'ancien fichier, sinon, tu conserves l'ancien fichier

Ah oui ! compris

C'est en effet une solution. Je vais voir ça merci !
Si quelqu'un a une autre idée je suis preneur

Posté : 18 déc. 2006, 12:33
par Ryle
Ca reste je pense la meilleure solution (et puis ca éviter d'occuper le serveur avec un nouvel upload d'un fichier qui aura déjà été envoyé)
Sinon je l'avais ajouté en edit, mais je le relance, peut être que de disséquer les scripts d'upload de fichier avec ajax où l'on peut préparer 1 à n fichiers avant de les envoyer te donnerait quelques idées sur la façon de conserver l'info vu qu'ils arrivent bien à la récupérer et à la stocker...

Posté : 18 déc. 2006, 14:22
par iclo
Je trouve normal que quand un utilisateur pose un fichier sur une page web qu'il soit impossible de connaitre le chemin
Sinon il est possible de connaitre l'architecture des données
Il y a un moyen, en enlevant l'enctype du formulaire, on récupera le chemin du fichier sur la machine client. (Découvert ça en debuggant un upload le jour où honte à moi j'avais oublier l'enctyp

)
Sinon, en effet, impossible de donner une valeur par défaut à champ Files, pour raisons de sécurité.(sinon avec une validation js, on vole tous les fichiers qu'on veut