1

それは何をしますか?

  1. PDF ファイルへのすべてのリクエストは、 htaccessによって validation.phpにリダイレクトされます。
  2. validation.phpはログを取ります。
  3. validation.phpは、ユーザーがログインしているかどうかを検証します。
  4. ログインしていない場合は、ユーザーを追い出します。ログインするとPDFファイルが表示されます。

問題: htaccess の動作が原因で、明らかに 4 番目のステップ (ログインした場合は PDF ファイルを表示) が失敗します。

質問:この問題を解決するにはどうすればよいですか?

ありがとう

HTACCESS:

RewriteEngine On
RewriteCond %{REQUEST_URI} \.(pdf)$ [NC]
RewriteRule ^(.*)$ /validate.php?filename=$1 [L]

検証.php:

//STEP 1) Take a log
$file = 'log.txt';
$current = file_get_contents($file);
$current .= (isset($_GET['filename'])) ? $_GET['filename'] : '?';
$current .= " --- " . date('H:i:s') . "\n";
file_put_contents($file, $current);


//STEP 2) Authenticate login
session_start();

if (! isset($_SESSION['user']))
{
    session_write_close();
    header ('Location: /login.php');
    exit();
}
else
{
    //User should be eble to see the PDF file now.
}
4

1 に答える 1

2

この//User should be eble to see the PDF file now.ステップでは、ユーザーを pdf ファイルにリダイレクトする代わりに、単純にファイルを出力します。次のようなものです:

$file = $_GET['filename'];
$filename = basename($file);

header('Content-type: application/pdf');
header('Content-Disposition: inline; filename="' . $filename . '"');
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($file));
header('Accept-Ranges: bytes');

@readfile($file);
于 2013-11-14T17:42:59.130 に答える