PHP (+ header) : Téléchargements automatiques

Résolu/Fermé
LelLex Messages postés 1628 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 5 septembre 2012 - 6 janv. 2012 à 17:42
avion-f16 Messages postés 19244 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 17 avril 2024 - 7 janv. 2012 à 13:44
Bonjour à tous, (et bonne année ?)

Pour faire simple :

J'aimerais mettre en place un système de téléchargement automatique pour le visiteur lorsqu'il se trouve sur la page telechargement.php (où il y a du contenu !)

Pour faire "moins" simple :

En fait, j'ai deux page :
- la page d'accueil index.php
- la page de téléchargement telechargement.php

Donc, le principe est le suivant, l'utilisateur est sur la page d'accueil, il choisi ce qui lui plaît et clique donc sur "Télécharger".
Il est redirigé (avec un simple lien HTML et un paramètre ID) sur la page telechargement.php?id=fichier-1 , telechargement.php?id=fichier-2 , etc... Où se trouve du contenu (donc cette page doit s'afficher) et bien sûr c'est à ce moment que j'aimerais que le téléchargement se lance automatiquement.

Je peux préciser que les fichiers sont : fichier-1.zip, fichier-2.zip, etc...

Mon fichier telechargement.php

<?php
$id = $_GET['id']; // A sécuriser ?!
if(
	$id != "fichier-1"
	XOR $id != "fichier-2"
	XOR $id != "fichier-3"
){
	header('Location:index.php'); // Si l'utilisateur fouille il est redirigé vers la page d'accueil !
} else {
	// Lancer le téléchargement automatiquement ! 
}
?>

<!DOCTYPE html>
<html>
<!-- Bla bla ... -->


Voilà, je pense que vous avez compris mon problème, ça fait déjà quelque temps que je suis déçu et que je n'ai pas de solution, donc je m'en remet à vous ! :)

Cordialement, LelLex
A voir également:

6 réponses

avion-f16 Messages postés 19244 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 17 avril 2024 4 496
6 janv. 2012 à 18:01
Salut,

Tu peux faire un « window.open » en Javascript.
Cela ouvrira un onglet qui se fermera aussitôt en lançant le téléchargement.
0
LelLex Messages postés 1628 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 5 septembre 2012 112
6 janv. 2012 à 21:55
En fait, le window.open ouvre une popup et comme les navigateurs n'ouvrent pas les popups ça ne fonctionne pas ! ;-)
0
avion-f16 Messages postés 19244 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 17 avril 2024 4 496
6 janv. 2012 à 23:39
Utilise plutôt une redirection avec la balise <meta> (refresh...) ou en Javascript (document.location.href).
0
LelLex Messages postés 1628 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 5 septembre 2012 112
7 janv. 2012 à 02:02
Ca fonctionne avec document.location.href, ceci dit je dois le placer en bas de page et en dehors du contenu HTML.

Ce n'est pas très valide une balise <script> en dehors ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
avion-f16 Messages postés 19244 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 17 avril 2024 4 496
7 janv. 2012 à 13:14
La balise <script> peut être placée dans le <body> ou <head>
Si tu la place dans <head>, il faut utiliser l'évènement « window.onload » pour lancer l'action.
0
maka54 Messages postés 699 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 4 décembre 2016 80
Modifié par maka54 le 7/01/2012 à 13:35
dans la page telechargement.php, tu met :


header('Content-type:force-download');
header('Content-Disposition: attachment; filename=nom_fichier.ext';
readfile('chemin_du_fichier/nom_fichier.ext');

tu remplace le texte en gras par le nom de ton fichier

et tu ne met aucun html dans ce fichier
0
avion-f16 Messages postés 19244 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 17 avril 2024 4 496
7 janv. 2012 à 13:44
Le problème est que LelLex souhaite affiche une page en même temps.
Avec cette solution, le navigateur téléchargera un mélange du fichier et du HTML.
0