我来自一个经典的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']' –