簡體   English   中英

如何使用AJAX向$ _SESSION賦值?

[英]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>

首先,您需要學習用純JavaScript進行ajax調用,某些網站如w3schools其他

在ajax調用的php文件中,您可以將會話變量設置為1。

但是,也許有更好的方法來查找客戶端是否啟用了javascript。

編輯:我建議檢查您的會話變量是否,如果不是,請嘗試ajax調用並將變量設置為0。 如果在頁面加載時設置了變量且變量相等,則表示客戶端沒有啟用javascript / xmlhttprequest。

對於會話,cookie存儲在客戶端。 因此,如果客戶端拒絕存儲任何cookie,您將永遠不會在會話變量中擁有任何信息。

我會使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM