ホームページ >バックエンド開発 >PHPチュートリアル >非会員ユーザーがビデオや写真にアクセスできないようにするにはどうすればよいですか?

非会員ユーザーがビデオや写真にアクセスできないようにするにはどうすればよいですか?

WBOY
WBOYオリジナル
2016-06-23 13:38:541014ブラウズ

最も簡単に考えられるのは、次のとおりです。
リソース ファイルをパブリック ディレクトリの外に置き、これらのリソースへのすべてのアクセスは次のような統一された入り口を経由します。

http://xxx/file.php?video.mp3

これはサーバーに多大な負荷をかけますか?
何か良い方法はありますか?

アドバイスをお願いします


ディスカッションに返信 (解決策)

ファイル名を文字化けするか、MD5 を使用してください

ユーザー ID を保存してください元のファイル名 - データベース内の文字化けファイル 名前の対応関係は、呼び出し時に元のファイル名で文字化けを問い合わせてからダウンロードを提供し、ダウンロード名を元の名前に設定します

ファイル、ファイル名をスクランブルする、データベースにユーザーを保存するために文字化けまたは MD5 を使用する ID - 元のファイル名 - 文字化けしたファイル名の対応関係 呼び出し時に、元のファイル名を使用して文字化けコードをクエリします。ダウンロード用に提供されています。ダウンロード名を元の名前に設定するだけです

ダウンロード時に元のファイル名を設定するのは、直接ダウンロードするのと同じではありません。ダイレクトアクセスですか?

また、この方法を使用する場合、CDN を使用して高速化できますか?
PS: 現在、自分の投稿を編集することはできません


ファイルを保存すると、ファイル名が文字化けしてしまいます。

ユーザー ID - 元のファイル名 - 文字化けしたファイル名の対応関係をデータベースに保存し、呼び出し時に元のファイル名で文字化けしたコードをクエリし、ダウンロード名を元の名前に設定するだけです。


よくわからないのですが、ダウンロードするときに元のファイル名にしてください 直接ダウンロードするのと同じではないでしょうか?ダイレクトアクセスですか?


1 つは名前の重複の問題で、もう 1 つはファイル名を推測できないということです...または Web アクセスを拒否するようにサーバーを直接設定することもできません

Web サーバーにメンバーを知らせることができない限り、これは問題です。はい、効率の問題はテストしていませんが、メモリを一度読み取ってから出力ストリームに書き込むタイプでない限り、readfile を使用できるはずです。考えてみれば、ファイルへの HTTP アクセスも最初に Web サーバーの層を通過するため、損失は避けられません。
複雑なファイル名に基づいて、他の人はそれを記録して 2 回使用できます。

php を使用してファイルを取得し、Web 以外の取得可能なディレクトリにファイルを配置してから、php を使用してエクスポートし、php での制限を制御します。

例: Web サイトの宛先は /home/www/ です

<?phpif(判?是否有?限){    $file = '/home/file/aaa.jpg';    echo file_get_contents($file);}?>


まあ、これが何をするかのようです

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。