IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Créer une page de téléchargement


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Août 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2011
    Messages : 33
    Points : 30
    Points
    30
    Par défaut Créer une page de téléchargement
    Bonjour à tous

    Je mets sur mon site des fichiers à télécharger. (fichiers word ,rar , zip et pdf.) Je voudrai faire des liens comme dans les sites spécialisés :

    - sur la première page un lien : "cliquez ici pour télécharger" qui point" vers
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://www.monsite.net/telecharger.php?id=xxxxx
    - sur la deuxième page du texte "le téléchargement va commencer dans quelques secondes. s'il ne se lance lance pas cliquez ici (un autre lien)".

    Je pense que le mieux c'est de faire ça en PHP mais je n'y connais rien.
    Est ce que vous pouvez m'expliquer.

    Merci d'avance.

  2. #2
    Membre confirmé Avatar de zulad
    Homme Profil pro
    creatif
    Inscrit en
    Juin 2007
    Messages
    713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : creatif

    Informations forums :
    Inscription : Juin 2007
    Messages : 713
    Points : 519
    Points
    519
    Par défaut
    salut,

    tu peux faire ça en javascript avec un timer pour le lien "dans quelques secondes" avec un location.href à la fin du timer. Dans ce cas pas besoin d'un php, c'est juste un hyperlien.

    Pour le deuxième lien, c'est juste un hyperlien aussi.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Août 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2011
    Messages : 33
    Points : 30
    Points
    30
    Par défaut
    bonsoir

    Merci zulad pour l'aide,
    Mais j'ai des centaines de fichiers et je veux faire une seule page apparaît lorsque vous cliquez sur le lien
    le Téléchargement des fichiers dans cette page.

    merci

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    La règle quand tu met un lien direct vers ton fichier est :

    - Si le visiteur possède un logiciel pouvant ouvrir le fichier cible, le fichier sera ouvert par ce logiciel. Sinon il sera proposé en téléchargement.

    Si tu veux pouvoir maîtriser le système pour obtenir toujours le même comportement, par exemple que le fichier soit toujours proposé par défaut en téléchargement même si le visiteur possède un logiciel qui permet d'ouvrir ce fichier, il faut passer par php pour lire ce fichier et forcer le téléchargement.

    Un script du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
     
    //$dirfile = chemin complet du fichier
     
    $filesize = filesize($dirfile);
    $file = basename($dirfile);
     
    header("Content-Type: application/force-download; name=\"".$file."\"");
    header("Content-Transfer-Encoding: $type\n"); 
    header("Content-Length: ".$filesize);
    header("Content-Disposition: attachment; filename=\"".$file."\"");			
    header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0, public");
    header("Pragma: no-cache"); 
    header("Expires: 0"); 
    readfile($dirfile);
    A savoir que cela ne modifie que le comportement par défaut et le visiteur pourra toujours ouvrir directement le fichier s'il le souhaite (et s'il possède un logiciel adéquat).

    Attention de bien vérifier le fichier avant de le proposer en téléchargement car ce genre de script peut être la source de failles majeures si le visiteur peut modifier le fichier à télécharger (en modifiant une variable $_GET par exemple).

    Pour renseigner au mieux la variable $type de la ligne "header("Content-Transfer-Encoding: $type\n");" on peut faire un switch sur l'extension du fichier, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    switch($Ext) 
     
    	{
    		case ".gz": $type = "multipart/x-gzip"; break;
    		case ".gzip": $type = "multipart/x-gzip"; break;
    		case ".tgz": $type = "multipart/x-gzip"; break;
    		case ".zip": $type = "multipart/x-zip"; break;
     
    		case ".doc": $type = "application/msword"; break;
    		case ".docx": $type = "application/msword"; break;
    		case ".xls": $type = "application/vnd.ms-excel"; break;
    		case ".xlsx": $type = "application/vnd.ms-excel"; break;
     
    		case ".pdf": $type = "application/pdf"; break;
     
    		case ".xml": $type = "application/xml"; break;
     
    		case ".png": $type = "image/png"; break;
    		case ".gif": $type = "image/gif"; break;
    		case ".jpg": $type = "image/jpeg"; break;
    		case ".jpeg": $type = "image/jpeg"; break;
    		case ".jpe": $type = "image/jpeg"; break;
     
    		case ".rtx": $type = "text/richtext"; break;
    		case ".rtf": $type = "text/richtext"; break;
    		case ".txt": $type = "text/plain"; break;
     
    		case ".htm": $type = "text/html"; break;
    		case ".html": $type = "text/html"; break;
     
    		case ".csv": $type = "text/csv"; break;
     
    		case ".odb": $type = "application/vnd.oasis.opendocument.database"; break;
    		case ".odc": $type = "application/vnd.oasis.opendocument.chart"; break;
    		case ".odf": $type = "application/vnd.oasis.opendocument.formula"; break;
    		case ".odg": $type = "application/vnd.oasis.opendocument.graphics"; break;
    		case ".odi": $type = "application/vnd.oasis.opendocument.image"; break;
    		case ".odm": $type = "application/vnd.oasis.opendocument.text-master"; break;
    		case ".odp": $type = "application/vnd.oasis.opendocument.presentation"; break;
    		case ".ods": $type = "application/vnd.oasis.opendocument.spreadsheet"; break;
    		case ".odt": $type = "application/vnd.oasis.opendocument.text"; break;
    		case ".otg": $type = "application/vnd.oasis.opendocument.graphics-template"; break;
    		case ".oth": $type = "application/vnd.oasis.opendocument.text-web"; break;
    		case ".otp": $type = "application/vnd.oasis.opendocument.presentation-template"; break;
    		case ".ots": $type = "application/vnd.oasis.opendocument.spreadsheet-template"; break;
    		case ".ott": $type = "application/vnd.oasis.opendocument.text-template"; break;
     
    		default: $type = "application/octet-stream"; 
    	}
    ...mais beaucoup se contente de "application/octet-stream". Sinon si tu utilises php 5.3 tu peux essayer d'utiliser la fonction "finfo" pour trouver le type (recommandé si ça fonctionne).

Discussions similaires

  1. Réponses: 13
    Dernier message: 06/02/2009, 10h10
  2. Créer une page avec une table
    Par covin85 dans le forum Installation
    Réponses: 6
    Dernier message: 14/04/2006, 23h58
  3. Créer une page par image ?
    Par Eliness dans le forum Langage
    Réponses: 10
    Dernier message: 01/01/2006, 17h34
  4. créer une page plan de site
    Par yvan02 dans le forum Langage
    Réponses: 7
    Dernier message: 09/10/2005, 19h13
  5. Peut-on créer une page internet via JBuilder?
    Par Xavier dans le forum JBuilder
    Réponses: 2
    Dernier message: 17/02/2005, 21h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo