Rumah > pembangunan bahagian belakang > masalah PHP > Apa yang perlu dilakukan jika aliran binari php mengeluarkan aksara yang bercelaru

Apa yang perlu dilakukan jika aliran binari php mengeluarkan aksara yang bercelaru

藏色散人
Lepaskan: 2023-03-17 07:50:01
asal
2014 orang telah melayarinya

Penyelesaian kepada keluaran bercelaru aliran binari PHP: 1. Buka fail "conn.php" dan "print.php" setempat 2. Gunakan "ob_clean" untuk mengosongkan kandungan pengepala dan mengubah suai kod tersebut sebagai "mysql_close(); ob_clean();header("Content-type:$type");".

Apa yang perlu dilakukan jika aliran binari php mengeluarkan aksara yang bercelaru

Persekitaran pengendalian tutorial ini: sistem Windows 7, PHP versi 8.1, komputer Dell G3.

Apakah yang perlu saya lakukan jika strim binari php mengeluarkan aksara yang bercelaru?

Baru-baru ini, saya menggunakan PHP untuk membangunkan untuk membaca dan mengeluarkan fail binari daripada mysql, dan menghadapi masalah dengan aksara yang bercelaru.

Secara amnya, kaedah berikut digunakan untuk mengeluarkan fail binari:

<?php
if(!isset($id) or $id=="") die("error: id none");
//定位记录,读出
$conn=mysql_connect("127.0.0.1","***","***");
if(!$conn) die("error : mysql connect failed");
mysql_select_db("test",$conn);
$sql = "select * from receive where id=$id";
$result = mysql_query($sql);
$num=mysql_num_rows($result);
if($num<1) die("error: no this recorder");
$data = mysql_result($result,0,"file_data");
$type = mysql_result($result,0,"file_type");
$name = mysql_result($result,0,"file_name");
mysql_close($conn);
//先输出相应的文件头,并且恢复原来的文件名
header("Content-type:$type");
header("Content-Disposition: attachment; filename=$name");
echo $data;
?>
Salin selepas log masuk

Tiada masalah menggunakan kaedah di atas. Tetapi jika anda merangkum sambungan pangkalan data dalam fail berasingan, akan ada masalah. Tulis semula kod di atas ke dalam 2 fail:

//conn.php
<?php
function Open_DB(){
$conn=mysql_connect("127.0.0.1","***","***");
if(!$conn) die("error : mysql connect failed");
mysql_select_db("test",$conn);
}
?>
Salin selepas log masuk
//print.php
<?php
if(!isset($id) or $id=="") die("error: id none");
//定位记录,读出
require_once(&#39;conn.php&#39;);
Open_DB();
$sql = "select * from receive where id=$id";
$result = mysql_query($sql);
$num=mysql_num_rows($result);
if($num<1) die("error: no this recorder");
$data = mysql_result($result,0,"file_data");
$type = mysql_result($result,0,"file_type");
$name = mysql_result($result,0,"file_name");
mysql_close();
header("Content-type:$type");
header("Content-Disposition: attachment; filename=$name");
echo $data;
?>
Salin selepas log masuk

Pada masa ini, apabila memanggil print.php untuk membuka fail perkataan, aksara bercelaru akan dijana. Masalahnya terletak pada pernyataan "require_once('conn.php')". Apabila PHP memanggil pernyataan ini, ia akan dikeluarkan dalam pengepala, yang mempengaruhi dua pernyataan pengepala berikut, dengan itu memusnahkan aliran data fail perkataan. Oleh itu, fail perkataan yang dibuka akan bercelaru.

Penyelesaiannya ialah menggunakan ob_clean untuk mengosongkan kandungan pengepala. Print.php yang ditulis semula adalah seperti berikut

//print.php
<?php
if(!isset($id) or $id=="") die("error: id none");
//定位记录,读出
require_once(&#39;conn.php&#39;);
Open_DB();
$sql = "select * from receive where id=$id";
$result = mysql_query($sql);
$num=mysql_num_rows($result);
if($num<1) die("error: no this recorder");
$data = mysql_result($result,0,"file_data");
$type = mysql_result($result,0,"file_type");
$name = mysql_result($result,0,"file_name");
mysql_close();
ob_clean();
header("Content-type:$type");
header("Content-Disposition: attachment; filename=$name");
echo $data;
?>
Salin selepas log masuk

Pembelajaran yang disyorkan: "Tutorial Video PHP"

Atas ialah kandungan terperinci Apa yang perlu dilakukan jika aliran binari php mengeluarkan aksara yang bercelaru. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
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