0

在我来到这里之前,我已经阅读了许多试图解决此问题的不同内容。无论如何我得到

"Notice: Undefined index: Username in C:\xampp\htdocs\home\header.php on line 18"

我无法弄清楚我做错了什么。我习惯于使用 cookie 而不是会话,所以这有点不同。

这是代码。

索引.php

<table class='siteTable'>
<tr>
<td class='account'>


<?php 
if(!$ULN){
echo"
<div class='settings1'>
<center>Login</center>
<br />

</div>
<div class='settings2'>
<center>Register</center>
<br />

</div>
";
} else {
echo"
Logged In!
";
}
?>
</td>
<td>

</td>
</tr>
</table>

<?php include("footer.php"); ?>

头文件.php

<?php
ob_start();
?>
<html>
<head>
<link href='css/style.css' type='css/text' rel='stylesheet'>
</head>
<body style='background-image:url("darkbg.png");'>
<?php 
include("database.php");
?>
<div class='mainDiv' style='background-image:url("mdbg.png");'>
<div class='siteBanner' style='background-image:url("siteBanner.png");'></div>
<?php
session_start();


$LoggedIn = mysql_query("SELECT * FROM Users WHERE Username='".$_SESSION['Username']."'"); 
$ULN = mysql_fetch_object($LoggedIn);


$banner = true;
if($banner == true){
echo"<div class='Banner'>In the works.</div>";
}
?>
<div class='siteLinks'>
<ul>
<a href='index.php'>
<li>
Home
</li>
</a>
<a href='#catalog.php'>
<li>
Catalog
</li>
</a>
<a href='#users.php'>
<li>
Users
</li>
</a>
<a href='#forum.php'>
<li>
Forum
</li>
</a>
</ul>
</div>
<div class='siteContent'>

我在用

"$LoggedIn = mysql_query("SELECT * FROM Users WHERE Username='".$_SESSION['Username']."'"); 
$ULN = mysql_fetch_object($LoggedIn);"

检查用户是否登录,这就是问题所在。对不起,如果这已经被回答了,如果是这样,我找不到它。我发现的只是用户 $_POST 或 $_GET 的东西。

4

2 回答 2

1

与其告诉你在这种情况下出了什么问题,不如让我告诉你如何调试自己的代码。这些是根据错误消息找出问题的步骤。

  1. 查找行号。 “... on line 18”告诉您问题出在代码的第 18 行。数数行,直到你到达那一行。就是这个:

$LoggedIn = mysql_query("SELECT * FROM Users WHERE Username='".$_SESSION['Username']."'");

  1. 在 Google 上搜索错误消息短语以了解其含义。在这种情况下,这就是“未定义的索引”。“索引”一词是数组键的另一个词。顺便说一下,$_GET、$_POST 和 $_SESSION 都是数组。“未定义”表示索引不存在。用简单的英语来说,这意味着 $_SESSION['Username'] 还不存在。在尝试查找它之前,您应该检查它是否存在。
 if(isset($_SESSION['Username'])) {
      $LoggedIn = mysql_query("SELECT * FROM Users WHERE Username='".$_SESSION['Username']."'");
      $ULN = mysql_fetch_object($LoggedIn);
 } else {
      $ULN = false;
 }
于 2013-04-24T21:08:40.450 回答
0

$_SESSION['Username']在进行查询之前检查。新访问者不会设置该会话变量。

if (isset($_SESSION['Username'])) {
    $LoggedIn = mysql_query("SELECT * FROM Users WHERE Username='".$_SESSION['Username']."'"); 
    $ULN = mysql_fetch_object($LoggedIn);
}
于 2013-04-24T21:00:18.993 回答