PHP アンチホットリンク外部リソース ダウンロード処理クラス
PHP アンチホットリンク外部リソース ダウンロード処理クラス
以下は、簡単な自作の PHP アンチホットリンク処理クラスです (後の改善のためにクラス ファイルに再編成されています)。
/** * * 防盗链外部资源下载处理类 */ class BurglarDow{ /** * 初始许可下载状态 * @var allow * @access private */ private $allow = false; /** * 初始下载地址 * @var dowUrl * @access private */ private $dowUrl = null; /** * 初始来路域名 * @var RemoteUrl * @access private */ private $RemoteUrl = null; /** * 初始许可资源取用域名列表 * @var allowUrl * @access private */ private $allowUrl = array(); /** * 初始转跳地址 * @var Location * @access private */ private $Location = null; public function __construct($dowUrl,$Location,array $allowUrl){ // 初始下载地址 $this->dowUrl = $dowUrl; // 初始许可资源取用域名列表 $this->allowUrl = $allowUrl; // 初始转跳地址 $this->Location = $Location; $this->RemoteUrl = @parse_url($_SERVER['HTTP_REFERER']); // 获取来路域名 if(!is_array($this->RemoteUrl)) header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$this->Location); if(isset($this->RemoteUrl['host'])){ if(in_array($this->RemoteUrl['host'],$this->allowUrl)){ // 判断是否来至许可域名 $this->allow = true; // 下载许可状态为:真 } } unset($this->allowUrl,$this->RemoteUrl); // 释放内存变量 } /** * 防盗链资源下载 * @access public * @return mixed */ public function dow(){ $FileInfo = get_headers($this->dowUrl,1); // 获取远程文件头部信息 if(true === $this->allow){ // 判断是否许可下载资源 //判断配置文件是否存在 if(is_file('Config.ini')){ $FileCon = parse_ini_file('Config.ini'); }else{ $FileName = basename($FileInfo['Content-Location']); $FileConStr = "FileName = {$FileName}\r\nFileUrl = {$FileInfo['Content-Location']}\r\nFileSize = {$FileInfo['Content-Length']}"; $handle = fopen ('Config.ini', "wb"); // Config.ini文件不存在则创建文件 if (fwrite ($handle, $FileConStr) == FALSE) { // 数据写入文件 echo "File creation failed ..."; } fclose ($handle); // 关闭一个已打开的文件指针 $FileCon = parse_ini_file('Config.ini'); } if(!empty($$this->dowUrl)){ $fp = @fopen($$this->dowUrl, "rb"); // 二进制模式读取文件 if (!$fp) exit("Download a mistake.\n\n"); // 输出远程资源 header("Content-type:text/html;charset=utf-8"); header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename='.$FileCon['FileName']); header("Accept-Ranges: bytes"); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control:must-revalidate,post-check=0,pre-check=0'); header('Pragma: public'); header('Content-Length: '.$FileCon['FileSize']); while (!feof($fp)){ set_time_limit(0); // 设置文件最长执行时间 echo fread($fp, 1024); // 输出文件 flush(); // 输出缓冲 ob_flush(); // 输出缓冲区中的内容 } fclose($fp); }else{ header("HTTP/1.1 404 Not Found"); } }else{ header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$this->Location); } } } // 远程资源地址 $dowUrl = 'http://dldir1.qq.com/qqfile/qq/QQ5.1/10055/QQ5.1.exe'; // 转跳地址 $Location = 'http://www.scutephp.com'; // 许可来路域名列表 $allowUrl = array( 'blog.emtalk.net', ); $BurglarDow = new BurglarDow($dowUrl,$Location,$allowUrl); $BurglarDow -> dow();

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。
