Sécurisé de téléchargement de fichier en PHP, refuser l'utilisateur sans autorisation

Je suis en train de faire un site web où vous pouvez acheter des fichiers de points virtuels, et puis de les télécharger. Je ne veux pas autoriser les utilisateurs à télécharger les fichiers sans l'acheter, donc je dois les cacher. J'ai mis tous les fichiers dans un dossier sans l'autorisation pour quiconque à l'exception de l'hôte, le problème, c'est quand quelqu'un achète un fichier et veut le télécharger.

J'ai décidé de faire une fiche de lecture, qui permettra de vérifier les autorisations de l'utilisateur et ensuite imprimer le contenu du fichier. Mon code pour l'instant:

<?php
    require_once('content/requirements.php'); //mysql connections
    secure(1); //disconnect unlogged users

    if (!isset($_GET['id'])) //if no file id provided
        die();

    $fid=mysql_real_escape_string($_GET['id']); //file id

    $query="SELECT * FROM files WHERE user_id = "$_SESSION['user_id']." AND file_id = ".$id;

    $q=mysql_query($query);

    if (mysql_num_rows($q)!=1) //if no permission for file or multipe files returned
        die();

    $file=mysql_fetch_array($q); //file id
    $sub=mysql_fetch_array(mysql_query("SELECT * FROM sub WHERE id = ".$file['file_id'])); //payment id
?>

Maintenant, quand je suis sûr que l'utilisateur est autorisé à le faire, phpScript d'écrire le contenu du fichier et de l'envoyer approprié d'en-tête pour permettre à l'utilisateur de télécharger.

Comment lire un fichier octet par octet, et de l'imprimer et que dois-je écrire dans l'en-tête(), afin de rendre le fichier téléchargeable (si vous n'avez pas à copypaste son contenu).

Peut-être que ce n'est pas la meilleure façon de le faire, mais c'était la meilleure chose que j'ai pensé à un moment.

Merci pour toute aide.

  • L'utilisation de google. Il y a des millions d'explications à ce sujet.
  • Essayez de googler "SQL injection" pendant que vous y êtes.
InformationsquelleAutor noisy cat | 2012-11-19