Kuki PHP
Kuki sering digunakan untuk mengenal pasti pengguna.
Apakah itu kuki?
Kuki dijana oleh pelayan dan dihantar kepada Ejen Pengguna (biasanya penyemak imbas akan menyimpan kunci/nilai kuki ke fail teks dalam direktori tertentu dan meminta tapak web yang sama pada masa akan datang). Kuki dihantar ke pelayan (dengan syarat penyemak imbas ditetapkan untuk membolehkan kuki). Nama dan nilai kuki boleh ditakrifkan oleh pembangun bahagian pelayan, supaya pelayan boleh mengetahui sama ada pengguna adalah pengguna yang sah dan sama ada dia perlu log masuk semula, dsb. Pelayan boleh menetapkan atau membaca maklumat yang terkandung dalam Kuki untuk mengekalkan status sesi pengguna dengan pelayan.
Fungsi setcookie() digunakan untuk menetapkan kuki.Nota: Fungsi setcookie() mesti diletakkan sebelum teg <html>
Sintakssetcookie(nama, nilai, tamat tempoh, laluan, domain);Contoh 1Dalam contoh berikut, kami akan mencipta nama Jadilah kuki untuk "pengguna" dan berikannya nilai "runoob". Kami juga menyatakan bahawa kuki ini tamat tempoh selepas satu jam:<?php setcookie("user", "runoob", time()+3600); ?> <html> .....Nota: Nilai kuki dikodkan URL secara automatik apabila menghantar kuki dan dinyahkod secara automatik apabila diambil. (Untuk mengelakkan pengekodan URL, gunakan setrawcookie() sebaliknya.) Contoh 2Anda juga boleh menetapkan masa tamat tempoh kuki dengan cara lain. Ini mungkin lebih mudah daripada menggunakan saat.
<?php $expire=time()+60*60*24*30; setcookie("user", "runoob", $expire); ?> <html> .....Dalam contoh di atas, masa tamat tempoh ditetapkan kepada satu bulan (60 saat * 60 minit * 24 jam * 30 hari).
Konfigurasi dan aplikasi kuki
Setcookie(nama rentetan, nilai rentetan, int tamat tempoh, laluan rentetan, domain rentetan, tidak selamat); ialah pengecam nama pembolehubah kuki Anda boleh menggunakannya untuk merujukpembolehubah kuki dalam PHP sama seperti menggunakan nama pembolehubah biasa. nilai ialah nilai awal pembolehubah kuki, tamat tempoh mewakili masa kesahihan laluan kuki mewakili laluan yang berkaitan bagi domain kuki mewakili tapak web pembolehubah kuki hanya sah apabila https dihantar dengan selamat;
SetCookie("Cookie", "cookievalue",time()+3600, "/forum", ".365shequ.com", 1); Nama, mestilah Nilai, mesti jadi milisaat masa()+3600=1 jam Simpan laluan Simpan HTTPS domainKuki Baca PHPGunakan tatasusunan $_COOKIE pembolehubah global super untuk membaca klien semasa Cipta fail PHP baru set_cookie.php untuk kuki yang disimpan dalam dan kodnya ialah print_r($_COOKIE);echo $_COOKIE['foo'];
Semak sama ada kuki telah berjaya ditetapkanTetapkan masa tamat tempoh untuk kuki
Parameter ketiga ialah cap waktu unix0 nilai lalai, ia akan tamat tempoh apabila anda menutup penyemak imbastime() + 86400 satu harisetcookie('foo', 'a', time() + 86400 );Selepas menetapkan Sila tutup penyemak imbas, buka penyemak imbas sekali lagi dan lawati untuk menyemak sama ada kuki itu wujudTetapkan laluan untuk kuki
setcookie('bar', 'b', time() + 86400, '/uploads');
• Sila uji sama ada halaman PHP bernama bar boleh dibaca dalam / direktori Cookie
· Sila uji sama ada Cookie bernama foo boleh dibaca dalam halaman PHP di bawah /uploads Sila buat subdirektori lain dan uji sama ada halaman PHP dalam subdirektori boleh membacanya
Setelah Laluan ditetapkan, kuki di bawah Laluan hanya boleh dibaca oleh halaman di bawah Laluan
ditetapkan untuk nama Domain kukisetcookie('key', 'val', time() + 86400, '/uploads', '.your.domain');
Tetapkan domain kepada berita tidak boleh dibaca oleh halaman di bawah sports.365jia.cn, dan sebaliknya
Jika anda mahu semua nama domain peringkat kedua berkongsi kuki, anda perlu menetapkan domain kepada .php.cn
Isu sekatan kukiBanyak penyemak imbas mempunyai had pada bilangan kuki yang boleh ditetapkan oleh tapak web sesetengah penyemak imbas malah mengehadkannya kepada 30
Pelayar juga mempunyai sekatan pada saiz kuki, yang biasanya tidak boleh melebihi saiz 4K
Isu keselamatan kukiJika anda tidak menutup komputer anda selepas melayari Internet di kafe Internet, orang lain yang menggunakan komputer anda boleh melihat sejarah semua tapak web yang anda lawati dan kandungan kuki yang disimpan oleh tapak web itu berbahaya jika data penting (nama pengguna, kata laluan, nombor kad, nombor telefon bimbit, nombor ID...) disimpan dalam kuki.
Oleh itu, data penting tidak boleh disimpan dalam kuki Jika ia mesti disimpan, ia mesti bergantung pada pelayan
Langkah berjaga-jaga kukiKomputer yang berbeza. tidak boleh berkongsi Kuki
Pelayar yang berbeza pada komputer yang sama tidak boleh berkongsi Kuki
Pelayar yang sama dan nama domain yang berbeza masih tidak boleh berkongsi Kuki
Malah pelayar yang sama, Kuki dengan berbeza laluan di bawah nama domain yang sama tidak boleh dikongsi
Bagaimana untuk mendapatkan semula nilai Cookie?Pembolehubah $_COOKIE PHP digunakan untuk mendapatkan semula nilai kuki.
Dalam contoh berikut, kami mendapatkan semula nilai kuki bernama "pengguna" dan memaparkannya pada halaman:
<?php // 输出 cookie 值 echo $_COOKIE["user"]; // 查看所有 cookie print_r($_COOKIE); ?>
Dalam contoh berikut, kami menggunakan fungsi isset() untuk mengesahkan sama ada kuki telah ditetapkan:
<html> <head> <meta charset="utf-8"> <title> php中文网(php.cn)</title> </head> <body> <?php if (isset($_COOKIE["user"])) echo "欢迎 " . $_COOKIE["user"] . "!<br>"; else echo "普通访客!<br>"; ?> </body> </html>
Bagaimana untuk memadam kuki?
Apabila memadamkan kuki, anda harus menukar tarikh tamat tempoh kepada satu titik masa pada masa lalu.
Instance yang dipadamkan:
<?php // 设置 cookie 过期时间为过去 1 小时 setcookie("user", "", time()-3600); ?>
Apakah yang perlu saya lakukan jika penyemak imbas saya tidak menyokong kuki?
Jika aplikasi anda perlu berurusan dengan penyemak imbas yang tidak menyokong kuki, maka anda perlu menggunakan kaedah lain untuk menghantar maklumat antara halaman dalam aplikasi anda. Satu cara adalah dengan menghantar data melalui borang (borang dan input pengguna diliputi dalam bab sebelumnya dalam tutorial ini).
Borang berikut menyerahkan input pengguna kepada "welcome.php" apabila pengguna mengklik butang "Serah":
<html> <head> <meta charset="utf-8"> <title> php中文网(php.cn)</title> </head> <body> <form action="welcome.php" method="post"> 名字: <input type="text" name="name"> 年龄: <input type="text" name="age"> <input type="submit"> </form> </body> </html>
Dapatkan nilai dalam fail "welcome.php", seperti ditunjukkan di bawah:
<html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> </head> <body> 欢迎 <?php echo $_POST["name"]; ?>.<br> 你 <?php echo $_POST["age"]; ?> 岁了。 </body> </html>
Separuh rentak
Kesilapan yang sering dilakukan dalam pembangunan sebenar ialah mendapatkan data terus melalui $_COOKIE selepas setcookie
setcookie ('foo', 1);
print_r($_COOKIE);
echo $_COOKIE['foo'];
Dalam kes di atas, adalah mustahil untuk mendapatkan kuki hanya set adalah masalah yang disebut dalam tajuk kami
Prinsipnya sangat mudah sebenarnya disimpan ke pelayar Hanya Selepas halaman semasa dikembalikan ke pelayar nilai setcookie akan disimpan dalam penyemak imbas Apabila halaman dilawati untuk kali kedua, PHP boleh membaca data dalam Kuki pelayar
dan $_COOKIE Data dibawa dari klien ke pelayan setiap kali halaman diminta
Inilah sebabnya ia ditetapkan pada masa itu dan tidak boleh diambil pada masa itu
Salah satu cara untuk menyelesaikan masalah adalah dengan menyimpannya Selepas nilai, program menyegarkan semula halaman serta-mertabahagian seterusnya