Php 我的登录表单上存在未定义的索引错误,当我尝试登录时,什么也没有发生

Php 我的登录表单上存在未定义的索引错误,当我尝试登录时,什么也没有发生,php,mysql,database,Php,Mysql,Database,我正在尝试为我的网站创建一个登录页面 我目前正在使用xampp进行测试,然后将其上载到主机,并在中创建了一个包含一些测试数据的mysql数据库 当我转到本地localhost/xampp/Login.php时,会出现以下错误: 注意:第41行C:\xampp\htdocs\xampp\Login.php中的未定义索引:username Notice: Undefined index: password in C:\xampp\htdocs\xampp\Login.php on line 41

我正在尝试为我的网站创建一个登录页面

我目前正在使用xampp进行测试,然后将其上载到主机,并在中创建了一个包含一些测试数据的mysql数据库

当我转到本地localhost/xampp/Login.php时,会出现以下错误: 注意:第41行C:\xampp\htdocs\xampp\Login.php中的未定义索引:username

Notice: Undefined index: password in C:\xampp\htdocs\xampp\Login.php on line 41

Notice: Undefined index: logout in C:\xampp\htdocs\xampp\Login.php on line 43

Notice: Undefined index: test_account in C:\xampp\htdocs\xampp\Login.php on line 25
这里的第一行是第41行

if($_POST['username'] !='' || $_POST['password'] != '') {
$login_status = login($_POST['username'], $_POST['password']);
} else if($_GET['logout']) {
logout();
}
$userid = status();
我的表单发送数据,所以我不明白为什么它会出错

<form action="Login.php" method="POST">
<input type=text name=username>
<input type=password name=password>
<input type=submit value="Log In">
</form>

当我单击登录时,什么也没有发生,这是我正在使用的完整php文件

<?php

    $link = mysql_connect("localhost", "admin", "1234");
    mysql_select_db("test_database", $link);

function login($username, $password) {
        $username = addslashes($username);
        $password = md5($password);
    $query = mysql_query("SELECT * FROM user_accounts WHERE username='$username' AND password='$password'");
    if(mysql_num_rows($query) == 1) {
        $info = mysql_fetch_array($query);
        $userid = $info[userid];
        $sessionid = md5($userid . time());
        $time = time();
        @setcookie ('test_account', $sessionid, $time+3600, '/', '');
        mysql_query("DELETE FROM user_sessions WHERE userid='$userid'");
        mysql_query("INSERT INTO user_sessions (sessionid,userid,timestamp) VALUES('$sessionid','$userid','$time')");
        return $userid;
    } else {
        return 0;
    }
}

function status() {
    $sessionid = $_COOKIE[test_account];
    $oldtime = time() - 3600;
    $query = mysql_query("SELECT * FROM user_sessions WHERE sessionid='$sessionid' AND timestamp>$oldtime");
    if(mysql_num_rows($query) == 1) {
        $info = mysql_fetch_array($query);
        return $info[userid];
    }
    return 0;
} 

function logout() {
    $sessionid = $_COOKIE[test_account];
    @setcookie ("test_account",'', time()-99999, '/', '');
    mysql_query("DELETE FROM user_sessions WHERE sessionid='$sessionid'");
}

if($_POST[username] !='' || $_POST[password] != '') {
    $login_status = login($_POST[username], $_POST[password]); 
} else if($_GET[logout]) {
    logout();
}
$userid = status();


if($userid > 0) { echo "Welcome to our site, user #$userid (<a href='?logout'>Click here to logout</a>)"; } else {

if($login_status != '' $login_status == 0) { echo "Invalid username/password combo.<br>"; }
?>

<form action="sample.php" method="POST">
<input type=text name=username>
<input type=password name=password>
<input type=submit value="Log In">
</form>

<?php } ?>

如果变量存在,则必须尝试:

if(isset($_POST['username']))

因为当您转到页面时,表单尚未提交,因此变量不存在。

如果变量存在,您必须尝试:

if(isset($_POST['username']))

因为当您转到页面时,表单尚未提交,因此变量不存在。

您需要首先检查$\u POST是否设置如下:

<?php
    if(isset($_POST['username'])&& isset($_POST['password']))
    {
        if(!empty($_POST['username']) && !empty($_POST['password'])) {
            $login_status = login($_POST['username'], $_POST['password']); 
        } else if($_GET['logout']) {
            logout();
        }
    }
?>

在您的表格中,您应该在项目名称周围使用“extra”,如下所示:

<form action="sample.php" method="POST">
    <input type="text" name="username">
    <input type="password" name="password">
    <input type="submit" value="Log In">
</form>

您需要检查$\u POST是否设置在第一个位置,如下所示:

<?php
    if(isset($_POST['username'])&& isset($_POST['password']))
    {
        if(!empty($_POST['username']) && !empty($_POST['password'])) {
            $login_status = login($_POST['username'], $_POST['password']); 
        } else if($_GET['logout']) {
            logout();
        }
    }
?>

在您的表格中,您应该在项目名称周围使用“extra”,如下所示:

<form action="sample.php" method="POST">
    <input type="text" name="username">
    <input type="password" name="password">
    <input type="submit" value="Log In">
</form>

您应该检查是否$\u POST,然后登录系统,如果没有,则显示表单。如果用户已通过身份验证,则不需要向他显示表单

<?php
$userid = status();
if($userid > 0) {
    if(isset($_GET['logout'])){
        logout();
        header('Location: Login.php');
        exit();
    }
    echo "Welcome to our site, user #$userid (<a href='?logout'>Click here to logout</a>)";
    exit();
}

if (isset($_POST['username']) && isset($_POST['password'])){
    $login_status = login($_POST[username], $_POST[password]);
    //if success login
    if($login_status) {
        header('Location: Login.php');
        exit();
    }
    echo "Invalid username/password combo.<br>"; 
}
?>
<form action="sample.php" method="POST">
    <input type="text" name="username">
    <input type="password" name="password">
    <input type="submit" value="Log In">
</form>

您应该检查是否$\u POST,然后登录系统,如果没有,则显示表单。如果用户已通过身份验证,则不需要向他显示表单

<?php
$userid = status();
if($userid > 0) {
    if(isset($_GET['logout'])){
        logout();
        header('Location: Login.php');
        exit();
    }
    echo "Welcome to our site, user #$userid (<a href='?logout'>Click here to logout</a>)";
    exit();
}

if (isset($_POST['username']) && isset($_POST['password'])){
    $login_status = login($_POST[username], $_POST[password]);
    //if success login
    if($login_status) {
        header('Location: Login.php');
        exit();
    }
    echo "Invalid username/password combo.<br>"; 
}
?>
<form action="sample.php" method="POST">
    <input type="text" name="username">
    <input type="password" name="password">
    <input type="submit" value="Log In">
</form>