Dapatkah sesi php berfungsi tanpa cookie?

PHP menyimpan ID sesi pengguna dalam cookie, sehingga dapat menentukan kumpulan data sesi mana yang harus dimuat sesuai kebutuhan. Tetapi bagaimana jika cookie pengguna dimatikan? . Untuk mengaktifkan kemampuan itu, setel sesi. item use_trans_sid di php. ini ke 1 (Anda juga dapat menentukan bahwa PHP hanya menggunakan cookie untuk ID sesi dengan mengaktifkan session. use_only_cookies)

 ; trans sid support is disabled by default. ; Use of trans sid may risk your users security. ; Use this option with caution. ; - User may send URL contains active session ID ;   to other person via. email/irc/etc. ; - URL that contains active session ID may be stored ;   in publically accessible computer. ; - User may access your site with the same session ID ;   always using URL stored in browser's history or bookmarks. session.use_trans_sid = 0 

Dengan cara ini, URL pengguna akan terlihat seperti ini

 script.php?PHPSESSID=322fe03120041e6c5285480a4fbf1037 
_

Item ini, sesi. use_trans_sid, dinonaktifkan secara default karena mencantumkan ID sesi secara eksplisit seperti ini merupakan masalah keamanan. Jadi bagaimana jika pengguna mematikan cookie dan sesi. use_trans_sid dimatikan juga? . Anda melakukannya dengan menyimpan ID sesi, yang bisa Anda dapatkan dengan fungsi session_id, dalam variabel tersembunyi bernama PHPSESSID, seperti yang ditunjukkan pada phpsessionnocookies. php, Contoh 9-16

Contoh 9-16. Melewati ID sesi tanpa cookie, phpsessionnocookies. php
               Storing data in sessions without cookies                                Storing data in sessions without cookies                          Stored the temperature as 72 degrees.             
To read the temperature in a new page, click Submit.

Anda dapat melihat halaman ini bekerja pada Gambar 9-15

Gambar 9-15. Menangani sesi tanpa cookie
Dapatkah sesi php berfungsi tanpa cookie?

Tidak diperlukan pemrograman lebih lanjut untuk mengambil ID sesi di halaman target, phpsession2. php, yang tidak berubah dari Contoh 9-13. Anda dapat melihat hasil yang sukses pada Gambar 9-16. Bagus

Bagian ini menjelaskan apa itu array - pasangan kunci dan nilai yang diurutkan. Jika kunci bilangan bulat berurutan digunakan, array adalah daftar indeks sederhana. Jika kunci string digunakan, array adalah peta

Jika tidak suka menggunakan teknologi cookie untuk mengelola ID sesi, Anda dapat mencoba menggunakan parameter transparan URL untuk mengelola ID sesi. Inilah yang saya lakukan untuk menguji parameter transparan URL

1. Buka dan edit file konfigurasi, \php\php. ini

session.use_cookies = 0
session.use_trans_sid = 1

2. Jalankan ulang http. //localhost/SessionPage1. php, saya dapat

I am buying 3 PHP books.

Next

Counter = 1
Session name = PHPSESSID
Session id = mg04r204ctuloo2uegmih14ri5
Session module = files

Contents of $_GET:

Contents of $_POST:

Contents of $_COOKIE:
_

3. Klik "Berikutnya" di halaman pertama, alamat URL di browser diubah menjadi. http. //localhost/SessionPage2. php?PHPSESSID=mg04r204ctuloo2uegmih14ri5. Browser ditampilkan

I am buying 3 PHP books.
The unit price is 9.99 per book.

Next  Prev

Counter = 2
Session name = PHPSESSID
Session id = mg04r204ctuloo2uegmih14ri5

Contents of $_GET:
   PHPSESSID = mg04r204ctuloo2uegmih14ri5

Contents of $_POST:

Contents of $_COOKIE:

4. Klik "Berikutnya" di halaman kedua, alamat URL di browser diubah menjadi. http. //localhost/SessionPage3. php?PHPSESSID=mg04r204ctuloo2uegmih14ri5. Browser ditampilkan

I am buying 3 PHP books.
The unit price is 9.99 per book.
The total price is 29.97.

Prev

Counter = 3
Session name = PHPSESSID
Session id = mg04r204ctuloo2uegmih14ri5

Contents of $_GET:
   PHPSESSID = mg04r204ctuloo2uegmih14ri5

Contents of $_POST:

Contents of $_COOKIE:
_

Keluaran menunjukkan bahwa konsep sesi masih berfungsi dengan benar. Tetapi beberapa hal menarik terjadi di sini

