Tôi đang làm việc trên một trang yêu cầu javascript và phiên. Tôi đã có mã để cảnh báo người dùng nếu javascript bị tắt. Bây giờ, tôi muốn xử lý trường hợp cookie bị vô hiệu hóa, vì id phiên được lưu trữ trong cookie.

Đang xem: Kiểm tra cookie php

Tôi đã nghĩ về một vài ý tưởng:

Nhúng id phiên trong các liên kết và biểu mẫuCảnh báo người dùng họ phải bật cookie nếu họ bị vô hiệu hóa (sẽ cần trợ giúp phát hiện nếu cookie bị tắt)

Cách tốt nhất để tiếp cận điều này là gì? Cảm ơn

CHỈNH SỬA

Dựa trên các bài viết được liên kết, tôi đã đưa ra cách tiếp cận của riêng mình và nghĩ rằng tôi sẽ chia sẻ, ai đó khác có thể sử dụng nó, có thể tôi sẽ nhận được một vài lời phê bình. (Giả sử lưu trữ phiên PHP của bạn trong cookie có tên PHPSESSID)

Content goes here
Sorry, but Javascript is required
phpjavascriptsession-cookies
61
12 thg 7, 2011steveo225

JavaScript

Trong JavaScript, bạn kiểm tra đơn giản cho cookieEnables property, được hỗ trợ trong tất cả các trình duyệt chính. Nếu bạn giao dịch với một trình duyệt cũ hơn, bạn có thể đặt cookie và kiểm tra xem nó có tồn tại không. (mượn từ Modernizer ):

if (navigator.cookieEnabled) return true;// set and read cookiedocument.cookie = “cookietest=1”;var ret = document.cookie.indexOf(“cookietest=”) != -1;// delete cookiedocument.cookie = “cookietest=1; expires=Thu, 01-Jan-1970 00:00:01 GMT”;return ret;

PHP

Trong PHP nó khá “phức tạp” vì bạn phải làm mới trang hoặc chuyển hướng đến một tập lệnh khác. Ở đây tôi sẽ sử dụng hai tập lệnh:

somescript.php

kiểm tra.php

70
12 thg 7, 2011Sascha Galley
Nhưng để kiểm tra xem cookie có được bật hay không bằng cách sử dụng ngay ($ _ COOKIE <"cookie">), bạn phải làm mới .

session_start();$a = session_id();session_destroy();session_start();$b = session_id();session_destroy();if ($a == $b) echo”Cookies ON”;else echo”Cookies OFF”;
17
30 thg 4, 2012misza
Cách tiếp cận minh bạch, rõ ràng và đơn giản, kiểm tra tính khả dụng của cookie vớiPHPvà tận dụngAJAXchuyển hướng trong suốt, do đó không kích hoạt tải lại trang . Nó cũng không yêu cầu phiên.

Xem thêm: BậT Mí NhữNg Cách Làm Con Trai Hết Giận Nhanh Chóng Và Yêu Mình Nhiều Hơn

Mã phía máy khách (JavaScript)

function showCookiesMessage(cookiesEnabled) { if (cookiesEnabled == “true”) alert(“Cookies enabled”); else alert(“Cookies disabled”);}$(document).ready(function() { var jqxhr = $.get(“/cookiesEnabled.php”); jqxhr.done(showCookiesMessage);});Cuộc gọi (JQuery AJAX có thể được thay thế bằng cuộc gọi JavaScript AJAX thuần túy)

Mã phía máy chủ (PHP)

if (isset($_COOKIE<"cookieCheck">)) { echo “true”;} else { if (isset($_GET<"reload">)) { echo “false”; } else { setcookie(“cookieCheck”, “1”, time() + 60); header(“Location: ” . $_SERVER<"PHP_SELF"> . “?reload”); exit(); }}Lần đầu tiên tập lệnh được gọi, cookie được đặt và tập lệnh sẽ cho trình duyệt tự chuyển hướng đến chính nó. Trình duyệt thực hiện nó trong suốt. Không có tải lại trang nào diễn ra vì nó được thực hiện trong phạm vi cuộc gọi AJAX.

Lần thứ hai, khi được gọi bằng chuyển hướng, nếu nhận được cookie, tập lệnh sẽ phản hồi HTTP 200 (với chuỗi “true”), do đó hàm showCookiesMessage được gọi.

Xem thêm: Bí Quyết Dạy Học Online Hiệu Quả, Lớp Học Không Thành… Cái Chợ

Nếu tập lệnh được gọi lần thứ hai (được xác định bởi tham số “tải lại”) và cookie không được nhận, nó sẽ phản hồi HTTP 200 với chuỗi “false” – và hàm showCookiesMessage được gọi.

Related Post

Leave a Reply

Your email address will not be published. Required fields are marked *