[英]Are Javascript/Cookies enabled or disabled?
我正在尋找一些代碼,如果用戶啟用了JavaScript或禁用了JavaScript,它將返回值,以及cookie。
我知道這可能很容易,但我的時間限制非常緊張,很痛。 必須有一些東西使用PHP來做到這一點。 理想情況下,我希望找到具有頁面設置的代碼,其中包含可能影響我的腳本的所有可能值。
編輯:顯然JavaScript可能會被禁用,但是,我希望我能找到一些東西來測試這兩種情況。
我的解決方案
對於尋找代碼以檢測用戶是否已啟用cookie或禁用cookie的其他人,以下是我最終從下面的帖子中得到的內容...您可以將其放在任何頁面的頂部並且它可以正常運行...
<?php
// do a cookie test
if (!isset($_SESSION['cookie_check']))
{
if (!isset($_GET['cc']))
{
// drop a cookie in their bag
setcookie("cookiecheck", "ok", time()+3600);
header("Location: ".$common->selfURL()."?cc=1");
exit(0);
}
else
{
// do we have a problem?
if (@$_COOKIE['cookiecheck'] != "ok")
{
// we have a problem
header("Location: /site-diag.php");
exit(0);
}
else
{
$_SESSION['cookie_check'] = true;
}
}
}
?>
您可以使用jQuery cookie插件編寫cookie,然后查看是否可以再次讀取它。 這會告訴您是否在客戶端的瀏覽器中啟用了cookie。
對於檢查Javascript,要么他們擁有它,要么他們沒有。 如果沒有,您可以使用<noscript>
標簽顯示一條消息,要求他們打開它,將元重定向放在里面等等。這就是您的測試能力范圍。
至於cookies,只需嘗試設置一個cookie然后再讀回來! 由於您擔心Javascript處理cookie的能力,我假設您已經有一個正在使用的cookie庫,這意味着您可以使用set
函數來測試cookie,然后使用get
函數來讀取它。 如果無法回讀測試cookie,則會關閉cookie。
如果javascript被禁用,那么你不能使用jquery或原型。
編寫一個寫入cookie的函數,然后嘗試讀取它。
然后在屏幕上輸出一些js代碼,對一個基本的php腳本進行ajax調用。
您可以使用數據庫在訪問者表上設置兩個測試的布爾結果(如果有)。
這是我檢查cookie和JavaScript是否啟用的方式:
if($_SESSION['JSexe']) { // 3rd check js
if($_COOKIE['JS']) {
setcookie('JS','JS',time()-1); // check on every page load
}
else {
header('Location: js.html');
}
}
// 2nd so far it's been server-side scripting. Client-side scripting must be executed once to set second cookie.
// Without JSexe, user with cookies and js enabled would be sent to js.html the first page load.
elseif($_COOKIE['PHP']) {
$_SESSION['JSexe'] = true;
}
else { //1st check cookies
if($_GET['cookie']) {
header('Location: cookies.html');
}
else{
setcookie('PHP','PHP');
header('Location: '.$_SERVER['REQUEST_URI'].'?cookie=1');
}
}
這里詳細解釋: http : //asdlog.com/Check_if_cookies_and_javascript_are_enable
首先,要意識到如果關閉JavaScript,則無法使用JavaScript來檢查cookie。 通常檢查cookie是寫一個然后讀它。
你是否關心cookie開啟但JavaScript已關閉的情況? 根據這些信息你打算做什么?
我在這里找到了這個代碼,用於通過PHP檢查cookie。 不依賴於JavaScript。 PHP是您的服務器語言嗎?
<?php
class cookieCheck
{
public function check()
{
if (setcookie("test", "test", time() + 100))
{
//COOKIE IS SET
if (isset ($_COOKIE['test']))
{
return "Cookies are enabled on your browser";
}
else
{
return "Cookies are <b>NOT</b> enabled on your browser";
}
}
}
}
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.