PHP, Apache and Cookie

Share More

What about it? Ada masalah apakah dengan PHP, Apache dan Cookie? Seharusnya sih gak ada, tapi saat lagi kerja di development server yang di akses dengan http://localhost, entah kenapa fungsi setcookie() ga berhasil2 menyimpan data yg gw mau. Gw cobain di firefox dan ie, tapi tetep aja ga bisa2. Padahal kalo udah di deploy ke server dengan real domain name kagak ada masalah, fine2 aja semua.

Sedikit flashback, awal mulanya gw cari solusi biar osc selalu ga nampilin session id di url. Cara tercepat pastinya dengan aktifin force cookie di admin. Dengan sedikit efek samping yaitu meningkatnya probabilitas kehilangan calon customer yang settingan browsernya nge-disabled cookie. Syukurlah kata bos gw nilainya sangat tidak signifikan, sehingga masih bisa diabaikan. Tapi entah kenapa, browser gw selalu dianggep mendisabled cookie, padahal gw yakin banget kagak gw disabled, wong melanglang buana di web2 yang butuh cookie di internet selalu bisa ko.

Akhirnya gw cuekin aja dulu bbrp hari, kerja2in yang laen dulu, sampai kemaren bos telepon dan masalah ini harus di solve secepatnya (.,) hiks – Mulailah gw oprek2 codingnya. Ternyata gw menemukan bahwa setcookie() yang dijalankan tidak pernah berhasil menyimpan data. hm… that’s strange. Setelah gw keliling2 naek bus google, gw turun di halte ini dan gw menemukan secercah sinar harapan yang kayanya cocok banget ama kondisi gw. Ehem, link sinar harapan cuma bercanda ya (gubrak!)

// set the cookie domain
$cookie_domain = (($request_type == 'NONSSL') ? HTTP_COOKIE_DOMAIN : HTTPS_COOKIE_DOMAIN);
$cookie_path = (($request_type == 'NONSSL') ? HTTP_COOKIE_PATH : HTTPS_COOKIE_PATH);
 
//FOR PHP APACHE DEVELOPMENT (localhost)
if($cookie_domain=="localhost") $cookie_domain = false;
 
setcookie('cookie_test', 'please_accept_for_session', time()+60*60*24*30, $cookie_path, $cookie_domain);

Intinya! Ternyata eh ternyata, beliau share bahwa untuk menjalankan setcookie() di localhost mesti pake format tertentu. Pasti sudah pada tahu, ada beberapa argumen yang harus disertakan saat memanggil fungsi ini, tapi gw ga akan bahas itu karena bukan bagian dari share ini (^_^) Intinya, dari semua argumen tersebut, ada argumen domain (berisi nama domain) yang bernilai localhost dalam kasus gw. Ternyata eh ternyata, sesuai anjuran akang FrosT di halte tadi, setelah gw ganti nilainya dari string:localhost jadi boolean:false, CRING! Tiba2 aja jadi bisa. Ga tahu deh kenapa, akhirnya di scriptnya gw selipin untuk cek kalo nama cookie domain nya localhost, ganti jadi false. Jadi ga bakal error juga kalo di deploy nanti. Kutipan codenya liat di atas ya, good luck!

Share this Post More

Leave a Reply