我有一个登录页面。我希望当用户输入正确的用户名和密码时,他想要为他打开的页面。如果密码和用户名不正确,他会在当前页面收到错误。 另一个问题是,当您首先打开页面时,您有一个PHP未定义的索引错误。
<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>
感谢。
答案 0 :(得分:3)
您必须将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; ?>
答案 1 :(得分:2)
在你的if语句中,你不小心把单个&#39; =&#39;应该加倍的字符:
if($UserName == $dbUserName&&$PassWord == $dbPassWord){
答案 2 :(得分:2)
试试这个 -
<?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";
}
?>
Undefined index
错误即将发生,因为UserName
&amp;在表单发布之前,password
将不会出现在那里。所以添加了支票。
答案 3 :(得分:1)
在您的情况下,=
是将值设置为变量(赋值运算符)的运算符。
使用==
和===
您创建条件并检查值。
if($UserName == $dbUserName&&$PassWord == $dbPassWord) {
答案 4 :(得分:1)
与其他人说的一样,请使用==
代替=
。
有关重定向的问题,请参阅Repox answer。
答案 5 :(得分:0)
if($UserName == $dbUserName && $PassWord == $dbPassWord){
正如phansen所说,你实际上是在使用赋值运算符,它总是等于true。