La question dit tout .. Comment puis-je laisser les utilisateurs télécharger un fichier de mon site Web et pas strong> les laisser voir quel lien vient de ce fichier? Je comprends qu'il pourrait y avoir un besoin de quelque chose comme un download.php em> qui servira de passerelle mais après cette phase, je ne sais pas quoi de script ... Si cela vous dérange d'écrire le tout Code, quelques noms de fonction que je devrais avoir besoin d'utiliser soient vraiment utiles! p>
4 Réponses :
Vous pouvez utiliser la fonction Je suggérerais de faire défiler et de regarder le 1er exemple. Cela semble faire exactement ce que vous voulez. P> en-tête () code> qui est documenté ici p>
Juste une note pour Shedo Chung-Hee Surasi - Le deuxième exemple vous indique également comment vous pouvez spécifier un nom de fichier différent du nom du fichier d'origine (comme vous l'avez mentionné dans votre question).
Trouver un moyen d'identifier le fichier à télécharger (par exemple, une variable Obtenir une variable correspondant à l'ID d'une ligne dans une base de données ou quelque chose qui le long de ces lignes). Faites sacrément sûr que c'est un problème valide, car vous ne voulez pas que vos utilisateurs puissent rien télécharger de votre site. Ensuite, utilisez Par exemple: p> en-tête code>
avec Contenu-disposition code> Pour indiquer au navigateur Le fichier doit être téléchargé et readfile code> pour la sortie.
<?php
$id = intval($_GET['id']);
$query = mysql_query('SELECT file_path FROM files WHERE id = ' . $id);
if (($row = mysql_fetch_row($query)) !== false)
{
header('Content-Disposition: attachment; filename=' . basename($row[0]));
readfile($row[0]);
}
exit;
?>
Je me souviens d'utiliser une technique similaire pour l'exportation d'adresses électroniques dans un fichier CSV. L'en-tête de type de contenu a été ignoré par Safari pour Mac.
Est-ce que ce script est-il antiacressé? J'ai une règle HTACCESS pour refuser l'accès à une URL réelle au cas où la méthode a été contournée. Est-ce que nie de tout code> affecte également ce script?
@Codigostutoriels, règles dans les fichiers .htaccess uniquement sur les demandes Web d'un client. Ils ne font rien pour empêcher votre code serveur de lire des fichiers sur le serveur.
Readfile devrait faire ce que vous voulez. Placez le fichier actuel en dehors de la racine du serveur Web et demandez des informations d'identification avant de passer le fichier. P>
Vous ne pouvez pas faire télécharger un fichier à partir d'une URL sans les informer de l'URL. Ce n'est pas possible sous la spécification HTTP. Tout ce qui est téléchargé a une URL. P>
Vous pouvez cependant avoir une URL de téléchargement qui ne fonctionne qu'une seule fois, ou nécessite que certaines informations spécifiques soient transmises via la méthode postale. Vous vérifiez un jeton dans les variables d'obtention ou de poste et invalendez ce jeton une fois qu'il est utilisé une fois. P>