Navigasi pantas pada halaman ini:
Jika anda memutuskan untuk menulis skrip dan mengubah hala PHP, kelebihan langkah ini adalah jelas: PHP ialah bahasa skrip berorientasikan pelayan; ubah hala akan dilakukan melalui skrip pada pelayan, dan bukan dalam pelayar pelawat. Beberapa ubah hala boleh dilakukan pada sisi klien - melalui ubah hala js (iaitu, melalui ubah hala JavaScript).
Ini adalah pendekatan yang lebih fleksibel dan serba boleh dan anda boleh melakukan pelbagai jenis ubah hala dalam PHP, tidak seperti kaedah lain. Berikut ialah jenis ubah hala yang paling biasa yang boleh dilakukan dalam PHP: a) 301 PHP redirect (permanent redirect status), b) 302 PHP redirect (temporary redirect status), c) Update.
Artikel ini akan berguna terutamanya untuk juruweb pemula yang mencari cara untuk melaksanakan pengalihan URL jika tidak mungkin menggunakan penyelesaian biasa lain seperti Htaccess.
Pengepala bahasa fungsi PHP
Sebagai contoh, katakan anda ingin mengubah hala ke URL ini http://www.somewebsite.com/target.php. Dalam PHP sumber halaman, anda hanya perlu memanggil skrip ubah hala ini:
Cuba juga percubaan mudah ini pada pengehosan tempatan anda:
1) Buka editor teks dan masukkan kod ini:
Simpan sebagai targetpage.php.
2) Buka fail teks kosong yang lain dan masukkan kod ini:
Simpan sebagai originatingpage.php.
3) Sekarang lancarkan pelayar web anda. Dalam bar alamat penyemak imbas anda, masukkan: http://localhost/originatingpage.php
4) Anda akan perasan bahawa selepas menekan butang enter, URL ini: http://localhost/originatingpage.php mengubah hala ke http://localhost/targetpage.php dan ke targetpage.php, dan anda melihat perkataan “Hai ini codex” -x".
Salah satu kesilapan yang paling biasa boleh disembunyikan dalam reka bentuk kod ubah hala html:
Cuba percubaan ini:
Pergi ke skrip originatingpage.php dan tambah sebarang teg HTML:
header('Lokasi: http://localhost/targetpage.php');
Katakan anda mempunyai kod seperti ini:
2) Simpan fail.
3) Jalankan skrip originating.php sekali lagi dalam . Jika anda tidak melihat sebarang ralat, anda akan dapati bahawa ia masih mengubah hala dengan bersih ke targetpage.php
4) Sekarang cuba tukar URL sasaran untuk menghala ke tapak sebenar, contohnya:
5) Muat naik originatingpage.php ke pengehosan jauh dalam direktori akar tapak.
6) Jalankan skrip dalam pelayar dengan memanggil URL originatingpage.php, contohnya: http://www.php-developer.org/originatingpage.php
7) Anda akan melihat bahawa kali ini, anda akan menghadapi ralat:
Amaran: Tidak boleh mengubah suai maklumat pengepala - pengepala telah dihantar oleh (output dimulakan di /home/phpdevel/public_html/originatingpage.php:6) dalam /home/phpdevel/public_html/originatingpage.php pada baris 7
Apa yang berlaku di sini? Sebab masalahnya ialah anda sudah mempunyai output kod HTML sebelum pengepala fungsi.
Apakah faedah ubah hala?
Dengan ubah hala, anda boleh mengubah hala pengguna dari satu halaman web ke halaman web yang lain. Selain itu, jika, sebagai contoh, di tapak web anda, teks pautan ke artikel dalam bentuk yang tidak sedap dipandang (satu set nombor atau simbol), ia boleh diubah dengan menggunakan transliterasi dan mengubah hala ke pautan ini. Kemungkinan pengalihan adalah hampir tidak terhad! Faedah kaedah ini untuk meningkatkan pengindeksan halaman, meningkatkan prestasi tapak dan menarik pengguna adalah jelas.
(PHP 4, PHP 5, PHP 7)
pengepala — Hantar pengepala HTTP mentah
Penerangan
kepala (rentetan $header [, bool $ganti = BENAR [, int $http_response_code ]]) : batal
kepala() digunakan untuk menghantar pengepala HTTP mentah. Lihat » spesifikasi HTTP/1.1 untuk mendapatkan maklumat lanjut tentang pengepala HTTP.
Ingat itu kepala() mesti dipanggil sebelum sebarang output sebenar dihantar, sama ada dengan tag HTML biasa, baris kosong dalam fail atau daripada PHP. Ia adalah ralat yang sangat biasa untuk membaca kod dengannya termasuk, atau memerlukan, fungsi, atau fungsi capaian fail lain, dan mempunyai ruang atau baris kosong yang dikeluarkan sebelum ini kepala() dipanggil. Masalah yang sama wujud apabila menggunakan fail PHP/HTML tunggal.
/* Ini akan memberikan ralat. Perhatikan output
* di atas, iaitu sebelum panggilan header() */
kepala();
keluar;
?>
Parameter
Rentetan pengepala.
Terdapat dua panggilan pengepala kes khas. Yang pertama ialah pengepala yang bermula dengan rentetan " HTTP/" (kes tidak penting), yang akan digunakan untuk mengetahui kod status HTTP untuk dihantar. Contohnya, jika anda telah mengkonfigurasi Apache untuk menggunakan skrip PHP untuk mengendalikan permintaan untuk fail yang hilang (menggunakan ErrorDocument arahan), anda mungkin ingin memastikan bahawa skrip anda menghasilkan kod status yang betul.
header("HTTP/1.0 404 Not Found");
?>
Kes khas kedua ialah pengepala "Lokasi:". Ia bukan sahaja menghantar pengepala ini kembali ke penyemak imbas, tetapi ia juga mengembalikan a UBAH ARAH(302) kod status kepada penyemak imbas melainkan jika 201 atau a 3xx kod status telah pun ditetapkan.
kepala ( "Lokasi: http://www.example.com/"); /* Ubah hala pelayar */
/* Pastikan kod di bawah tidak dapat dilaksanakan apabila kami mengubah hala. */
keluar;
?>
Gantikan
Parameter ganti pilihan menunjukkan sama ada pengepala harus menggantikan pengepala serupa sebelumnya atau menambah pengepala kedua daripada jenis yang sama. Secara lalai ia akan menggantikan, tetapi jika anda masuk SALAH sebagai hujah kedua anda boleh memaksa berbilang tajuk daripada jenis yang sama. Sebagai contoh:
header("WWW-Authenticate: Runding");
pengepala ("WWW-Authenticate: NTLM" , false );
?>
Http_response_code
Memaksa kod respons HTTP kepada nilai yang ditentukan. Ambil perhatian bahawa parameter ini hanya mempunyai kesan jika pengepala tidak kosong.
Nilai Pulangan
Tiada nilai dikembalikan.
Changelog
Versi | Penerangan |
---|---|
5.1.2 | Fungsi ini kini menghalang lebih daripada satu pengepala dihantar sekaligus sebagai perlindungan terhadap serangan suntikan pengepala. |
Contoh
Contoh #1 Muat turun dialog
Jika anda mahu pengguna digesa untuk menyimpan data yang anda hantar, seperti fail PDF yang dijana, anda boleh menggunakan » Pengepala Pelupusan Kandungan untuk membekalkan nama fail yang disyorkan dan memaksa penyemak imbas memaparkan dialog simpan.
// Kami akan mengeluarkan PDF
kepala ( "Jenis Kandungan: aplikasi/pdf");
// Ia akan dipanggil downloaded.pdf
kepala ( "Content-Disposition: attachment; filename="downloaded.pdf"");
// Sumber PDF adalah dalam original.pdf
readfile("original.pdf");
?>
Contoh #2 Arahan caching
Skrip PHP sering menjana kandungan dinamik yang tidak boleh dicache oleh penyemak imbas klien atau mana-mana cache proksi antara pelayan dan pelayar klien. Banyak proksi dan pelanggan boleh dipaksa untuk melumpuhkan caching dengan:
kepala ( "Kawalan Cache: tiada cache, mesti sahkan semula"); // HTTP/1.1
kepala ( "Tamat tempoh: Sabtu, 26 Jul 1997 05:00:00 GMT"); // Tarikh pada masa lalu
?>
Anda mungkin mendapati halaman anda tidak dicache walaupun anda tidak mengeluarkan semua pengepala di atas. Terdapat beberapa pilihan yang pengguna mungkin boleh tetapkan untuk penyemak imbas mereka yang mengubah tingkah laku caching lalainya. Dengan menghantar pengepala di atas, anda harus mengatasi sebarang tetapan yang mungkin menyebabkan output skrip anda dicache.
"Versi usang spesifikasi HTTP 1.1 (IETF RFC 2616) memerlukan URI mutlak yang lengkap untuk pengalihan. Kumpulan kerja HTTP IETF mendapati bahawa pelayar web paling popular bertolak ansur dengan penghantaran URL relatif dan, akibatnya, spesifikasi HTTP 1.1 yang dikemas kini (IETF RFC 7231) melonggarkan kekangan asal, membenarkan penggunaan URL relatif dalam pengepala Lokasi."
Penyelesaian: jangan hantar pengepala tersebut.
Juga, ambil perhatian bahawa IE versi 5, 6, 7 dan 8 dua kali memampatkan fail yang sudah dimampatkan dan jangan membalikkan proses dengan betul, jadi fail ZIP dan yang serupa rosak semasa muat turun.
Penyelesaian: lumpuhkan pemampatan (di luar teks/html) untuk versi tertentu IE ini, cth., menggunakan arahan "BrowserMatch" Apache. Contoh berikut melumpuhkan pemampatan dalam semua versi IE:
BrowserMatch ".*MSIE.*" gzip-only-text/html
4. URI relatif TIDAK dibenarkan
salah: Lokasi: /something.php?a=1
salah: Lokasi: ?a=1Ia akan menjadikan pelayan proksi dan klien http lebih gembira.
15 tahun yang lalu
Jika anda belum pernah menggunakan, HTTP Response 204 boleh menjadi sangat mudah. 204 memberitahu pelayan untuk menamatkan permintaan ini dengan serta-merta. Ini berguna jika anda mahukan fungsi sisi klien javascript (atau serupa) untuk melaksanakan fungsi bahagian pelayan tanpa menyegarkan atau menukar halaman web semasa. Bagus untuk mengemas kini pangkalan data, menetapkan pembolehubah global, dsb.
Pengepala("status: 204"); (atau panggilan lain)
header("HTTP/1.0 204 Tiada Respons");15 tahun yang lalu
Panggilan ke session_write_close() sebelum pernyataan
header("Lokasi: URL");
keluar();
?>
disyorkan jika anda ingin memastikan sesi dikemas kini sebelum meneruskan ke ubah hala.Kami menghadapi situasi di mana skrip yang diakses oleh ubah hala tidak memuatkan sesi dengan betul kerana skrip terdahulu tidak mempunyai masa untuk mengemas kininya (kami menggunakan pengendali pangkalan data).
9 bulan lepas
// Berhati-hati bahawa menambah ruang antara kata kunci "Lokasi" dan kolon menyebabkan Ralat Pemutus Dalaman
//Barisan ini menyebabkan ralat
7
header("Lokasi: index.php&controller=produit&action=index");// Manakala Ia mesti ditulis tanpa ruang
header("Lokasi: index.php&controller=produit&action=index");1 tahun lepas
Panggilan pengepala boleh mengelirukan pengguna php pemula.
apabila "panggilan pengepala" dinyatakan, ia merujuk kepada kedudukan paling kiri atas fail dan bukan fungsi "header()" itu sendiri.
"10 tahun lepas
Berikut ialah skrip php yang saya tulis untuk menstrim fail dan menyalinnya dengan operasi xor pada bait dan dengan kunci:
Penyulitan berfungsi dengan baik tetapi kelajuannya berkurangan sebanyak 2, ia kini 520KiB/s. Pengguna kini diminta untuk kata laluan md5 (bukannya menyimpannya dalam kod secara langsung). Terdapat beberapa bahagian dalam bahasa Perancis kerana ia adalah bahasa ibunda saya jadi ubah suai mengikut kehendak anda.
// Strim fail dan menyulitkan data dengan segera
//Tetapan
// -- Fail untuk distrim
$file = "FILE_out" ;
// -- Penampan bacaan
$bufferlength = 3840 ;
// -- Masukkan hex
//$keychar = "9cdfb439c7876e703e307864c9167a15";// Fungsi: Tukar kunci hex dalam rentetan kepada binari
fungsi hex2bin ($h ) (
if (! is_string ($h )) return null ;
$r = array();
untuk ($a = 0 ; ($a * 2 )< strlen ($h ); $a ++) {
$ta = hexdec ($h [ 2 * $a ]);
$tb = hexdec ($h [(2 * $a + 1 )]);
$r [ $a ] = (int) (($ta<< 4 ) + $tb );
}
pulangkan $r ;
}// Berfungsi untuk menghantar pengepala auth
function askPassword ($text = "Masukkan kata laluan") (
kepala ( "WWW-Sahkan: Alam asas="". utf8_decode($teks). """ );
header("HTTP/1.0 401 Tidak Diizinkan");
pulangan 1;
}// Kunci ditanya pada permulaan pertama
jika (!isset ($_SERVER [ "PHP_AUTH_PW" ])) (
askPassword();
bergema "Une clé est nécessaire!
" ;
keluar;
}
// Dapatkan kunci dalam hex
$keychar = $_SERVER [ "PHP_AUTH_PW" ];// Tukar kunci dan tetapkan saiz kunci
$key = hex2bin ($keychar );
$keylength = count($key);
// Teste si la clé est valide en hex
if ($key == "" || $keylength<= 4 ) {
askPassword("Clé salah!");
//echo "Clé salah!
";
keluar();
}
// Teste si la clé est de longueur d"une puissance de 2
jika (($keylength % 2 ) != 0 ) (
askPassword ( "Clé de longueur salah (berbilang keunikan 2)");
//echo "Clé de longueur tidak betul (puissance de 2 keunikan)
";
keluar();
}//Pengepala
kepala ( "Jenis Kandungan: aplikasi/strim oktet; ");
kepala ( "Pengekodan-Pemindahan-Kandungan: binari");
header("Content-Length: " . filesize($file) . "; " );
header("nama fail=\"" . $file . "\"; " );
flush(); // ini tidak penting.// Membuka fail dalam baca sahaja
$fp = fopen($file, "r");
manakala (! feof ($fp ))
{
// Baca saiz penimbal bagi fail
$buffer = fread ($fp, $bufferlength);
$j = 0 ;
untuk ($i = 0; $i< $bufferlength ; $i ++) {
// Kekunci dibaca dalam gelung untuk menyulitkan keseluruhan fail
jika ($i % $panjang kunci == 0 ) (
$j = 0 ;
}
// Gunakan operasi xor antara kunci dan fail untuk menyulitkan
// Operasi ini memakan banyak masa CPU (Strim pada 1MiB/s pada pelayan saya; Intel E2180)
$tmp = pack("C", $key[$j]);
$bufferE = ($buffer [ $i ]^ $tmp ); //<==== Le fameux XOR/*
bergema"
kunci [".$j."]: ";
var_dump($tmp);
bergema"
penimbal[".$i."]: ";
var_dump($buffer[$i]);
bergema"
penimbalE: ";
var_dump($bufferE);
bergema"
";
//*/// Hantar data yang disulitkan
12:06 tengahari - Bagaimana untuk mengubah hala pengguna ke halaman lain?
echo $bufferE ;
// Bersihkan memori
$bufferE = "" ;
$j++;
}
$buffer = "" ;
flush(); // ini penting untuk muat turun yang besar
/*
fclose($fp);
keluar();
//*/
}
// Tutup fail dan ia selesai
fclose($fp);Terdapat beberapa penyelesaian:
1) javascript
2) HTML
3) php
4) .htaccess
1) berikut adalah contoh kod dalam javascript:Taip="text/javascript">
Apa yang anda perlu lakukan ialah mencipta fail index.htm (atau index.html atau index.php - SATU daripadanya! ini penting) dan letakkan kod di dalamnya, selepas menggantikan http://www.mysite.com/ dengan alamat tapak anda.
Anda boleh menentukan laluan ke folder atau terus ke fail, contohnya http://www.mysite.com/cat/file.phpPenyemak imbas pengguna akan segera* diubah hala ke halaman yang anda tentukan.
*jika penyemak imbas menyokong ubah hala. Kini hampir semua pelayar menyokong pengalihan, melainkan pelayar dikonfigurasikan dengan bijak oleh pengguna =)Untuk menunjukkan kepada pengguna mesej sebelum mengubah hala, gunakan versi skrip yang berbeza:
type="text/javascript">
Anda kini akan terharu!
%Jika penyemak imbas anda tidak menyokong pengalihan, klik di sini: %DI SINI
http://somesite2.com/ -- gantikan dengan alamat tapak anda.
2) Untuk mengubah hala pelayar pengguna menggunakan HTML, gunakan teg META:
http://www.blahblahblahsite.com/ -- gantikan dengan alamat tapak web anda
10 - bermakna penyemak imbas akan diubah hala selepas 10 saat.
Tetapkan kepada 0 untuk ubah hala segera.
Jika anda menetapkan tamat masa, maka dalam fail anda boleh meninggalkan mesej kepada pengguna, contohnya:
Dalam 10 saat anda akan diangkut!
Jika penyemak imbas anda tidak menyokong ubah hala, klik di sini: %DI SINI
3) Ubah hala segera menggunakan PHP:
http://myownsite.com/folder/ -- gantikan dengan alamat tapak atau halaman anda.
Kod tersebut hendaklah diletakkan dalam fail dengan sambungan .php, contohnya index.php4) Ubah hala segera menggunakan .htaccess:
Seperti mana-mana program, pelayan web mempunyai tetapan tertentu. Tetapi, anda, sebagai pengguna Apache, mungkin tidak mempunyai hak untuk menukar konfigurasi Apache melalui fail utamanya, yang kesannya terpakai kepada semua pengguna pelayan ini. Tetapi, anda boleh menukar beberapa fail konfigurasi, yang hanya digunakan pada tapak anda. Salah satu daripada fail ini ialah .htaccess
Ini ialah fail konfigurasi yang fleksibel untuk pelayan web Apache. "Fleksibel" bermaksud sebaik sahaja anda menukar sesuatu dalam fail ini, perubahan itu serta-merta berkuat kuasa. Sebenarnya, tujuan fail .htaccess adalah untuk menyediakan cara untuk mengkonfigurasi Apache untuk pengguna yang tidak boleh menukar fail konfigurasi utama httpd.conf (fail ini ialah fail konfigurasi utama pelayan Apache dan tindakannya terpakai sepenuhnya kepada semua pengguna salinan Apache yang diberikan).
Fail ini tidak boleh diakses oleh pengguna web daripada penyemak imbas. Jika fail .htaccess terletak dalam direktori akar pelayan, maka tindakannya terpakai pada keseluruhan pelayan, kecuali untuk folder tersebut di mana fail .htaccess lain terletak (dan kecuali untuk semua folder "di bawah" folder ini dengan . htaccess).
Konfigurasi fail .htaccess boleh membantu anda dalam banyak situasi, tetapi walaupun ralat sintaks yang sedikit (seperti kehilangan ruang yang diperlukan) boleh menyebabkan kandungan tapak anda dipaparkan secara tidak betul atau tidak sama sekali. Memandangkan .htaccess ialah fail sistem tersembunyi, sila pastikan klien FTP anda dikonfigurasikan untuk menunjukkan fail tersembunyi.
Buat fail teks kosong menggunakan editor teks seperti Notepad dan simpan sebagai htaccess.txt. Sebab anda perlu menyimpan fail sebagai htaccess.txt ialah banyak sistem pengendalian dan aplikasi FTP tidak boleh membaca fail .htaccess secara lalai. Selepas memuat naik ke pelayan, anda boleh menamakan semula fail kepada .htaccess.
Ubah hala keseluruhan tapak ke mana-mana domain lain (contohnya, example.net diubah hala ke example.com).
Sesiapa sahaja boleh menghantar. Tetapi mengubah hala dengan betul adalah seni keseluruhan. Tetapi mengubah hala pengguna ke laluan yang betul di Internet adalah lebih sukar. Ubah hala ke php paling sesuai untuk ini.
Apakah jenis ubah hala?
Dalam pengaturcaraan web, situasi timbul apabila anda perlu mengubah hala pengguna mengikut pautan ke alamat lain. Sudah tentu, pada pandangan pertama, melaksanakan ubah hala sedemikian kelihatan sedikit "tidak sah." Dalam praktiknya, ubah hala seperti itu diperlukan bukan sahaja dalam kalangan penyerang, tetapi juga dalam kalangan juruweb yang jujur:
Dalam kes apakah ubah hala diperlukan:
- Apabila enjin tapak diganti, seni bina keseluruhan sumber berubah akibatnya. Kemudian timbul masalah bagaimana untuk membuat ubah hala;
- Apabila struktur sumber dilukis semula, keseluruhan bahagian atau satu bahan ditambah, dipadam atau dipindahkan. Semasa proses ini berlaku, adalah mungkin untuk mengubah hala pengguna ke bahagian yang dikehendaki buat sementara waktu;
- Jika tapak telah menukar nama domainnya baru-baru ini, selepas menukar nama domain, yang lama masih akan muncul dalam hasil carian untuk beberapa lama. Dalam kes ini, pengguna akan diubah hala ke domain baharu secara automatik oleh enjin carian;
- Semasa proses kebenaran, sebagai peraturan, di tapak web yang besar terdapat dua kumpulan pengguna: pelawat biasa dan pentadbir sumber. Dalam kes ini, masuk akal untuk melaksanakan ubah hala untuk setiap pengguna mengikut hak dan peranannya. Selepas kebenaran, pentadbir tapak atau penyederhana pergi ke bahagian pentadbiran sumber, dan pelawat pergi ke bahagian pengguna sumber.
Ciri-ciri ubah hala ke php
Tidak seperti bahasa lain, PHP mempunyai beberapa kelebihan dalam melaksanakan ubah hala:
- Php ialah bahasa pengaturcaraan sebelah pelayan. Oleh itu, pengalihan tidak akan berlaku dalam kod html halaman yang dipaparkan dalam penyemak imbas, tetapi dalam skrip yang terletak pada pelayan;
- Pengalihan ke php boleh dilaksanakan dalam beberapa cara. Yang sangat meluaskan aplikasinya;
- Disebabkan oleh pemprosesan data pada pelayan, pengalihan yang dilaksanakan menggunakan PHP kurang terdedah kepada kesan penapis enjin carian.
Untuk mengubah hala dalam PHP, fungsi header() digunakan. Ia digunakan untuk menghantar tajuk http. Sintaksnya ialah:
pengepala void (rentetan $string [, bool $replace = true [, int $http_response_code ]])
Hujah yang diterima oleh fungsi:
- rentetan $rentetan– baris pengepala;
Terdapat dua jenis hujah ini. Yang pertama adalah untuk menghantar kod status sambungan. Ia bermula dengan "HTTP/". Jenis lain menghantar kod status (REDIRECT 302) kepada penyemak imbas klien bersama-sama dengan pengepala. Argumen ini bermula dengan "Lokasi:"
- bool $replace ialah atribut pilihan jenis bool . Bertanggungjawab untuk mengatasi tajuk sebelumnya. Jika ditetapkan kepada true , pengepala atau pengepala sebelumnya daripada jenis yang sama akan diganti. Jika hujah ditetapkan kepada false , maka pengepala tidak akan ditulis semula. Secara lalai, nilai ini ditetapkan kepada benar ;
- http_response_code – hujah memaksa kod respons HTTP. Pemasangan kod akan berjaya dengan syarat hujah rentetan tidak kosong.
Kod status HTTP adalah sebahagian daripada baris teratas respons pelayan. Kod ini terdiri daripada tiga nombor, diikuti dengan teks penerangan dalam bahasa Inggeris. Digit pertama bertanggungjawab untuk kelas status. Ubah hala sepadan dengan kod dari 300 hingga 307. Penerangan penuh mereka boleh didapati dalam dokumentasi teknikal yang sepadan.
Apabila menggunakan fungsi header() untuk mengubah hala pautan luaran, lokasi panggilannya adalah sangat penting. Dalam kod ia harus terletak di atas semua teg html:
Menggunakan ubah hala pengepala().
Untuk menunjukkan cara fungsi berfungsi pada pelayan tempatan, anda perlu mencipta dua fail. Mari kita panggil salah seorang daripada mereka redirect.php , dan satu lagi redirect2.php . Di dalam yang pertama kami akan meletakkan panggilan fungsi dalam format berikut:
Dalam fail lain kami meletakkan baris:
echo "Hello! Anda berada dalam fail redirect2.php";
Beberapa lagi contoh praktikal menggunakan ubah hala ke php:
- Paksa kod status http dihantar apabila menggunakan hujah pertama fungsi header() seperti " lokasi"Secara lalai, kod status dihantar ke pengepala" 302 » ( berpindah sementara). Ini boleh menjadi masalah apabila memindahkan sumber ke nama domain lain. Dalam enjin carian, pengalihan sementara sedemikian mungkin mengambil masa yang lebih lama. Lagipun, enjin carian sentiasa menganalisis kod status. Dan ia berkata " berpindah sementara" Contoh penulisan semula paksa kod status " 302 "pada" 301 » ( berpindah secara kekal):
Penulisan semula juga boleh dilakukan dalam dua peringkat. Baris pertama menulis semula kod status, dan yang kedua mengubah hala ke alamat baharu:
- Menggunakan ubah hala pautan luar untuk mengubah hala bergantung pada peranan pengguna. Peranan ditentukan semasa prosedur pengesahan. Nilai yang akan diproses ditulis kepada pembolehubah $who:
- Contoh praktikal yang dipermudahkan untuk melaksanakan ubah hala pautan luaran - mengklik pada pautan membawa ke halaman php. Dari sini pengguna dipindahkan ke Rambler dalam masa 5 saat. Kod HTML:
Tekan saya
Kod fail Redirect3.php:
Nah, di sini kita, mempelajari asas-asas pengalihan dalam PHP. Kini anda boleh mengambil alih tugas mengubah hala pengguna ke arah yang betul dengan selamat. Perkara utama adalah tidak membuat kesilapan dalam arah, jika tidak, anda akan membawa semua pengguna anda ke tapak orang lain...