我第一次打开页面时没有设置

时间:2013-09-27 22:13:42

标签: php

我还是新手并且正在尝试学习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 个答案:

答案 0 :(得分:2)

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

你的脚本运行得很好;删除echo 'Fields are not set';,或者将该行用于尚未提交表单时运行的代码。

答案 1 :(得分:1)

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

希望有所帮助!

答案 2 :(得分:1)

这很容易理解; - )

  • 首次执行phpscript以获取表单

    因此根本没有任何信息(访客是新的,之前没有看过表格)

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

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

  • 现在您已传输Formular值,您可以通过$ _POST

  • 访问它们

有关详细信息,请查看php.net

答案 3 :(得分:0)

从代码中删除最后else并使用此代码更新表单

<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>