0

嗨,我试图制作一个简单的登录系统。(没有mysql)。我不确定我的代码有什么问题,想知道是否有人可以帮助我。

<?php
$user=" ";
$password=" ";
if(isset($_POST['submit'])){

if(($_POST['user'] == $user) and ($_POST['password'] == $password)){
    echo "successful login!";
    }
    else
    {
    echo "Bad Login.";
    }
}
?>
<html>
    <input type="text" name = "user" value = "username" />
    <br>
    <input type="password" name = "password" value = "password" />
    <br>
    <input type="submit" name = "submit" value = "login"/ >
</html>

当我单击登录按钮时,没有任何反应。谢谢

4

5 回答 5

3

您正在分配 ( =) 值,而不是检查是否相等 ( ==)。尝试更换

$_POST['user'] = $user 
$_POST['password'] = $password

$_POST['user'] === $user
$_POST['password'] === $password

此外,由于您没有为错误的登录名和错误的密码输出不同的错误,您可以将检查合并为一行:

if ($_POST['user'] === $user && $_POST['password'] === $password) {
    echo "Bad Login.";
} else {
    //Your other output here
}
于 2013-03-12T20:08:12.443 回答
1
if($_POST['password'] = $password)

那需要是:

if($_POST['password'] == $password)

if($_POST['user'] = $user)

需要是:

if($_POST['user'] == $user)

单个等号将分配值,而 2 将比较它们。

您还缺少一个 HTML 表单。

<html>
<form method="POST">
<input type="text" name = "user" value = "username" />
<br>
<input type="password" name = "password" value = "password" />
<br>
<input type="submit" name = "submit" value = "login"/ >
</form>
</html>
于 2013-03-12T20:07:38.183 回答
1

如您所知,您应该使用==而不是=. 但这里有一个评论(我发布作为答案,因为在评论中我无法缩进代码)

你为什么不使用

if(($_POST['user'] == $user) and ($_POST['password'] == $password)){
  echo 'success';
  }
else{
  echo 'Bad login';
  }
于 2013-03-12T20:11:30.697 回答
0

在 PHP 和我知道的所有使用 IF 的语言中,你使用两个等号(==)。就在上面的是赋值运算符。所以你的代码如下。

<?php
    $user="teamhijack";
    $password="@#@#Password@#@#";
    if(isset($_POST['submit'])){

    if($_POST['user'] == $user){

    if($_POST['password'] == $password){
        echo "successful login!";
        }
        else
        {
        echo "Bad Login.";
        }
        }
        else
        {
        echo "Bad Login.";
        }
    }
    ?>
    <html>
        <input type="text" name = "user" value = "username" />
        <br>
        <input type="password" name = "password" value = "password" />
        <br>
        <input type="submit" name = "submit" value = "login"/ >
    </html>

永远记住一个等于是分配。IE: ($a = "Hello, World!";)

两个等于是等于运算符。即:如果(“d”==“d”)

于 2013-03-12T20:10:24.950 回答
0

您缺少 HTML 表单。

<form method="POST">
  <input type="text" name = "user" value = "username" />
  <br>
  <input type="password" name = "password" value = "password" />
  <br>
  <input type="submit" name = "submit" value = "login"/ >
</form>

此外,如果您没有收到未定义的索引通知......那么当您打开错误报告时,error_reporting(E_ALL);您肯定会......

使用该isset();声明来最小化这些通知。

if (isset($_POST['submit']))
{
 // Carry on the login
} 

此外,使用==运算符查找与您的 if 语句更精确的精确匹配。

if($_POST['user'] == $user){
于 2013-03-12T20:11:08.927 回答