PHP注意:未定义索引:用户名

时间:2014-12-18 01:40:29

标签: php mysql username isset

[2014年12月18日01:18:54欧洲/赫尔辛基] PHP注意:未定义的索引:738行/home/stance93/public_html/game/core.php中的用户名

在这一行我有

if (@!isset($_SESSION['username'])) {
    echo '<script>window.location = "index"</script>';
}

$username = $_SESSION['username'];

[2014年12月18日01:18:54欧洲/赫尔辛基] PHP注意:未定义索引:946行/home/stance93/public_html/game/core.php中的用户名 在这条线上我有

<?php
    $username = $_SESSION['username'];
    $uid      = get_userid($username);
?>

和第995行的另一个:

$user       = $_SESSION['username'];
$selectuser = mysql_query("SELECT * FROM users WHERE username='$user'");
$urow       = mysql_fetch_array($selectuser);

我的错误日志超过150Mb有这个错误,而“$ urow”调用了用户名,出了什么问题?功能运行良好,它显示我的用户的头像为:$ urow ['picture']“,但在错误日志中它告诉我: PHP注意:未定义的变量:urow在另一个页面中。我的所有页面都包含了core.php,我没有重新声明$ urow,因为它是在核心中声明的,我重复一遍,在每个页面上都没有显示错误,只在错误日志中...因为我的英语不好而对我说:)

1 个答案:

答案 0 :(得分:2)

导致此问题的最可能的问题是您在脚本开头没有session_start()。 这意味着您将无法访问任何 $_SESSION变量。

将您的代码更改为:

session_start();
if (!isset($_SESSION['username'])) {
    die(header("Location: index"));
}

$username = $_SESSION['username'];

注释

您永远不应在代码中禁止(@)任何调用。始终解决问题,不要忽视它。

您的脚本在重定向之前仍然会运行,因为在未设置$_SESSION值时您从未明确地结束脚本。 (请参阅上面代码中的die(header("Location: index"))。)

你应该检查以确保它不是空的:

if(!isset($_SESSION['username']) || empty($_SESSION['username'])) {
    die(header("Location: index"));
}