je dois fournir un fichierGénérer URL unique pour chaque client téléchargeant le même fichier
example.com/realpathofthe/file.zip
aux clients mais je ne veux pas communiquer la même URL à tous les clients (ils pourraient facilement partager URL non -customers, et il serait difficile de savoir si le produit est livré ou non). Au lieu de cela, je génère une chaîne aléatoire en PHP et je veux partager une telle URL:
example.com/download/djbf6xu83/file.zip
qui sera différent pour chaque client. Question: Devrais-je générer des liens symboliques pour chaque client pour lier le chemin de la chaîne aléatoire au chemin du fichier réel sur le serveur?
Ou utiliser une RewriteRule dans .htaccess pour cela? Mais alors, si c'est fait de cette façon (c'est-à-dire réécrire /download/*/file.zip
au fichier réel), tous les chaînes aléatoires se lieraient au même fichier. Ce n'est pas bon car un non client pourrait générer un lien de téléchargement lui-même. Comment gérer cela correctement?
Note: Je voudrais éviter si possible que PHP doit traiter les gigaoctets de données de fichiers (à travers file_get_contents()
) avant de le livrer. J'ai pensé (corrigez-moi si je me trompe) qu'il serait plus léger pour le serveur de laisser Apache distribuer le fichier.
Stockez la chaîne aléatoire dans la base de données. Ensuite, utilisez une règle de réécriture pour rediriger vers un script php qui obtiendra la chaîne aléatoire et la fera correspondre à votre base de données, puis, si c'est ok, envoyez le fichier. Le fichier est toujours le même, mais votre script va vérifier la chaîne aléatoire. – Armage
Pourquoi ne pas utiliser la RewriteRule dans un fichier de script PHP, et vérifier que la chaîne de caractères aléatoire est valide? – Fredster
@Armage oui mais alors PHP lui-même doit traiter les gigaoctets de données de fichiers (via 'file_get_contents()') avant de le livrer. N'y at-il pas un moyen d'éviter cela et laisser Apache distribuer le fichier? – Basj