PHP基本表单验证

时间:2014-09-05 13:17:54

标签: php forms validation

我正在建立一个受密码保护的网站,但我似乎无法正常使用它。如果密码正确,我可以将它设置为主页。如果密码不正确,请转到其他页面。我编写了代码,但每次运行代码时,如果密码错误,它都会显示在页面上。我知道代码中缺少某些东西,但我不确定它是什么。

HTML

<table>
<form action="index.php" method="post">
<tr>
<td><input type="password" name="password" /></td>
<td><input type="submit" name="submit" value="Request Permission" /></td>
</tr>
</form>
</table>

PHP

$pass = $_POST['password'];

if ($pass == "Password") {
header('Location:home.php');
} else {
header('Location:wrong.php');
exit;
}

你能帮帮我吗?

5 个答案:

答案 0 :(得分:2)

您未检查表单是否已提交。你只是直接进入你的逻辑。

检查页面是否收到表单提交的简便方法是检查请求方法。

if('POST' === $_SERVER['REQUEST_METHOD']) {
    $pass = $_POST['password'];

    if ($pass == "Password") {
    header('Location:home.php');
    } else {
    header('Location:wrong.php');
    exit;
    }
}

您还可以查看是否设置了$_POST['submit']并具有值。

仅供参考,可能希望在第一次拨打exit后加header()。此外,这不是检查密码的好方法。可能要考虑使用数据库和散列密码。您还应该添加一些数据验证(即确保密码字段不是空白)。

答案 1 :(得分:0)

if ( $_POST['password'] AND $_POST['password'] == "Password") 
{
    header('Location:home.php');
} else 
{
    header('Location:wrong.php');
    exit;
}

答案 2 :(得分:0)

在PHP周围添加:

if(isset($_POST['submit'])) {

}

它会正常工作,然后在页面加载时正在读取代码,并且由于$ _POST [&#39;密码&#39;]在此阶段没有价值,您将被重定向到错误.PHP。

答案 3 :(得分:0)

试试这个

if('POST' === $_SERVER['REQUEST_METHOD']) {
    $pass = $_POST['password'];

    if ($pass == "Password") {
    header('Location:home.php');
    } else {
    header('Location:wrong.php');
    exit;
    }
}
else{
    echo'<table>
    <form action="index.php" method="post">
    <tr>
    <td><input type="password" name="password" /></td>
    <td><input type="submit" name="submit" value="Request Permission" /></td>
    </tr>
    </form>
    </table>';
}

答案 4 :(得分:0)

使用以下页面考虑以下系统:

index.php - 这里我们将有登录表单

<?php
    session_start();

    if ((isset($_POST['password']) && $_POST['password'] == "Password") || $_SESSION['auth'] == 1)
    {
        header('Location:home.php');
    }
    else
    {
        header('Location:wrong.php');
    }
?>

<table>
<form action="index.php" method="post">
<tr>
<td><input type="password" name="password" /></td>
<td><input type="submit" name="submit" value="Request Permission" /></td>
</tr>
</form>
</table>

您的home.php文件

<?php
    session_start();
    if ($_GET['logout'] == 1)
    {
        session_destroy();
    }

    if ($_SESSION['auth'] == 1)
    {
        //show stuff to the logged in user
        //display log-out option
        echo '<a href="home.php?logout=1">Logout</a>';
    }
    else
    {
        //redirect the user to the login page
        header('Location:index.php');
    }
?>