begin process at 2012 05 30 18:43:19
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Divers

 > 

help, probleme pour ouvrir un fichier du serveur ou le telecharger avec php


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

help, probleme pour ouvrir un fichier du serveur ou le telecharger avec php

vendredi 28 novembre 2008 ŕ 22:08:04 | help, probleme pour ouvrir un fichier du serveur ou le telecharger avec php

sebing

Bonsoir,

J'ai déjŕ eu un problčme pour la suppression du fichier, vous m'ętes venus en aide  et je vous en remercie, maintenant cela fait quelques jours que je me prends la tęte pour pouvoir réussir ŕ ouvrir ou télécharger les fichiers contenus dans un dossier sur le serveur.

Voici le code que je tente d'utiliser:

Code de la page sur laquelle est affichés les fichiers sauvegardés sur le serveur:

<p align="center">Liste des fichiers
      <table border="1" bordercolor="#FFFFFF">
        <tr>
<th>nom</th>
<th>Supprimer</th>
<th>Ouvrir</th>
</tr>      
        <?php
       
if ($handle = opendir('upload_fichier')) {
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") {?>
<tr><td><?php  echo "$file\n";?></td>
<td><?php echo '<a href="delete.php?file=' . urlencode($file) . '">'; ?> Supprimer</a></td>
<td><?php echo '<a href="ouvrir.php?file=' . urlencode($file) . '">'; ?>Ouvrir</a></td>
</tr>
<?php
        }
    }
    closedir($handle);
}

?>

Code de la page ouvrir.php:

<?php
$file = "dossier_fichier/".$_GET["file"];

header("Content-Type: application/force-download");
header("Content-Length: ".filesize($file));
header("Content-Disposition: attachment; filename=".$file);
readfile($file);

?>

Merci de me venir en aide

Bonne soirée

Seb
vendredi 28 novembre 2008 ŕ 22:10:54 | Re : help, probleme pour ouvrir un fichier du serveur ou le telecharger avec php

sebing

J'ai oublié, les fichiers sont de tous formats: xls, pdf, doc....

Encore merci

Seb
samedi 29 novembre 2008 ŕ 14:31:53 | Re : help, probleme pour ouvrir un fichier du serveur ou le telecharger avec php

malalam

Administrateur CodeS-SourceS
Hello,

pourquoi dans un cas tu lis les fichiers dans 'upload_fichier', et dans l'autre, dans 'dossier_fichier'? Ton fichier est soit dans l'un, soit dans l'autre, ŕ priori.
samedi 29 novembre 2008 ŕ 17:36:33 | Re : help, probleme pour ouvrir un fichier du serveur ou le telecharger avec php

sebing

Bonsoir,

Le dossier est 'upload_fichie'r, j'avais corrigé cette erreur sur le serveur, mais pas dans mon message.
Pourquoi ça ne marche pas?

Merci de votre aide

Seb
dimanche 30 novembre 2008 ŕ 10:44:24 | Re : help, probleme pour ouvrir un fichier du serveur ou le telecharger avec php

yopai_v

