未定义的索引:使用会话时的用户名

时间:2011-11-24 05:23:24

标签: php

我现在正在研究一个论坛软件,到目前为止我做得很好,一切正常,但我不能让它逃脱,我不确定如何。

每当我打电话

时,我都会收到未定义的索引:用户名
$_SESSION['username']

我在单独的登录文件中启动会话,但每次调用时都会收到此错误,我只有在有人没有登录时才会收到,所以就像我登录时一样,它没有显示,只有当我没有登录时,我怎么能摆脱它?

这是我的整个页面代码:

<?php
session_start();
include_once("connect.php");

$find = "SELECT id,name,description FROM forums";  
$run_find = mysql_query("$find");
if ($_SESSION['username']) {
print "Welcome, " . $_SESSION['username']. "!<br/>";
}
while($is = mysql_fetch_assoc ($run_find)) 
{
$id = $is['id'];
$name = $is['name'];
$des = $is['description'];

print "<div style='width:500px;background-color:#FFCCFF;'>";
print "Forum : <a href='topics.php?t=$id'>". $name . "</a><br/>" .$des . "<br/><hr>";
print "</div>";
}

if (!$_SESSION['username']) {
echo "
<form action='loginnext.php' method='post'>
Username: <input type='text' name='username'><br/>
Password: <input type='password' name='password'><br/>
<input type='submit' name='submit' value='Login'><br/></form>";
}
if ($_SESSION['username']) {
echo "<a href='logout.php'>Logout</a>";
}
?>

2 个答案:

答案 0 :(得分:2)

if (!empty($_SESSION['username']))是您想要的构造。 issetempty无法发出通知。

答案 1 :(得分:2)

如果用户未登录,则不会设置会话变量,因此会显示错误消息。

使用if(isset($_SESSION['username']))代替if($_SESSION['username'])