-2

我还是新手,正在努力学习 php。我有一个表单,每次运行它时都会收到一个错误,显示变量没有在应该设置的时候设置。我肯定错过了一些东西。请解释为什么变量 $_POST['login_button'] 在我第一次运行页面时没有设置?

代码可以在下面找到:

<?php

require 'connect.inc.php';

    if (isset($_POST['login_button']) && isset($_POST['username']) && isset($_POST['password'])){

        $login_button = $_POST['login_button'];             
        $username = $_POST['username']          ;
        $password = $_POST['password'];         
        $password_hash = md5($_POST['password']);           

            if(!empty($username)&&!empty($password)){                   
            $sql = "SELECT `id` FROM `golden_acres_username` WHERE `uname`='$username' AND '".$password_hash."'";               
                if($sql_run = mysql_query($sql)){           
                    $query_num_rows = mysql_num_rows($sql_run);
                }       
                    if($query_num_rows==0){     
                        echo'User name and password are incorrect';     
                        }               
                    else if($query_num_rows==1)
                        {
                        echo 'Username and password are correct';
                        }
                    }   

            else                                                
            {                       
            echo 'Please fill in user name and password';                       
            }   
    }       
    else
    {                           
    echo'Fields are not set';                           
    }                           
?>                                      
<form class="home_logon_area" action="test.php" method="POST">
    Username: 
    <input type="text" name="username" />
    Password:
    <input type="password" type="password" name="password"/>
    <input type="submit" name="login_button">
</form>

提前致谢,

约瑟夫

4

4 回答 4

2

$_POST包含提交表单的结果。如果尚未提交任何表单,则它将不包含任何内容。

您的脚本运行良好;remove echo 'Fields are not set';,或将该行用于应在尚未提交表单时运行的代码。

于 2013-09-27T22:19:55.557 回答
1

$_POST 变量由服务器设置,用于捕获浏览器发送的数据内容,作为表单 POST 操作的一部分。最初加载页面时,浏览器只执行/请求了对页面内容的 GET 调用,而没有发送 POST 请求。

希望有帮助!

于 2013-09-27T22:18:53.083 回答
1

这很容易理解;-)

  • 第一次执行 phpscript 以获取 Form

    所以根本不会有任何信息(访客是新来的,之前没看过表格)

  • 然后用户填写表格并按提交按钮

    表单链接到同一侧,因此再次执行相同的 phpscript

  • 现在您已经传输了公式值,您可以通过 $_POST 访问它们

有关更多信息,请查看php.net

于 2013-09-27T22:21:04.703 回答
0

Remove last else from your code and update the form with this one

<form class="home_logon_area" action="test.php" method="POST">
    Username: 
    <input type="text" name="username" required />
    Password:
    <input type="password" type="password" name="password" required/>
    <input type="submit" name="login_button">
</form>
于 2013-09-27T23:41:44.690 回答