[英]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.php ( index.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.