通过使用php输入正确的密码将用户移动到另一个页面
我有一个登录页面。我希望,当用户输入正确的用户名和密码,他想为他打开的页面。如果密码和用户名不正确,他会在当前页面中收到一个错误。 另一个问题是,当您首先打开页面时,会出现一个PHP未定义索引错误通过使用php输入正确的密码将用户移动到另一个页面,php,Php,我有一个登录页面。我希望,当用户输入正确的用户名和密码,他想为他打开的页面。如果密码和用户名不正确,他会在当前页面中收到一个错误。 另一个问题是,当您首先打开页面时,会出现一个PHP未定义索引错误 <form action="<?php echo $_SERVER["PHP_SELF"]?>" method="post"> <div class="data"> <label for="name">username: &l
<form action="<?php echo $_SERVER["PHP_SELF"]?>" method="post">
<div class="data">
<label for="name">username: </label>
<input type="text" name="UserName"/>
</div>
<div class="data">
<label for="name">password: </label>
<input type="password" name="PassWord"/>
</div>
<input type="submit" value="Log In" name="submit" id="submit"/>
<?php
$dbUserName = "alex";
$dbPassWord = "1234";
$UserName = $_POST["UserName"];
$PassWord = $_POST["PassWord"];
if($UserName = $dbUserName&&$PassWord = $dbPassWord){
//the code which moves the user to another page.
}else echo "please enter the correct username and password";
?>
</form>
在if语句中,您意外地将单个“=”字符放在了应该是双字符的地方:
if($UserName == $dbUserName&&$PassWord == $dbPassWord){
正如phansen所说,实际上您使用的是赋值运算符,它始终等于true。在您的例子中,=
是为变量设置值的运算符(赋值运算符)
使用=
和==
创建条件并检查值
if($UserName == $dbUserName&&$PassWord == $dbPassWord) {
试试这个-
<?php
$dbUserName = "alex";
$dbPassWord = "1234";
if (isset($_POST["UserName"]) && isset($_POST["PassWord"])) {
$UserName = $_POST["UserName"];
$PassWord = $_POST["PassWord"];
if($UserName == $dbUserName && $PassWord == $dbPassWord){
header('location:path/location');
exit;
} else echo "please enter the correct username and password";
}
?>
未定义索引
错误即将出现,因为在表单发布之前,用户名
和密码
不会出现在那里。因此添加了检查。就像另一个所说的,使用=
而不是=
有关重定向的问题,请参阅Repox-answer。您必须将PHP代码移到文件的开头,才能在服务器端执行此操作(这是正确的做法),以避免在设置标题之前出现输出错误。此外,您的条件是分配变量值(=),而不是比较值(=)
一个(未经测试的)可以工作的设置示例:
<?php
$dbUserName = "alex";
$dbPassWord = "1234";
if(isset($_POST['UserName']))
{
$UserName = $_POST["UserName"];
$PassWord = $_POST["PassWord"];
if($UserName == $dbUserName && $PassWord == $dbPassWord)
{
header("Location: http://example.com/the/page/where/your/user/should/end/up");
exit;
}
else
{
$error = true;
}
}
?>
<form action="<?php echo $_SERVER["PHP_SELF"]?>" method="post">
<div class="data">
<label for="name">username: </label>
<input type="text" name="UserName"/>
</div>
<div class="data">
<label for="name">password: </label>
<input type="password" name="PassWord"/>
</div>
<input type="submit" value="Log In" name="submit" id="submit"/>
</form>
<?php if(isset($error)): ?>
please enter the correct username and password
<?php endif; ?>
您是否尝试过标题('位置:');?提示:使用==
而不是=
。还可以尝试使用类似于isset()
的方法来检查变量,这将在您进行输出后出现有关设置标题的错误。Repox给出了更完整的答案。无论如何谢谢你+1我同意这个答案。另外,我想指出的是,最好在if语句中执行数据库查询。我们必须始终正确添加检查。:)
<?php
$dbUserName = "alex";
$dbPassWord = "1234";
if(isset($_POST['UserName']))
{
$UserName = $_POST["UserName"];
$PassWord = $_POST["PassWord"];
if($UserName == $dbUserName && $PassWord == $dbPassWord)
{
header("Location: http://example.com/the/page/where/your/user/should/end/up");
exit;
}
else
{
$error = true;
}
}
?>
<form action="<?php echo $_SERVER["PHP_SELF"]?>" method="post">
<div class="data">
<label for="name">username: </label>
<input type="text" name="UserName"/>
</div>
<div class="data">
<label for="name">password: </label>
<input type="password" name="PassWord"/>
</div>
<input type="submit" value="Log In" name="submit" id="submit"/>
</form>
<?php if(isset($error)): ?>
please enter the correct username and password
<?php endif; ?>