Bagaimana untuk membuang php bom

藏色散人
Lepaskan: 2023-03-14 11:00:02
asal
1595 orang telah melayarinya

Cara untuk membuang php bom: 1. Cari direktori akar PHP 2. Letakkan "function checkBOM($filename){...}" dan kod lain dalam direktori root, dan jalankannya melalui pelayar untuk mengaksesnya.

Bagaimana untuk membuang php bom

Persekitaran pengendalian artikel ini: sistem Windows 7, PHP versi 7.4, komputer Dell G3.

Bagaimana untuk membuang php bom?

Kaedah mudah untuk mengalih keluar BOM dalam PHP

/* 
 +------------------------------------------------------------------------------------------- 
 + Title        : 去掉BOM头方法 
 + Author       : hello_sgw 
 + Version      : V1.0.0.1 
 + Initial-Time : 2017-08-12 15:18
 + Last-time    : 2017-08-12 16:01
 + Desc         : 
 +------------------------------------------------------------------------------------------- 
*/
Salin selepas log masuk

Apabila saya memanggil antara muka, kerana saya menggunakan kaedah enkapsulasi yang disediakan oleh pihak lain, ralat terus ditunjukkan semasa mengeluarkan satu set data. Akhirnya, saya berpendapat bahawa kaedah yang diberikan oleh pihak lain mungkin mengandungi isu pengekodan (dengan pengepala BOM), jadi saya mencari kaedah dalam talian untuk mengesan BOM dan mengeluarkannya dan menjana semula fail baharu. data boleh dipaparkan seperti biasa.

Apakah itu pengepala BOM?

BOM --Byte Order Mark, nama Cina diterjemahkan sebagai "tanda pesanan bait". Dalam fail yang dikodkan utf-8, BOM berada dalam pengepala fail dan menduduki tiga bait untuk tandai fail. Ia tergolong dalam pengekodan UTF-8

Terdapat banyak perisian yang boleh mengecam pengepala BOM, tetapi sesetengahnya tidak dapat mengecam pengepala BOM Pengekodan UTF-8 dengan Notepad Sebab mengapa berlaku masalah.

Penyelesaian:

# 这里代码为PHP方式去除当前目录及字目录所有文件BOM信息,只要将此代码文件放到根目录下,然后浏览器运行访问就可以了
<?php
if (isset($_GET[&#39;dir&#39;])) { //设置文件目录 
  $basedir = $_GET[&#39;dir&#39;];
} else {
  $basedir = &#39;.&#39;;
}
 
$auto = 1;
checkdir($basedir);
 
function checkdir($basedir)
{
  if ($dh = opendir($basedir)) {
    while (($file = readdir($dh)) !== false) {
      if ($file != &#39;.&#39; && $file != &#39;..&#39;) {
        if (!is_dir($basedir . "/" . $file)) {
          echo "filename: $basedir/$file " . checkBOM("$basedir/$file") . " <br>";
        } else {
          $dirname = $basedir . "/" . $file;
          checkdir($dirname);
        }
      }
    }
    closedir($dh);
  }
}
function checkBOM($filename)
{
  global $auto;
  $contents  = file_get_contents($filename);
  $charset[1] = substr($contents, 0, 1);
  $charset[2] = substr($contents, 1, 1);
  $charset[3] = substr($contents, 2, 1);
  if (ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191) {
    if ($auto == 1) {
      $rest = substr($contents, 3);
      rewrite($filename, $rest);
      return ("<font color=&#39;red&#39;>BOM found, automatically removed.</font>");
    } else {
      return ("<font color=&#39;red&#39;>BOM found.</font>");
    }
  } else
    return ("BOM Not Found.");
}
 
function rewrite($filename, $data)
{
  $filenum = fopen($filename, "w");
  flock($filenum, LOCK_EX);
  fwrite($filenum, $data);
  fclose($filenum);
}
Salin selepas log masuk

Cadangan kajian: "Tutorial Video PHP"

Atas ialah kandungan terperinci Bagaimana untuk membuang php bom. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
bom
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!