2

誰かがサインアップフォームを使用した場合にのみダウンロードのアクセスを制限できるようにしたい (送信後)。HTML/PHP は、コピー/貼り付けまたは投稿されたリンクからアクセスできません。

サーバー: サーバーの 「ダウンロード」フォルダーには、.htaccess ファイルがあり、

<Files download.pdf>
order deny,allow
deny from all
</Files>

Web サイト:フォームには、送信後、サインアップ情報を電子メール アドレスに送信する PHP contact-form-handler と、「Thank You - Here's Your Download html page.」へのリダイレクトがあります。このhtmlページに追加しました

<META http-equiv="refresh" content="1;URL=http://www.pathtofilehere/signupform.php">
<a rel="nofollow" href="http://www.pathtofilehere/signupform.php"> Get Your Download Now!</a>

「Thank You - Here's Your Download」ページで、PHP の自動ダウンロードが促されます。

<?php
$filename = "download.pdf";
if(ini_get('zlib.output_compression'))ini_set('zli b.output_compression', 'Off');
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"".basename($filename)."\";" );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($filename));
readfile("$filename");
exit();
?> 

私はテスターサーバーを使用しているため、「ダウンロード」をルートから移動できません。このセットアップが完了したら、ルートから移動します。もう 1 つの問題は、ウェブサイトの所有者がデータベースをセットアップしていないことです。したがって、この時点ではログインは機能しません。その間...

私がしたいこと:ダウンロードは、フォームの「送信」後にのみ利用できます。現在、html ページからダウンロードにアクセスできます。または PHP ページ。フォーラムでGateway PHP --> Protected File PHPを試しましたが、うまくいきませんでした。「サインアップした」人だけがこれを表示/アクセスできるようにするために、何らかのパラメーター、セッションをパススルーするように設定できますか?

本当にありがとう。

4

2 に答える 2

2

最も簡単な方法 (ログインなし) は、訪問者が送信を押したときに設定されるセッション変数を追加し、ダウンロード ページで存在を確認することです。

次のようなものを追加するだけです:

session_start();
$_SESSION['submitted'] = 'somevalue';

送信を処理するページの上部と:

session_start();
if (!isset($_SESSION['submitted']))
{
  // do whatever you want to do
  die();    // stop further execution
}

$filename = "download.pdf";
if(ini_get('zlib.output_compression'))ini_set('zli b.output_compression', 'Off');
header("Pragma: public");
....

投稿したダウンロードスクリプトの上部にあります。

ただし、サインアップについて話しているので、ユーザーが後でログインしてファイルを取得できるようにする機能を追加することもできます (サインアップがユーザー アカウントに関連している場合)。次に、ユーザーにログインしてもらい、ダウンロード ページの上部でログインしているユーザーを確認します。

于 2012-04-07T20:41:33.573 に答える
1

グローバル$_POST[]には、post メソッドのみを介して送信される特定のフォーム値が含まれます。

この変数に関するいくつかのチェックを使用してスクリプトをラップすると、解決策が得られる可能性があります。

安全を期すために、フォーム広告を介して送信されるある種のハッシュをレンダリングして、予想と比較することもできます。

于 2012-04-07T20:41:47.333 に答える