簡體   English   中英

我收到通知:未定義索引:使用SESSION時登錄

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

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