我服务器上的错误日志输出的错误类似于:
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();
?>
我不明白为什么我仍然在日志文件中收到错误。
答案 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'] : '');