Petite remarque avant de commencer :
pense ŕ filtrer la variable $file, sinon n'importe qui peut accéder ŕ n'importe quel fichier de ton serveur; un exemple :
ouvrir.php?file=../ouvrir.php me renvoie la source de ton fichier.
Ce n'est pas trčs grave ? Ok, un autre exemple alors :
ouvrir.php?file=../../../etc/passwd ... quelques essais pour ajuster le nombre de ../, et un joli fichier normalement pas accessible.
(C'est encore plus drôle avec supprimer !)

Venons-en au problčme lui-męme :
"Ca ne marche pas" = ?

Il s'agit d'ailleurs d'une remarque générique, qui pourrait ętre placée dans les "guidelines" d'écriture d'un message (si quelqu'un qui se sent concerné, du genre un admin, lit ça...) :
"Ca ne marche pas" ne veut rien dire.
S'agit-il :
- d'un message d'erreur ? (lequel ? généré ŕ quel moment ?)
- d'un comportement qui n'est pas celui attendu ? (quel est le comportement attendu ? celui obtenu ?

Tout le monde peut y gagner si les messages sont explicites en indiquant dans l'ordre :
- le code (ça, il y est, y a pas de problčme)
- l'opération effectuée ("quand je charge ma page toto.php")
- le comportement attendu ("je devrais voir ceci")
- le comportement obtenu (j'ai tel message d'erreur, il se passe cela..)

dimanche 30 novembre 2008 ŕ 11:15:41 | Re : help, probleme pour ouvrir un fichier du serveur ou le telecharger avec php

sebing

Bonjour,

Merci de répondre ŕ mon message, je m'excuse que celui ci soit trop flou pour que vous puissiez me répondre.

[quote=yopai_v]Petite remarque avant de commencer :
pense ŕ filtrer la variable $file, sinon n'importe qui peut accéder ŕ n'importe quel fichier de ton serveur; un exemple :
ouvrir.php?file=../ouvrir.php me renvoie la source de ton fichier.
Ce n'est pas trčs grave ? Ok, un autre exemple alors :
ouvrir.php?file=../../../etc/passwd ... quelques essais pour ajuster le nombre de ../, et un joli fichier normalement pas accessible.
(C'est encore plus drôle avec supprimer !) [/quote]
Dois je quand męme filtrer si les dossiers sont protégés par htaccess?

[quote=yopai_v] Tout le monde peut y gagner si les messages sont explicites en indiquant dans l'ordre :
- le code (ça, il y est, y a pas de problčme)
- l'opération effectuée ("quand je charge ma page toto.php")
- le comportement attendu ("je devrais voir ceci")
- le comportement obtenu (j'ai tel message d'erreur, il se passe cela..) [/quote]

Le résultat attendu est lorsque je suis sur la page visualiser, je vois les fichiers disponibles et quand je clique sur ouvrir ŕ coté du fichier voulu, celui ci s'ouvre ou se télécharge sur l'ordinateur. donc pour cela lorsque l'on clique sur ouvrir, l'action est <td><?php echo '<a href="ouvrir.php?file=' . urlencode($file) . '">'; ?>Ouvrir</a></td>
la page ouvrir.php s'affiche et il y a des messages d'erreurs: Warning: Cannot modify header information - headers already sent by (output started at /mnt/167/sda/4/f/letheatreenherbe/zone_privee/ouvrir.php:14) in /mnt/167/sda/4/f/letheatreenherbe/zone_privee/ouvrir.php on line 46

Warning: Cannot modify header information - headers already sent by (output started at /mnt/167/sda/4/f/letheatreenherbe/zone_privee/ouvrir.php:14) in /mnt/167/sda/4/f/letheatreenherbe/zone_privee/ouvrir.php on line 47

Warning: Cannot modify header information - headers already sent by (output started at /mnt/167/sda/4/f/letheatreenherbe/zone_privee/ouvrir.php:14) in /mnt/167/sda/4/f/letheatreenherbe/zone_privee/ouvrir.php on line 48
ĐĎࡱá????????????????>??ţ˙ ???????????????m?????????w?????ţ˙˙˙????j??k??l??z??ř??v??÷??H??˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙ěĄÁ?q` ??řż??????0???????řI???bjbjqPqP?????????????????? ?'Ă?:?:?S??????????????????????ń???????˙˙?????????˙˙?????????˙˙
Aprčs tous ces signes nous pouvons voir quelques lignes de mon document.
Les lignes incriminées par les "Warning" sont:
header("Content-Type: application/force-download");
header("Content-Length: ".filesize($file));
header("Content-Disposition: attachment; filename=".$file);

Que dois je faire pour que le document s'ouvre dans une autre page ou que la personne puisse télécharger le fichier.

Merci
Bonne journée

Seb
dimanche 30 novembre 2008 ŕ 11:29:35 | Re : help, probleme pour ouvrir un fichier du serveur ou le telecharger avec php

malalam

Administrateur CodeS-SourceS
Hello,

le message te dit que tu as envoyé un affichage ligne 14 ans ouvrir.php.
Tu ne nous as pas montré la totalité du script ouvrir.php.
Tu devrais lire quelques tutos sur les headers, il y en a un sur ce site : une fois qu'un output a été fait, on ne peut plus envoyé d'en-tęte au navigateur.
lundi 1 décembre 2008 ŕ 00:04:21 | Re : help, probleme pour ouvrir un fichier du serveur ou le telecharger avec php

yopai_v

> Dois je quand męme filtrer si les dossiers sont protégés par htaccess?
Non pour 2 raisons :
* la config htaccess ne protčge l'accčs qu'au répertoire web
* et puis surtout, c'est ton script php qui va récupérer le fichier, et lui n'est pas limité par le htaccess
De toute maničre, ton raisonnement est incomplet en terme de sécurité :
il est possible que le htaccess, ou la configuration de php, fournisse la "glissičre de sécurité" qui va empęcher le systčme de délivrer ses secrets; mais une chose importante en conception logicielle est de ne pas se reposer sur la présence d'une glissičre de sécurité.
Quelle que soit la configuration du serveur, ton appli (composée uniquement du code Php) ne doit pas permettre d'accéder ŕ des fichiers qui n'ont rien ŕ voir... La glissičre de sécurité est lŕ par exemple pour éviter l'exploitation d'une faille dans php.

De maničre générale, il faut valider toute entrée de ton script. Ici, je te dirais soit de chasser les / et \ de ton nom de fichier, soit de faire un realpath() sur le fichier obtenu, et de vérifier que le début est le  realpath() de ton dossier.
lundi 1 décembre 2008 ŕ 00:25:39 | Re : help, probleme pour ouvrir un fichier du serveur ou le telecharger avec php

yopai_v

Pour ton problčme proprement dit, je rejoins la réponse de malalam...
Et pour enfoncer le clou : (dans la suite des recommandations valables pour tout le monde)
Quand un message d'erreur indique un fichier et une ligne, c'est bien de regarder cette ligne-lŕ d'abord, et d'en faire part aux gens ŕ qui on demande de l'aide :-)

> pour que le document s'ouvre dans une autre page ou que la personne puisse télécharger le fichier.
Ton code (le Content-Type:applicaton/force-download) est fait pour dire au navigateur que c'est un fichier ŕ télécharger; pour ouvrir dans une nouvelle fenętre il faut renvoyer le Content-Type qui correspond au type de ton document (et faire un target="_blank" sur le lien, ou un window.open en javascript, pour que ce soit une nouvelle fenętre). Enfin, tel que tu poses la question, je suppose que c'est "n'importe, pourvu que ça marche"; mais mieux tu comprendras ce que tu fais, plus vite tu apprendras.


Cette discussion est classée dans : fichier, ouvrir, php, file, serveur


Répondre ŕ ce message

Sujets en rapport avec ce message

URGENT!!!!!!!!Telecharger un fichier depuis le web vers serveur PHP [ par bonbecman ] Je recherche le moyen de récupérer un fichier sur Internet (www.quelquechose.fr/unfichier.exe) et de le placer sur mon serveur PHP. Il y a bien une so Problčme d'upload de fichier [ par phenixoiseau ] phénixOiseauBonjour,Voilà j'ai écrit un script pour charger un fichier vers un serveur. Lorsque j'execute le script depuis ma machine le chargement du Problčme d'upload de fichier [ par phenixoiseau ] phénixOiseauBonjour,Voilà j'ai écrit un script pour charger un fichier vers un serveur. Lorsque j'execute le script depuis ma machine le chargement du Problčme d'upload de fichier [ par phenixoiseau ] phénixOiseauBonjour,Voilà j'ai écrit un script pour charger un fichier vers un serveur. Lorsque j'execute le script depuis ma machine le chargement du Appel de serveur! [ par magicsmacks ] Bonjour,J'aurai aimé appelé un fichier en php depuis un autre serveur, à l'aide de la fonction require ou include...Cette fonction marche très bien qu Création de sous-domaine via PHP [ par Adrien ] Bonjour, Je possède un serveur dédié et j'aurais besoin d'une petite application. Comment créer de manière automatique via un script PHP un sous-domai erreur inconnue... [ par noSnoR ] voilà ce qui s'affiche lorsque j'accede à ma page : " Warning: fclose(): supplied argument is not a valid stream resource in compteur.php on line 16 Lancer un fichier m3u sur mon serveur ŕ l'aide de commande php [ par PunKeR77 ] Bonjour,Je cherche un code php qui me permettrait de lancer un fichier m3u sur mon serveur. En effet j'ai fait un site avec des amis pour diffuser une pb fopen() selon les FTP [ par xactise ] Bonjours je susi actuellement sur un projet que je fait en local (avec easyPHP 1-8) j'ai voulu voir ce que sa donner sur le net donc j'ai uploader sur PHP/formulaire pour uploader un fichier sur le serveur [ par stephpepere37 ] Bonjour,Je réalise le site d'un ami spécialisé en ressources humaines. Il souhaite que les internautes puisse télécharger un CV de leur poste clientJ'


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothčque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci ŕ Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction męme partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,009 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales