Amaran PHP: Tidak boleh mengubah suai maklumat pengepala -Penyelesaian

WBOY
Lepaskan: 2023-06-25 09:44:01
asal
1203 orang telah melayarinya

Apabila anda menggunakan PHP untuk menulis tapak web atau halaman web, kadangkala anda mungkin menghadapi mesej ralat ini: Amaran PHP: Tidak boleh mengubah suai maklumat pengepala. Ralat ini biasanya disebabkan oleh cuba mengubah suai pengepala HTTP apabila mengeluarkan pengepala HTTP ke penyemak imbas sebelum menghantar kandungan. Masalah ini mungkin tidak kelihatan serius, tetapi ia boleh menyebabkan ralat yang tidak dapat diramalkan dalam kod PHP anda. Artikel ini menerangkan cara menyelesaikan masalah ini.

Apakah itu "header information"?

Sebelum memahami masalah ini, kita perlu tahu apa itu "header information". "Maklumat pengepala" ialah beberapa maklumat yang dihantar antara penyemak imbas dan pelayan web. Maklumat ini termasuk maklumat tentang pengekodan halaman, bahasa, masa tamat tempoh, kawalan cache, kuki, dsb. PHP membenarkan anda mengubah suai maklumat ini menggunakan fungsi header().

Analisis sebab

Apabila kod PHP perlu menggunakan fungsi header() untuk mengubah suai pengepala HTTP, enjin pelaksanaan PHP memerlukan tiada output sebelum pengepala HTTP dihantar ke penyemak imbas. Dalam PHP, terdapat banyak cara untuk mengeluarkan, seperti gema, cetakan, ruang, pemulangan pengangkutan dan suapan baris, dsb. Jika terdapat sebarang output sebelum pengepala HTTP dihantar, PHP akan menjana ralat "maklumat pengepala sudah dihantar". Inilah sebabnya Amaran PHP: Tidak boleh mengubah suai ralat maklumat pengepala berlaku.

Penyelesaian

Terdapat tiga cara untuk menyelesaikan masalah ini:

  1. Jangan mempunyai sebarang aksara yang tidak berguna seperti ruang, pemulangan pengangkutan atau suapan baris sebelum output

Sebelum mengeluarkan kandungan, anda perlu memastikan bahawa tiada aksara yang tidak berguna dalam kod seperti ruang, pemulangan pengangkutan, suapan baris, dsb. Ini kerana aksara ini juga menghasilkan output, menyebabkan output wujud sebelum pengepala HTTP dihantar, sekali gus mencetuskan ralat "maklumat pengepala sudah dihantar".

  1. Gunakan fungsi ob_start() dan ob_end_clean()

Fungsi ob_start() membuka penimbal output supaya semua output akan dicache dalam memori dan pengepala HTTP tidak akan dihantar ke penyemak imbas. Pada penghujung kod PHP, fungsi ob_end_clean() mengosongkan semua penimbal dan menghantar semua output ke penyemak imbas.

Kaedah menggunakan fungsi ob_start() dan ob_end_clean() adalah seperti berikut:

<?php
ob_start();
//Your PHP code
header('Location: http://www.example.com/');
ob_end_clean();
?>
Salin selepas log masuk

Dalam kod di atas, fungsi ob_start() membuka penimbal, fungsi header() menetapkan pengepala HTTP dan ob_end_clean( ) fungsi mengosongkan kawasan penimbal dan menghantar output ke penyemak imbas.

  1. Gunakan fungsi ob_start() dan ob_end_flush()

Menggunakan fungsi ob_start() dan ob_end_flush() adalah serupa dengan cara anda menggunakan fungsi ob_start() dan ob_end_clean(). Perbezaannya ialah fungsi ob_end_flush() menghantar kandungan penimbal ke penyemak imbas dan menutup penimbal. Apabila menggunakan pendekatan ini, anda perlu memastikan tiada output yang tidak berguna sebelum menghantarnya ke penyemak imbas.

Kaedahnya adalah seperti berikut:

<?php
ob_start();
//Your PHP code
header('Location: http://www.example.com/');
ob_end_flush();
?>
Salin selepas log masuk

Ringkasan

Apabila anda menghadapi ralat PHP Amaran: Tidak boleh mengubah suai maklumat pengepala, jangan panik, kerana ia sangat mudah untuk diselesaikan. Cuma pastikan tiada output sebelum menghantar pengepala HTTP, atau gunakan fungsi ob_start() dan ob_end_clean() atau fungsi ob_start() dan ob_end_flush(). Mesej ralat ini biasanya merupakan amaran dan bukannya ralat maut, jadi anda tidak perlu panik. Selagi anda mengikuti kaedah di atas, kod PHP anda akan berjalan seperti biasa.

Atas ialah kandungan terperinci Amaran PHP: Tidak boleh mengubah suai maklumat pengepala -Penyelesaian. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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