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();

Dalam PHP, sifat sesuai untuk situasi di mana penggunaan semula kaedah diperlukan tetapi tidak sesuai untuk warisan. 1) Ciri membolehkan kaedah multiplexing dalam kelas untuk mengelakkan pelbagai kerumitan warisan. 2) Apabila menggunakan sifat, anda perlu memberi perhatian kepada konflik kaedah, yang dapat diselesaikan melalui alternatif dan sebagai kata kunci. 3) Tua yang berlebihan harus dielakkan dan tanggungjawab tunggalnya harus dikekalkan untuk mengoptimumkan prestasi dan meningkatkan pemeliharaan kod.

Kontena Suntikan Ketergantungan (DIC) adalah alat yang menguruskan dan menyediakan kebergantungan objek untuk digunakan dalam projek PHP. Manfaat utama DIC termasuk: 1. Decoupling, membuat komponen bebas, dan kod itu mudah dikekalkan dan diuji; 2. Fleksibiliti, mudah untuk menggantikan atau mengubah suai kebergantungan; 3. Keseluruhan, mudah untuk menyuntik objek mengejek untuk ujian unit.

SplfixedArray adalah pelbagai saiz tetap dalam PHP, sesuai untuk senario di mana prestasi tinggi dan penggunaan memori yang rendah diperlukan. 1) Ia perlu menentukan saiz apabila membuat untuk mengelakkan overhead yang disebabkan oleh pelarasan dinamik. 2) Berdasarkan pelbagai bahasa C, secara langsung mengendalikan memori dan kelajuan akses cepat. 3) Sesuai untuk pemprosesan data berskala besar dan persekitaran sensitif memori, tetapi ia perlu digunakan dengan berhati-hati kerana saiznya tetap.

PHP mengendalikan fail muat naik melalui pembolehubah fail $ \ _. Kaedah untuk memastikan keselamatan termasuk: 1. Semak kesilapan muat naik, 2. Sahkan jenis dan saiz fail, 3. Mencegah penindasan fail, 4. Pindahkan fail ke lokasi storan tetap.

Dalam JavaScript, anda boleh menggunakan NullcoalescingOperator (??) dan NullcoalescingAssignmentOperator (?? =). 1.? Menerapkan semula operan pertama yang tidak berselisih atau tidak ditentukan. 2.?? Pengendali ini memudahkan logik kod, meningkatkan kebolehbacaan dan prestasi.

CSP adalah penting kerana ia boleh menghalang serangan XSS dan mengehadkan pemuatan sumber, meningkatkan keselamatan laman web. 1.CSP adalah sebahagian daripada tajuk tindak balas HTTP, mengehadkan tingkah laku berniat jahat melalui dasar yang ketat. 2. Penggunaan asas adalah untuk hanya membenarkan sumber pemuatan dari asal yang sama. 3. Penggunaan lanjutan boleh menetapkan lebih banyak strategi halus, seperti membenarkan nama domain tertentu untuk memuat skrip dan gaya. 4. Gunakan header-surcury-policy-report-only header untuk debug dan mengoptimumkan dasar CSP.

Kaedah permintaan HTTP termasuk GET, POST, PUT dan DELETE, yang digunakan untuk mendapatkan, menghantar, mengemas kini dan memadam sumber masing -masing. 1. Kaedah GET digunakan untuk mendapatkan sumber dan sesuai untuk operasi membaca. 2. Kaedah Pos digunakan untuk menyerahkan data dan sering digunakan untuk membuat sumber baru. 3. Kaedah Put digunakan untuk mengemas kini sumber dan sesuai untuk kemas kini lengkap. 4. Kaedah Padam digunakan untuk memadam sumber dan sesuai untuk operasi penghapusan.

HTTPS adalah protokol yang menambah lapisan keselamatan berdasarkan HTTP, yang terutamanya melindungi privasi pengguna dan keselamatan data melalui data yang disulitkan. Prinsip kerjanya termasuk jabat tangan TLS, pengesahan sijil dan komunikasi yang disulitkan. Apabila melaksanakan HTTPS, anda perlu memberi perhatian kepada pengurusan sijil, kesan prestasi dan isu kandungan campuran.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Pelayar Peperiksaan Selamat
Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

SublimeText3 versi Inggeris
Disyorkan: Versi Win, menyokong gesaan kod!

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma