[英]I am getting Notice: Undefined index: loggedin in when using SESSION
當用戶成功通過身份驗證后,如果用戶尚未注冊參加培訓,則會將其重定向到register.php。
如果用戶已經注冊了培訓,他/她將被重定向到registered.php以查看/修改他或她的培訓課程。
到目前為止,這很好。
問題是如果用戶試圖直接進入register.php或registered.php,他/她進入任何網頁而不先登錄。
這是我想要防止但我不斷收到以下錯誤消息:
Notice: Undefined index: loggedin in .... on line 3
Please log in first to see this page
以下是我目前使用的內容,感謝您的幫助。
//login.php
$user = trim($_POST['user']);
$pass = trim($_POST['pass']);
// hash to sanitize the input further
$pass = md5($pass);
$tSQL = "SELECT u.empl_first, u.username FROM users u inner join Training t on u.Employee_Id = t.Employee_ID WHERE USERNAME = ?
and PASSWORD = ? ";
$params = array($user, $pass, $params);
$sqll = sqlsrv_query($con, $tSQL);
if ($objResult = sqlsrv_fetch_array($sqll, SQLSRV_FETCH_ASSOC)) {
$firstname = $objResult["empl_first"];
$_SESSION["firstname"] = $objResult["empl_first"];
$_SESSION['loggedin'] = true;
$_SESSION['username'] = $user;
header('location:registered.php');
}
else
header("location:register.php?user='".ms_escape_string($user)."'&pass='".ms_escape_string($pass)."' ");
sqlsrv_close($con);
?>
//register.php
<?php
session_start();
if (!isset($_SESSION['loggedin']) && $_SESSION['loggedin'] != true) {
echo "Please log in first to see this page";
}
有2個錯誤: -
在login.php
使用session_start();
啟動會話session_start();
在腳本的頂部,以便在$_SESSION
中設置變量的代碼將起作用。
在register.php
更改IF語句
if (!isset($_SESSION['loggedin']) && $_SESSION['loggedin'] != true)
至
if (!isset($_SESSION['loggedin']) || $_SESSION['loggedin'] != true)
那么IF不會測試$_SESSION['loggedin'] != true
如果IF的第一部分發現變量不存在,則為$_SESSION['loggedin'] != true
即!isset($_SESSION['loggedin'])
在login.php上有session_start();
頂部的某個地方。
在您使用會話的每個腳本上,您必須擁有它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.