[英]How to assign value to $_SESSION with AJAX?
是的,我知道這個問題已經發布,但是...我正在尋找一種方法來檢查客戶端是否啟用了Javascript。
這是我的想法 :在每個加載頁面,PHP都將$_SESSION['is_js']
初始化為0
。 然后,我希望AJAX能夠( 通過啟動腳本php? )嘗試將$_SESSION['is_js']
為1
。 如果啟用了JS,則AJAX將成功,否則,該值將保持為0。
我不能使用jQuery或其他庫...我必須用純AJAX編寫此代碼( 我的意思是不使用framework或librairies ),而且我也不知道該怎么做。
編輯 :我不能使用cookie。 我不想使用<noscript>
。
我會使用Cookie。 它的功能幾乎相同-
<?php
$_SESSION['js'] = (int) $_COOKIE['js']
setcookie('js', 0);
?>
<script type="text/javascript">
setCookie('js', 1);
</script>
您可以使用一組Cookie函數,例如http://www.w3schools.com/js/js_cookies.asp
祝好運!
一種相當獨特的方法(也是IMO的me腳)是使用javascript下載偽造的圖片:
<script type="text/javascript">
var fake = new Image();
fake.src = "/sess_js.php";
</script>
不使用AJAX,jQuery,Cookie等
根據您的想法和要求,如果您不能使用jQuery或Prototype之類的庫,依此類推...則必須使用“原始” XMLHttpRequest對象 。 以下代碼是一個示例。
創建一個名為ajax_js_enabled_test.php的文件,並將此代碼放入其中:
<?php
if(isset($_GET['PHPSESSID'])) session_id($_GET['PHPSESSID']);
session_start();
if(isset($_SESSION['user_js_support']) && $_SESSION['user_js_support']) echo "Javascript enabled";
else $_SESSION['user_js_support'] = FALSE;
?>
<script type="text/javascript">
var XHR;
if (window.XMLHttpRequest){
// The code for IE7+, Firefox, Chrome, Opera, Safari
XHR=new XMLHttpRequest();
}else{
// The code for IE6, IE5
XHR=new ActiveXObject("Microsoft.XMLHTTP");
}
XHR.open("GET","http://127.0.0.1/check_js_user_support.php<?php echo '?PHPSESSID='.session_id(); ?>",true);
XHR.send();
</script>
<p>
<a href="<?php echo '?PHPSESSID='.session_id(); ?>">
Refresh
</a>
</p>
創建另一個名為check_js_user_support.php的文件,並將此代碼放入其中:
<?php
if(isset($_GET['PHPSESSID'])) session_id($_GET['PHPSESSID']);
session_start();
$_SESSION['user_js_support'] = TRUE;
?>
將兩個文件復制到本地Web服務器的根目錄中。 從瀏覽器打開頁面ajax_js_enabled_test.php。 AJAX請求啟動,頁面check_js_user_support.php將名為user_js_support的會話參數設置為TRUE。 因此,通過按“刷新”按鈕,將重新加載頁面, $ _ SESSION ['user_js_support']將為TRUE ,腳本將寫為:“ Javascript enabled”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.