PHP/HTML
Fermé
AMichel
-
30 juil. 2002 à 09:42
masternico Messages postés 487 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 1 septembre 2011 - 28 juil. 2008 à 17:58
masternico Messages postés 487 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 1 septembre 2011 - 28 juil. 2008 à 17:58
A voir également:
- PHP/HTML
- Editeur html - Télécharger - HTML
- Easy php - Télécharger - Divers Web & Internet
- Html download - Télécharger - HTML
- Image cliquable html ✓ - Forum Réseaux sociaux
- Br html ✓ - Forum Webmastering
11 réponses
Le code que je t'ai donné permet de "dire" au navigateur du visiteur que la page doit être considéré comme un fichier à enregistrer sur le disque dur, il y a donc une fenêtre qui s'ouvre et qui permet d'enregistrer le fichier sur le disque dur (enregistrer sous), cette fenêtre ne peut pas être modifiée.
Ce code doit être placé tout en haut de la page avant tout le reste.
J'éspère que ça t'aidera.
Ce code doit être placé tout en haut de la page avant tout le reste.
J'éspère que ça t'aidera.
Salut,
on ne peut pas changer les fenêtres qui s'ouvrent par cette technique, car ce sont les mêmes que celles qui s'ouvrent pout télécharger un fichier "normal" et elle sont définies par IE.
Pour ouvrir le fichier dans une nouvelle fenêtre à partir d'un lien il faut que tu mettes target="_blank" dans la balise <a>.
J'ai mis un fichier d'exemple sur mon serveur, voilà l'adresse : http://thomas.chaumeny.free.fr/exemple.zip
a+
on ne peut pas changer les fenêtres qui s'ouvrent par cette technique, car ce sont les mêmes que celles qui s'ouvrent pout télécharger un fichier "normal" et elle sont définies par IE.
Pour ouvrir le fichier dans une nouvelle fenêtre à partir d'un lien il faut que tu mettes target="_blank" dans la balise <a>.
J'ai mis un fichier d'exemple sur mon serveur, voilà l'adresse : http://thomas.chaumeny.free.fr/exemple.zip
a+
Il faut utiliser les header HTTP, par exemple tu mets le code suivant en haut du fichier :
//------//
if (!empty($HTTP_SERVER_VARS['HTTP_USER_AGENT'])) {
$HTTP_USER_AGENT = $HTTP_SERVER_VARS['HTTP_USER_AGENT'];
} elseif (!empty($_SERVER['HTTP_USER_AGENT'])) {
$HTTP_USER_AGENT = $_SERVER['HTTP_USER_AGENT'];
}
if (eregi('MSIE[[:space:]]+[0-9]+\.[0-9]+', $HTTP_USER_AGENT)) { //if browser is IE compatible
header('Content-Type: application/octetstream');
header('Content-Disposition: inline; filename="' . $filename . '"');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
} else { //if browser is not IE compatible
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . $filename . '"');
header('Expires: 0');
header('Pragma: no-cache');
}
//------//
a+
//------//
if (!empty($HTTP_SERVER_VARS['HTTP_USER_AGENT'])) {
$HTTP_USER_AGENT = $HTTP_SERVER_VARS['HTTP_USER_AGENT'];
} elseif (!empty($_SERVER['HTTP_USER_AGENT'])) {
$HTTP_USER_AGENT = $_SERVER['HTTP_USER_AGENT'];
}
if (eregi('MSIE[[:space:]]+[0-9]+\.[0-9]+', $HTTP_USER_AGENT)) { //if browser is IE compatible
header('Content-Type: application/octetstream');
header('Content-Disposition: inline; filename="' . $filename . '"');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
} else { //if browser is not IE compatible
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . $filename . '"');
header('Expires: 0');
header('Pragma: no-cache');
}
//------//
a+
Super, grace a toi, j'ai pu enfin ouvrir cette fenetre.
Il me reste qqes petits points noirs à solutionner, veux-tu continuer à m'aider?
J'ai mis ton code ds un pgm a part que j'appelle en cliquant sur un bouton de formulaire.
1) Mon appli s'arrete complètement pour ouvrir cette fenetre au lieu de la laisser active pour que je puisse ensuite clicquer sur valider en fin de selection et enchainer sur d'autres pages?
2) le fenetre qui s'ouvre c'est "téléchargement de fichier" puis "enregistrer sous" peut on éviter la premiere?
Je veux bien voir ton fichier, cela me donnera une idée.
Encore merci.
Il me reste qqes petits points noirs à solutionner, veux-tu continuer à m'aider?
J'ai mis ton code ds un pgm a part que j'appelle en cliquant sur un bouton de formulaire.
1) Mon appli s'arrete complètement pour ouvrir cette fenetre au lieu de la laisser active pour que je puisse ensuite clicquer sur valider en fin de selection et enchainer sur d'autres pages?
2) le fenetre qui s'ouvre c'est "téléchargement de fichier" puis "enregistrer sous" peut on éviter la premiere?
Je veux bien voir ton fichier, cela me donnera une idée.
Encore merci.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
J'ai testé ton "exemple".php". J'ai fais comme toi mais je rencontre des difficultés car je n'arrive pas a integrer ce code dans mes programmes.
Pour éviter de passer par le forum et pour etre plus reactif, puis-je te contacter directement par téléphone? si cela ne te dérange pas ou bien directement par mails?
Sinon, je tévoquerai mes pbs aprés avoir eu ta réponse.
A+
Pour éviter de passer par le forum et pour etre plus reactif, puis-je te contacter directement par téléphone? si cela ne te dérange pas ou bien directement par mails?
Sinon, je tévoquerai mes pbs aprés avoir eu ta réponse.
A+
masternico
Messages postés
487
Date d'inscription
dimanche 5 octobre 2003
Statut
Membre
Dernière intervention
1 septembre 2011
320
28 juil. 2008 à 17:58
28 juil. 2008 à 17:58
Salut tout le monde...
Votre méthode est pas mal, mais présente un gros gros problème de sécurité. Je m'explique:
grâce à ce script, il est possible de forcer le téléchargement d'un fichier depuis le serveur... c'est cool, mais que se passe t-il si je fait un appel direct à la page en mettant à la main un nom de fichier php qui m'interesse. Ex: download_file.php?file_name=index.php
Et bien je reçoit le code source php. Dès lors, je le décortique, et je télécharge les fichiers de configuration de la connexion à la BDD et là j'ouvre la porte en grand...
Votre méthode est pas mal, mais présente un gros gros problème de sécurité. Je m'explique:
grâce à ce script, il est possible de forcer le téléchargement d'un fichier depuis le serveur... c'est cool, mais que se passe t-il si je fait un appel direct à la page en mettant à la main un nom de fichier php qui m'interesse. Ex: download_file.php?file_name=index.php
Et bien je reçoit le code source php. Dès lors, je le décortique, et je télécharge les fichiers de configuration de la connexion à la BDD et là j'ouvre la porte en grand...
Qu'est ce que tu veux enregistrer ?
Je suppose que c'est un fichier mais dis m'en un peu plus....
Je suppose que c'est un fichier mais dis m'en un peu plus....
il faut avant ce code que tu définisses la variable $filename (le nom du fichier), exemple d'utilisation de ce code:
<?php
$filename = 'test.txt';
if (!empty($HTTP_SERVER_VARS['HTTP_USER_AGENT'])) {
$HTTP_USER_AGENT = $HTTP_SERVER_VARS['HTTP_USER_AGENT'];
} elseif (!empty($_SERVER['HTTP_USER_AGENT'])) {
$HTTP_USER_AGENT = $_SERVER['HTTP_USER_AGENT'];
}
if (eregi('MSIE[[:space:]]+[0-9]+\.[0-9]+', $HTTP_USER_AGENT)) { //if browser is IE compatible
header('Content-Type: application/octetstream');
header('Content-Disposition: inline; filename="' . $filename . '"');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
} else { //if browser is not IE compatible
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . $filename . '"');
header('Expires: 0');
header('Pragma: no-cache');
}
?>
contenu du fichier
<?php
$filename = 'test.txt';
if (!empty($HTTP_SERVER_VARS['HTTP_USER_AGENT'])) {
$HTTP_USER_AGENT = $HTTP_SERVER_VARS['HTTP_USER_AGENT'];
} elseif (!empty($_SERVER['HTTP_USER_AGENT'])) {
$HTTP_USER_AGENT = $_SERVER['HTTP_USER_AGENT'];
}
if (eregi('MSIE[[:space:]]+[0-9]+\.[0-9]+', $HTTP_USER_AGENT)) { //if browser is IE compatible
header('Content-Type: application/octetstream');
header('Content-Disposition: inline; filename="' . $filename . '"');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
} else { //if browser is not IE compatible
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . $filename . '"');
header('Expires: 0');
header('Pragma: no-cache');
}
?>
contenu du fichier
Merci pour ton code mais j'ai un peu de mal a comprendre!
J'ai testé ton code mais je dois mal l'utiliser.
Reprenons au debut:
Lorsque ma page est affichée je donne ds ma ligne 'input type=text' value=le chemin par defaut ex: c:/repert1/sousrepert2
puis ds une autre ligne 'input type=text' value='nomfichier'
Je voudrais, en cliquant sur un bouton que la boite de dialogue "Enregistrer sous" s'ouvre, que l'on recherche ds l'arborescence le nouveau chemin du repertoire ex:d:/repert2/ssrepert4/ et modifier le nom du fichier si on le souhaite puis apres avoir clique sur enregistrer, on retrouve ds les deux lignes les nouvelles valeurs( comme cela se fait ss windows en faisant fichier enreg ss).
votre code fait il cela?
J'ai testé ton code mais je dois mal l'utiliser.
Reprenons au debut:
Lorsque ma page est affichée je donne ds ma ligne 'input type=text' value=le chemin par defaut ex: c:/repert1/sousrepert2
puis ds une autre ligne 'input type=text' value='nomfichier'
Je voudrais, en cliquant sur un bouton que la boite de dialogue "Enregistrer sous" s'ouvre, que l'on recherche ds l'arborescence le nouveau chemin du repertoire ex:d:/repert2/ssrepert4/ et modifier le nom du fichier si on le souhaite puis apres avoir clique sur enregistrer, on retrouve ds les deux lignes les nouvelles valeurs( comme cela se fait ss windows en faisant fichier enreg ss).
votre code fait il cela?
1 août 2002 à 11:05
puis ma page s'affiche comme avant.
Que puis je faire?