Script téléchargement

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Script téléchargement

Re: Script téléchargement

par Skw33d » 22 mai 2011, 19:51

Salut,

Tout d'abord :
$kit = $_GET['id'];

$fi = mysql_query("SELECT prix, nom FROM kit WHERE id=$kit") or exit(mysql_error());
$fetch = mysql_fetch_assoc($fi); // Il faut quand meme aller chercher l'assoc
Vive l'injection SQL qui peut il y avoir :!: , je pense que tes utilisateurs auront même pas besoin de points pour acheter des articles. ^^ Pense à échapper.
Ensuite :

$pts = $points-$prix;
mysql_query("UPDATE utilisateurs SET points='$points' WHERE nom='$user'")or exit(mysql_error());
C'est bien ce qui faut faire : mais si tu lui remet les points qu'il avait avant : $points , ça sert à rien. :) Donc c'est mieux comme ca :
mysql_query("UPDATE utilisateurs SET points='$pts' WHERE nom='$user'")or exit(mysql_error());

Après pour ce qui est de l'envoi des headers, essaye avec ce code :
  
header("Content-Disposition:$attachment; filename=$fichier_client");
header("Content-type: application/force-download" );
header("Content-Transfer-Encoding: application/zip\n")
header("Content-Length: ".filesize($fichier_local));
header("Content-Description: File Transfert" );
readfile($fichier_local);
Il y avait des erreurs dans ton code : compare le mien avec le tien tu verras où elles sont.

Cette page contenant le script est elle incluse dans une autre page comme par exemple ?
<div>Entete de la page</div>
<div><?php include('tapage.php'); ?></div>
<div>Pied de page</div>

Si c'est le cas tu devras utiliser : ob_start(); et ob_end_flush();

Voilà, j'espère que ça marche maintenant. Dis nous si ça ne fonctionne toujours pas. Bonne chance.

Re: Script téléchargement

par HadrienX » 22 mai 2011, 12:08

Je suis sous Firefox

Re: Script téléchargement

par devlop78 » 22 mai 2011, 04:43

header( "Content-type: application/zip" );
header( "Content-Type: application/zip" );
Peut-être le navigateur est-il sensible à la casse ?

Script téléchargement

par HadrienX » 21 mai 2011, 23:03

Bonjour,

Je réalise un script de téléchargement de kit graphique.
Si l'utilisateur possède assez de points, le téléchargement se lance, sinon, un message l'avertit qu'il n'a pas assez de points.
Si il a assez de points, le prix du kit graphique est soustrait de ses points.
Ensuite, le téléchargement se lance.
Malheureusement, cela ne marche pas.
Les points ne sont pas soustraits et fichier zip sensé être téléchargé est lue par la page, elle écrit quelque chose comme ça :
PKÊb‰>6í°W index.htmlíXÝNëF¾‰w˜ãÞ’8ê§I¤¸@! ‰Ú^¡=IV]ïºû“€Ôê›õ¼Egl'äPhE¥J§’sáìÚ3ß|ó·+MçÃðn0ýyœÀÊç Æ³‹›ëD­8þñã Ž‡Ó!üt5½½Óö Ü{+SÇÉ(‚hå}ñ)Ž7›
Voici mon code :

Code : Tout sélectionner

<?php $kit = $_GET['id']; $fi = mysql_query("SELECT prix, nom FROM kit WHERE id=$kit") or exit(mysql_error()); $fetch = mysql_fetch_assoc($fi); // Il faut quand meme aller chercher l'assoc $prix = $fetch['prix']; $nom = $fetch['nom']; $fichier_local = "kits/num1.zip"; $fichier_client = "$nom.zip"; if(mysql_num_rows($fi) == 0) { echo'<h2>Erreur 404 : <span class="red_title">Kit Graphique Introuvable</span></h2> <img src="images/404_kit.png" alt="Erreur 404" />'; exit(); } $user = mysql_real_escape_string($_SESSION['login']); $query = mysql_query("SELECT * FROM utilisateurs WHERE nom='$user'") or exit(mysql_error()); $fetch2 = mysql_fetch_assoc($query); $points = $fetch2['points']; if($points >= $prix) { $pts = $points-$prix; mysql_query("UPDATE utilisateurs SET points='$points' WHERE nom='$user'")or exit(mysql_error()); if (file_exists($fichier_local)==true) { if (strstr($HTTP_USER_AGENT,"MSIE")) $attachment=""; else $attachment=" attachment;"; header( "Content-type: application/zip" ); header( "Content-Disposition:$attachment filename=$fichier_client"); header( "Content-Description: File Transfert" ); header( "Content-Length: ".filesize($fichier_local).""); readfile($fichier_local); exit; } else { echo'Une erreur est survenue.';} } else { echo 'Vous n\'avez pas assez de points'; } ?>