未定义变量:login中的$username


undefined variable: $username in login

用户登录时出现错误

什么错了吗?

在第一次告诉我欢迎,但刷新页面后告诉我错误:

注意:175行index.php中未定义变量:username

<?php
$fn=2;
if(isset($_POST["smbit"])){
$fn=1;
$username = $_POST['username'];
$password = md5($_POST['password']);
$res=mysql_query("SELECT userid,isadmin FROM users WHERE user='$_POST[username]' and pass='$_POST[password]'",$cn);
   if($row=mysql_fetch_object($res)){
    $fn=0;
    mysql_query("UPDATE session SET islogin=1,isadmin=$row->isadmin,uid='$row->userid' where sid='$sid'");
}
}
if($islogin==1) $fn=0;
if($fn==1) echo "<b>Login Not Found!</b>";  
if($fn==1 || $fn==2){
?>
    <p></p>
    <form action="index.php" method="post">
    <i>Username:</i><input type="text" name="username"/>
    <i>Password:</i><input type="password" name="password">
    <input class="buttom" type="submit" name="smbit" value="Login">
    </form>
    <a href="register.php">Not Register?</a>
    <p></p>
<?php
}
if($fn==0)   echo "<h3 align=center>Welcome $username</h3><h4><a href=logout.php>Log out</a> </h4>";
?>

刷新后if(isset($_POST["smbit"]))返回false, $fn = 2。

则,如果条件if($islogin==1)为真(可能为真),则$fn设置为0

最后一行是$fn == 0,但是$username没有定义(因为您在测试$_POST['smbit']是否存在的条件下设置了这个变量)

可能的解决方案:成功登录后设置$_SESSION['username'] = $_POST['username'],并在这一行使用session代替未定义的变量。