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

Résolu/Fermé
Signaler
Messages postés
1628
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
5 septembre 2012
-
Messages postés
18628
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
4 janvier 2022
-
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

6 réponses

Messages postés
18628
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
4 janvier 2022
4 349
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
Messages postés
1628
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
5 septembre 2012
113
En fait, le window.open ouvre une popup et comme les navigateurs n'ouvrent pas les popups ça ne fonctionne pas ! ;-)
0
Messages postés
18628
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
4 janvier 2022
4 349
Utilise plutôt une redirection avec la balise <meta> (refresh...) ou en Javascript (document.location.href).
0
Messages postés
1628
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
5 septembre 2012
113
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
Messages postés
18628
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
4 janvier 2022
4 349
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
Messages postés
699
Date d'inscription
mercredi 8 avril 2009
Statut
Membre
Dernière intervention
4 décembre 2016
80
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
Messages postés
18628
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
4 janvier 2022
4 349
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