我來自一個經典的ASP編程背景,而男孩PHP真的很讓人沮喪。 PHP Sessions有什麼優勢?在經典ASP中,您只需輸入:PHP會話消失
<% Session("Name") = "XYZ" %>
並且該會話始終可用,除非您殺死它或超時。使用PHP,我得到一個會話從一個頁面到另一個頁面,但是當我刷新頁面時,我失去了會話。這裏是我的代碼有:
頁:modules.php
// Start the session
session_start();
頁:index.php文件
include 'modules/modules.php';
$_SESSION['username'] = "MyName";
if (isset($_SESSION['username']) && !empty($_SESSION['username']) {
header('Location: main.php');
}
頁:main.php
include 'modules/modules.php';
echo "My username: ".$_SESSION['username'];
exit();
現在,因爲我給會話用戶名一個默認值,它將重定向到main.php,並顯示用戶名罰款。但是,如果我刷新頁面,它會消失。我跑了這個,看看modules.php頁面是否在啓動會話正下方有錯誤:
ini_set('display_errors',1);
ini_set('display_startup_errors',1);
error_reporting(-1);
沒有被返回。但我不明白爲什麼我的PHP會話消失。我正在嘗試創建一個登錄頁面,用戶將登錄並且他/她的信息將在每個頁面上傳輸,以便我可以在那裏獲得身份信息並確保他們已登錄。那麼,有人可以告訴我我在做什麼錯誤?
我模塊Page:
// Start the session
session_start();
/* Database Connection Settings */
$_SESSION['servername'] = "localhost";
$_SESSION['mysql_username'] = "xxxxxxx";
$_SESSION['mysql_password'] = "xxxxxxx";
$_SESSION['dbname'] = "mydb";
//Turn on Error Report. True = On/False = Off
ErrorReporting(true);
//Display Error.
function ErrorReporting($ErrOn){
if ($ErrOn == true) {
//Show Error
ini_set('display_errors',1);
ini_set('display_startup_errors',1);
error_reporting(-1);
}
}
function db_conn($servername, $mysql_username, $mysql_password, $dbname) {
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
// Test if connection succeeded
if(mysqli_connect_errno()) {
die("Database connection failed: " .
mysqli_connect_error() .
" (" . mysqli_connect_errno() . ")"
);
}
}
/**************************************
Close Database Connection Function.
***************************************/
function db_disconn() {
$conn = null;
}
/***************************************
Employee Login Check:
****************************************/
function CheckLogin($strUserName, $strPassword) {
if (isset($strUserName) && !empty($strUserName) && isset($strPassword) && !empty($strPassword)) {
$conn = new mysqli($_SESSION['servername'], $_SESSION['mysql_username'], $_SESSION['mysql_password'], $_SESSION['dbname']);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT id, firstname, lastname, user_name, password FROM tbl_employees WHERE user_name='$strUserName' AND password='$strPassword' AND account_disabled='';";
$result = $conn->query($sql);
//Check and see if there are records avaiable.
if ($result->num_rows > 0) {
// output data of each row with a loop.
while($row = $result->fetch_assoc()) {
//Store the info into a session variable.
$_SESSION['eid'] = $row["id"];
$_SESSION['firstname'] = $row["firstname"];
$_SESSION['lastname'] = $row["lastname"];
return $_SESSION["eid"];
//break; //Stop the loop process.
}
} else {
//No records found prompt the user.
return "User name or Password was Incorrect! Please try again!";
}
db_disconn(); /*Close db*/
}
}
'$ _SESSION'不是一個函數,它是一個關聯數組。使用'['和']'而不是'('和')'。 –
好吧,我做錯了什麼呢?我更正了['用戶名']的代碼。 –
'$ _SESSION('username')' - >'$ _SESSION ['username']' –