多个密码为单个用户保护Php

时间:2018-04-05 02:03:36

标签: php

我已经对上述主题进行了广泛的研究,因为它是徒劳的。我能够获得的唯一可用结果是在您拥有各种用户的情况下指定密码数组,这样,如果他们输入数组中的任何密码,他们就被授予对受保护内容的访问权限。我也遇到过使用单个密码来保护文件。

但我需要完成的项目是使用四个不同的密码来保护来自单个用户的PHP页面,即当用户输入第一个密码时,它会请求第二个密码,其中第二个密码是inturns请求第三个密码和在访问之前的第三个请求被授予所需内容。

感谢您的期待。 我是php的新手。

更具体地说,我有以下代码行,用单个密码保护页面或内容

<?php 
$password = "ABACLB102"; // Modify Password to suit for access, Max 10 Char. ?>
 <?php 
// If password is valid let the user get access
if (isset($_POST["password"]) && ($_POST["password"]=="$password")) {
?>
Hidden Content
Hidden Content goes here
<?php 
}
else
{
// Wrong password or no password entered display this message
if (isset($_POST['password']) || $password == "") {
  print "<p align=\"center\"><font color=\"red\"><b>Incorrect Code entered</b><br>Please enter the correct code or contact Administrator</font></p>";}
  print "<form method=\"post\"><p align=\"center\"><h2>Please enter code to intiate transfer</h2><br>";
  print "<input name=\"password\" type=\"password\" size=\"25\" maxlength=\"10\"><input value=\"Authenticate\" type=\"submit\"></p></form>";
}
?>

但是我需要使用四个不同的密码来保护页面,所以如果用户输入第一个密码,它会请求另一个,直到所有四个密码都被输入,然后显示隐藏内容。

1 个答案:

答案 0 :(得分:0)

如果我理解正确,用户必须输入4个不同的密码,因此您可以使用会话来记住每个阶段,如下所示:

<?php
session_start();
$error = false;
if (!isset($_SESSION['login'])) {

    $stage = (isset($_SESSION['stage']))? $_SESSION['stage'] : 0;
    $stage_labels = array(
        'First',
        'Second',
        'Third',
        'Final'
    );

    $passwords = array(
        '111',
        '222',
        '333',
        '444'
    );

    if (isset($_POST['password']) && $_POST['password'] == $passwords[$stage]) {

        if ($stage == 3) {
            // if the final password matches, create a session variable for login
            $_SESSION['login'] = 'loggedin';
            header('location: ' . $_SERVER['PHP_SELF']);
            exit();
        } else {
            // if password matches the respective stage, increase the value of stage by 1 to move on to next stage
            $_SESSION['stage'] = $stage + 1;
            header('location: ' . $_SERVER['PHP_SELF']);
            exit();
        }

    } elseif (isset($_POST['password'])) {
        $error = true;
        // if form submitted with mismatch password, stage will restart from 0 again
        print '<p align="center"><font color="red"><b>Incorrect Code entered</b><br>Please enter the correct code or contact Administrator</font></p>';
        $_SESSION['stage'] = 0;

    }

    if (!$error) {
        print '<p>Please enter your '. $stage_labels[$stage].' password</p>';
    }

    print '<form method="post"><p align="center"><h2>Please enter code to intiate transfer</h2><br>';
    print '<input name="password" type="password" maxlength="10"><input value="Authenticate" type="submit"></p></form>';

} else {
    echo 'You have logged in';
}
?>