PHP设置会话没有错误

时间:2017-07-12 00:57:14

标签: php session isset

我服务器上的错误日志输出的错误类似于:

mod_fcgid: stderr: PHP Notice:  Undefined index: username

我导航到这里:Undefined index with PHP sessions

我尝试修复我的代码以匹配那里的答案,但我仍然遇到相同的错误。

这是登录PHP脚本(按时编辑 - 只要密码匹配,然后我们设置会话):

<?php
include("../include/sessions.php"); 
session_start();
if(isset($_POST['username']) == true && isset($_POST['password']) == true)
{
  $username = strip_tags(mysqli_real_escape_string($dbc, trim($_POST['username'])));
  $password = strip_tags(mysqli_real_escape_string($dbc, trim(md5($_POST['password']))));
  $select = "SELECT username, fullname, userlevel, `view`, email, group_email, page, entrydate, division, `password` FROM users_copy WHERE username = '".$username."'";
  $query = mysqli_query($dbc, $select);
  $row = mysqli_fetch_array($query);

  $dbusername = htmlentities(stripslashes($row['username']));   
  $dbfullname = htmlentities(stripslashes($row['fullname']));
  $dbuserlevel = htmlentities(stripslashes($row['userlevel']));

  if($dbpassword == $password)
  {
    // matching the answer from the link above
    if (isset($_SESSION['username'])){if ($_SESSION['username'] != NULL){$_SESSION['username'] = $dbusername;}}
    if (isset($_SESSION['fullname'])){if ($_SESSION['fullname'] != NULL){$_SESSION['fullname'] = $dbfullname;}}
    if (isset($_SESSION['userlevel'])){if ($_SESSION['userlevel'] != NULL){$_SESSION['userlevel'] = $dbuserlevel;}}
   }

  mysqli_free_result($query);   
}
?>

在sessions.php页面上,我将存储会话以供在网站中使用:

<?php
session_start();
$username = $_SESSION['username'];
$fullname = $_SESSION['fullname'];
$level = $_SESSION['userlevel'];
?>

在整个网站中,我在每个页面的顶部都包含了sessions.php。我也在{include}下面session_start()。所以每个页面看起来都类似于:

// home.php
<?php
include("include/sessions.php");
session_start();
?>

我不明白为什么我仍然在日志文件中收到错误。

1 个答案:

答案 0 :(得分:-2)

在include

之前移动session_start()
session_start();
include("../include/sessions.php"); 

如果这不起作用,您可以尝试使用@

来抑制错误
$username = @$_SESSION['username'];
$fullname = @$_SESSION['fullname'];
$level = @$_SESSION['userlevel'];

$username = (array_key_exists('username', $_SESSION) ? $_SESSION['username'] : '');