Se connecter / S'enregistrer

Résolu Allopass et fichier zip

Solutions (10)
Tags :
  • Kit
  • Programmation
|
Bonjour,

Je suis en train de créer un site proposant des kits graphiques par allopass, mais je recontre un petit soucis...

Donc voilà mes kits sont tous zipper dans un dossier de mon FTP appellé "kit".
Pour y acceder via l'interface web, j'ai une page d'apercu de tout les kits par catégories, une fois le kit choisis j'ai une page http://lesite.com/?kit=1 par exemple, sur cette page figure le bouton d'achat par allopass.

Une fois le code entré le client accède alors à la page http://lesite.com/?kit=1&action=dl sur cette page figure le lien de téléchargement du kit.
Jusqu'ici pas de problème.

Mais si j'entre l'adresse http://lesite.com/kit/kit1.zip j'accède quand même au fichier, logique!

J'ai penser à mettre un .htaccess sur le dossier "kit" mais est-ce que le client pourra y acceder une fois le code allopass entrer?

Est-ce la meilleur solution?
Ou avez-vous une meilleure solution?

Merci d'avance!
Contenus similaires
Meilleure solution
partage
|
Bonjour,

Le plus simple je pense c'est de garder les fichiers zip dans un répertoire non publique ou protégé par un .htaccess ( Deny From All ) et de gérer la transmission du fichier via le PHP, de la façon suivante:

  1. if ($le_client_a_paye) {
  2. // On lui donne le fichier
  3. header('Content-type: application/octet-stream');
  4. header('Content-Disposition: attachment; filename="'.$fichier_theme.'"');
  5. readfile($fichier_theme);
  6. } else {
  7. // On lui affiche une erreur
  8. }

  • Commenter cette solution |
Score
0
òh
òi
|
Meilleure réponse sélectionnée par allstar27.
  • Commenter cette réponse |
Score
0
òh
òi
|
OmaR a dit :
Parce que tu ne peux pas modifier les header après avoir écrit quelque chose.


Y'a rien avant...

OmaR a dit :
J'imagine que si tu fais un error_reporting(E_ALL), tu verras les warning


Déjà essayer, aucun warning.

Laissez tomber je vais me débrouiller autrement merci quand même de m'avoir aider =)
  • Commenter cette réponse |
Score
0
òh
òi
|
Il y a la solution d'utiliser headers_sent() ( http://fr2.php.net/manual/en/function.headers-sent.php ) avant de les modifier pour savoir si il y a pas eu de warnings avant ;) 
  • Commenter cette réponse |
Score
0
òh
òi
, Modérateur |
Parce que tu ne peux pas modifier les header après avoir écrit quelque chose.
J'imagine que si tu fais un error_reporting(E_ALL), tu verras les warning
  • Commenter cette réponse |
