我还是新手并且正在尝试学习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>
提前致谢,
约瑟夫
答案 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>