簡體   English   中英

php會話無效

[英]Php sessions aren't working

我是php的新手,而且對會話來說是新手,所以我不知道我在做什么錯。 我遵循了有關tizag的教程,並將此代碼放在我的網站上:

<?php

session_start();

echo SID . "<br><br>";

if(isset($_SESSION['views'])) {
    $_SESSION['views'] = $_SESSION['views'] + 1;
} else {
    $_SESSION['views'] = 1;
    echo "views = ". $_SESSION['views']; 
}

?>

每當刷新時,SID都會更改,並且該數目不會累加。

更新:網址: http//121.73.150.105/PIA/

固定作者:將session_start()放在我的文檔類型,標題等之前。

瀏覽器中是否啟用了Cookie? phpsessid存儲為cookie,您可以為其設置不同的參數,在這種情況下可能有用的參數可以是session_get_cookie_params() ,然后查看會話cookie參數是否正常。

如果發生任何錯誤(例如到期日期),則可以使用session_set_cookie_params()設置參數

您不會在if語句之后輸出$_SESSION['view'] 我認為這就是為什么它不會改變。

嘗試:

<?php

session_start();

echo SID . "<br><br>";

if(isset($_SESSION['views'])) {
    $_SESSION['views'] = $_SESSION['views'] + 1;
} else {
    $_SESSION['views'] = 1;
}

echo "views = ". $_SESSION['views'];     

?>

因此,您始終輸出新的$_SESSION['views']值。

編輯:我認為正確的答案是未設置會話。 但是我很好奇,代碼如何始終輸出“ view = 1”? 我可以打開一個新問題參考該問題,還是在這里討論?

您的PHP設置可能已配置為不將會話保存在Cookie中。

要驗證是否是這種情況,可以查看php.ini中的session.use_cookies或使用ini_get ,如下所示:

<?php echo ini_get('session.use-cookies'); ?>

您也可以在運行時使用ini_set對其進行更正,如下所示:

<?php ini_set('session.use-cookies', '1'); ?>

您是在調用會話開始之前向瀏覽器輸出了某些內容,還是禁用了Cookie。

在代碼中,如果看不到會話ID,則可以編寫session_id()代替SID

ini_set("session.use_cookies",1);
ini_set("session.use_only_cookies",1);

如果您希望這兩個參數必須設置為gether

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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