簡體   English   中英

PHP session_name():會話處於活動狀態時無法更改會話名稱錯誤

[英]PHP session_name(): Cannot change session name when session is active Error

我在一些已經工作了幾周的代碼上遇到了一些意外錯誤。 我還沒有更改此代碼,但登錄時出現兩個錯誤。

session_name():當第 5 行的 /opt/lampp/htdocs/FantasyKicks/index.php 中的會話處於活動狀態時,無法更改會話名稱

session_start():會話已經開始 - 忽略第 7 行的 /opt/lampp/htdocs/FantasyKicks/index.php

我曾嘗試運行 session_destroy() 將我放回登錄頁面並刪除會話,然后取出該行並重新登錄,但仍然出現兩個錯誤。 我想知道我如何對登錄過程進行編碼是否真的存在問題。

login.php (我在這個頁面上去掉了一些不相關的代碼)

session_name('FantasyKicks');

session_start();

if(!$email & !$password) {
        echo "All fields required";
    } else {
        if(!$email) {
            echo "Email required";
        } else {
            if(!$password) {
                echo "Password required";
            } else {
                if($num == 0) {
                    echo "Incorrect email or password";
                } else {
                    // User is logged in
                    echo "LoggedIn";
                    $_SESSION['UserID'] = $user['UserID'];
                    $_SESSION['Email'] = $user['Email'];
                    $_SESSION['FirstName'] = $user['FirstName'];
                    $_SESSION['LastName'] = $user['LastName'];
                    $_SESSION['logged_in'] = true;
                }
            }
        }
    }

index.phpindex.php 的開始)

require 'fkdb.php'; // Connect to database which uses XML config file

session_name('FantasyKicks');

session_start();
if (!isset($_SESSION['logged_in'])) {
   $_SESSION['logged_in'] = false;
};

您過度調用會話方法,您應該只使用session_start(); 一次在控制器中代碼的頂部。 如果您真的必須檢查會話是否已啟動,您可以使用下面的代碼,但最好調用一次。

if (session_status() == PHP_SESSION_NONE) {
    session_start();
}

如果您調用一次它仍然失敗,則可能是您的 php 配置。 在 php.ini 中找到以下行並將其設置為 false:

session.auto_start = false

至於會話名稱,這只是cookie的名稱; session_name(); 在功能上等同於ini_get('session.name'); 因此,除非您想更改 php 配置,否則我不明白您為什么要調用此方法。 我會保留默認的“PHPSESSID”,因為它使調試更容易。

暫無
暫無

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

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