仮想ポイントのファイルを購入してダウンロードできる Web サイトを作成しています。ユーザーが購入せずにファイルをダウンロードできるようにしたくないので、非表示にする必要があります。ホスト以外の誰にも許可なくすべてのファイルをフォルダーに入れました。問題は、誰かがファイルを購入してダウンロードしたい場合です。
ユーザーのアクセス許可を確認してからファイルの内容を出力するファイルゲッターを作成することにしました。これまでの私のコード:
<?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
?>
ユーザーがこれを行う権限を持っていることを確認したら、phpScript はファイルの内容を書き込み、適切なヘッダーを送信して、ユーザーがダウンロードできるようにする必要があります。
ファイルをバイトごとに読み取って印刷する方法と、ファイルをダウンロード可能にするために header() に何を書き込む必要があるか (したがって、その内容をコピーペーストする必要はありません)。
これは最善の方法ではないかもしれませんが、私が最近考えた最良の方法でした。
助けてくれてありがとう。