Score
0
òh
òi
|
Voici la totalité de ma page (cette page est en include())

  1. <?php
  2.  
  3. require ('config.php');
  4. mysql_connect ("$host", "$user", "$pass");
  5. mysql_select_db ("$bdd");
  6.  
  7. $kit = mysql_real_escape_string(htmlspecialchars($_GET['kit_id']));
  8.  
  9. $req3 = mysql_query("SELECT url FROM kits WHERE id = '$kit'");
  10. $rep3 = mysql_fetch_array($req3);
  11. $fichier_theme = $rep3['url'];
  12.  
  13. mysql_close();
  14.  
  15. header("Content-disposition: attachment; filename=".basename($fichier_theme));
  16. header("Content-Type: ".mime_content_type($fichier_theme));
  17. header("Content-Transfer-Encoding: binary" );
  18. header("Content-Length: ".filesize($fichier_theme));
  19. header("Pragma: no-cache, public" );
  20. header("Cache-Control: public, no-store, no-cache, must-revalidate, post-check=0,
  21.  
  22. pre-check=0" );
  23. header("Expires: 0" );
  24. readfile($fichier_theme);
  25.  
  26. ?>


Edit: je vais tester avec firebug et je vous post le warning.
Edit2: Aucn warning par contre je viens de faire un test avec un bête header location et impossible de modifier le header (comprend pas là)
  • Commenter cette réponse |
Score
0
òh
òi
|
Je penche pour mime_content_type() qui est deprecated et retourne peut être n'importe quoi :p 
Ça serrait bien de voir les header de la réponse avec firebug/wireshark/... après avoir vérifié l'absence de warnings comme le propose crazycat :) 
  • Commenter cette réponse |
Score
0
òh
òi
|
La, tu as un souci avec les headers.
Ta page qui envoie le .zip ne doit rien afficher, elle ne doit contenir que le code que l'on t'a donné.
N'as-tu pas de warning avant ?
  • Commenter cette réponse |
Score
0
òh
òi
|
Merci pour vos réponses...
Résultat, il tente de lire le fichier zip

  1. PK ªz®:Jungle-Effect/PK |~¨:Jungle-Effect/images/PK ¼§:9‡÷'ÔÏJungle-Effect/images/bg.jpgìX{8”û·ÿŽr•¨¤’.E[SIŒH‘[HŒqi†ÁÌö4µíR"¥‹B®Eˆ\“t5º‘»\BJCd††™9ïŒQ콿ó;ÏsžóÇy|çù~ßµ>ëò®µÞ™—µ8­œn m¶¹À`ÀúN´ªñ o,,Àf€†-pˆ‚AS‹x4n0ÅôqØF¾Žtlãž`%´`š`ê?|KŽòý™òsá]9sk øµ¤q^N.FÆ0äqÀýÏ¢üÄEDD‹ˆ/^,.#&*&³TJ\\j©¼¬ìRYYyqÞâ_þyÁ$ÄÄ$$%¤%%¥å$%%帇¤ÜŒ‰Ìâ€óȈ€ ‡­20¸ ŒÓ ¥*ÊyC@Q.‚ñ?e8”œà"!a‘Å¢b°¿ ¡šÁg…Ò&ƒ ,Yׂ„2pAå%Ûí>ä*»Öÿ´¦\Ì­ü=ëÖ/µz⦵=à÷:#a•Xë¯=£(¼ö²”‚° {ã»?M%è,¯·ùˆ»ÿdzbï·}ª—ÒÎ^~Þøi<½èEÓgº­GàÙøŒâªæ>†®‰gPø•ÌJË— E+È‹IXh‘6/åmK¡ü×Ê.Ò<#Ǎà‰UÝW­õn=¿ÇY/E᷏ªqÞ ý´ "u¹»±ýñGÿ:ÕŸ!pÚ€8œwO€ci±V>–¤”¬ª‰²ö#Šwcù Í­loS­7„ÅE…“&iþ®|`ÃJï7¢œÞN‘ªÉ¨—’¡«¯LøJ-ºgohro¤}¤µ³]ú㪧¦EL;e ¢‹­Q[Š¥ã𦘫«¨!‘þ«ûB*S»Ø1ŠZ©t¬PøW—s O•´ šèG:_ÚË5"½]IŽƒß?±â2Ý;>RôŠ~-ÊzMÞ–Ë3ŠºŒ_!T©WÉ>g“Ô“íóËo|¥å¤\÷¯1.ncœŒk«­cÇ5...


=(
  • Commenter cette réponse |
Score
0
òh
òi
|
Je plussoie la solution d'Edyr, toutefois je conseille d'être aussi exhaustif que possible sur les headers:
  1. header("Content-disposition: attachment; filename=".basename($fichier_theme));
  2. header("Content-Type: ".mime_content_type($fichier_theme));
  3. header("Content-Transfer-Encoding: binary");
  4. header("Content-Length: ".filesize($fichier_theme));
  5. header("Pragma: no-cache, public");
  6. header("Cache-Control: public, no-store, no-cache, must-revalidate, post-check=0, pre-check=0");
  7. header("Expires: 0");
  8. readfile($fichier_theme);
  • Commenter cette réponse |

Ce n'est pas ce que vous cherchiez ?

Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS