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

Résolu
LelLex Messages postés 1628 Date d'inscription   Statut Membre Dernière intervention   -  
avion-f16 Messages postés 19256 Date d'inscription   Statut Contributeur Dernière intervention   -
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 19256 Date d'inscription   Statut Contributeur Dernière intervention   4 509
 
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   Statut Membre Dernière intervention   112
 
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 19256 Date d'inscription   Statut Contributeur Dernière intervention   4 509
 
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   Statut Membre Dernière intervention   112
 
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 19256 Date d'inscription   Statut Contributeur Dernière intervention   4 509
 
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 698 Date d'inscription   Statut Membre Dernière intervention   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
avion-f16 Messages postés 19256 Date d'inscription   Statut Contributeur Dernière intervention   4 509
 
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