Eksperimen sederhana yang mengilustrasikan apa yang terjadi ketika pengguna menonaktifkan cookie adalah dengan meminta skrip yang ditunjukkan pada Contoh 8-2 ​​dari browser yang dukungan cookie-nya dimatikan. Saat permintaan berulang dibuat, penghitung tidak bertambah, dan durasi sesi tetap nol detik. Karena cookie tidak dikirim dari browser, variabel $PHPSESSID tidak pernah disetel. Efek samping lainnya adalah setiap kali halaman diminta, file sesi dibuat di direktori /tmp. Banyak pengguna mengonfigurasi browser mereka untuk tidak menerima cookie, dan aplikasi berbasis sesi tidak akan berfungsi kecuali jika ditulis untuk menangani cookie yang hilang

Pengidentifikasi sesi yang akan dikirim sebagai cookie dalam percobaan ini dapat dikirimkan dalam permintaan metode GET atau POST. Sementara fungsi session_start( ) dapat menggunakan $PHPSESSID yang diatur oleh permintaan metode GET atau POST, lebih praktis menggunakan variabel GET. Menggunakan variabel POST_ mengarah ke masalah isi ulang yang dijelaskan di Bab 6. Melanjutkan eksperimen, permintaan yang tidak berisi cookie dapat mengidentifikasi sesi yang ada dengan menyetel atribut dalam permintaan metode GET dengan nama

/tmp/sess_be20081806199800da22e24081964000
3 dan nilai ID sesi. Misalnya, permintaan awal dapat diajukan ke Contoh 8-1 dengan URL

http://localhost/example.8-1.php
_

Ini membuat sesi dan file terkait seperti

/tmp/sess_be20081806199800da22e24081964000

Permintaan selanjutnya dapat dibuat yang mencakup

/tmp/sess_be20081806199800da22e24081964000
3

http://localhost/example.8-1.php?PHPSESSID=be20081806199800da22e24081964000

Respons menunjukkan penghitung disetel ke

/tmp/sess_be20081806199800da22e24081964000
_5 dan durasi sesi yang benar. Permintaan berulang ke URL ini berfungsi seperti yang diharapkan. counter bertambah, dan durasi yang dihitung meningkat

Jika Anda menulis aplikasi berbasis sesi untuk menggunakan URL guna mengidentifikasi sesi, aplikasi tidak akan gagal untuk pengguna yang tidak mengizinkan cookie. Aplikasi dapat menggunakan cookie percobaan untuk melihat apakah cookie didukung oleh browser atau tidak menggunakan cookie sama sekali

Saat

/tmp/sess_be20081806199800da22e24081964000
_6 diaktifkan, dan cookie dan GET atau POST digunakan untuk menyetel $PHPSESSID, cookie menang. Nilai atribut GET atau POST ditimpa oleh nilai yang terkait dengan cookie karena urutan default di mana PHP menginisialisasi variabel tersebut

Cara aman untuk membaca cookie dan atribut GET dan POST yang memiliki konflik nama adalah dengan menggunakan larik

http://localhost/example.8-1.php?PHPSESSID=be20081806199800da22e24081964000
4,
http://localhost/example.8-1.php?PHPSESSID=be20081806199800da22e24081964000
5, dan
http://localhost/example.8-1.php?PHPSESSID=be20081806199800da22e24081964000
6

Keuntungan lain dari menghindari cookie adalah beberapa browser, seperti Netscape dan Internet Explorer, berbagi cookie di semua contoh program yang berjalan untuk pengguna tertentu di mesin yang sama. Perilaku ini mencegah pengguna memiliki beberapa sesi dengan aplikasi database web

Metode HTTP POST menyediakan alternatif cookie untuk mempertahankan status sesi . Metode HTTP POST memberikan informasi status yang sama seperti cookie, tetapi memiliki keuntungan karena dapat berfungsi meskipun cookie tidak tersedia. Metode ini tidak umum dalam praktiknya, tetapi merupakan contoh yang baik untuk dipelajari.
Sesi bergantung pada cookie , sedangkan Cookie tidak bergantung pada Sesi. Sesi berakhir saat pengguna menutup browser atau keluar dari aplikasi, sedangkan Cookie kedaluwarsa pada waktu yang ditentukan. Sesi dapat menyimpan data sebanyak yang diinginkan pengguna, sedangkan Cookie memiliki ukuran terbatas 4KB.
Sesi PHP . Sesi biasanya berupa file atau catatan basis data di sisi server yang berisi potongan kecil data yang ingin disimpan server untuk setiap pengguna. Sessions are an alternative to cookies. A session is usually a file or database record on the server side which contains the small pieces of data which the server wants to store for each user.