完全密码保护的网站

时间:2016-02-01 10:33:35

标签: php html passwords

美好的一天! 我正在尝试创建一个只能在首页输入密码才能访问它的网站(www.mywebsite.com/index.php)

输入密码后,它将从我的public_html外部获取文件home.html。

然后在该页面(home.html)中将使用变量z(www.mywebsite.com/index.php?z=one)链接,该变量将返回1.html或其他页面。

这是我到目前为止所尝试的内容,但即使我使用www.mywebsite.com/index.php?z=one 它仍然打开home.html 我可以得到一些帮助吗?和/或是我正在尝试的可能吗?

<?php
$pass = $_POST['pass'];
if ($pass == "1234") {
    $page = $_GET['z'];
    if ($page == "one") {

        include("../1.html");
    } else {
        include("../home.html");
    }
} else {
    if (isset($_POST)) {
        ?>
        <!DOCTYPE html>
        <html lang="en">
            <form role="form" method="POST" style="margin: 0px" action="index.php">
                <input type="password" name ="pass" class="form-control" id="pwd">  </input>
                <input type="submit" class="btn btn-danger" value="Enter"></input>
            </form>
        </html>
    <?php
    }
}
?>

4 个答案:

答案 0 :(得分:5)

这不是解决这个问题的方法。

首先使用会话,但只在会话中保留isLoggedIn标志而不是密码。

其次,所有脚本都可以在public_html文件夹中,但您要做的是添加一个小脚本,将所有脚本的loggedIn状态检查,如果没有,则抛出登录页面

这是一个简单的例子

login_check.php

<?php
    session_start();
    if ( ! isset($_SESSION['loggedIn'] || $_SESSION['loggedIn'] == 0) {
        header('Location: login.php');
        exit;
    }

现在在您的登录脚本中

的login.php

<?php
    session_start();
    if ( isset($_SESSION['loggedIn'] && $_SESSION['loggedIn'] == 1) {
        // already logged in
        header('Location: index.php.php');  // or some other page
        exit;
    }

    If ( "The password is correct" ) {   // this is of course pseudo code
        $_SESSION['loggedIn'] = 1;
        header('Location: somepage.php');
        exit;
    } else {
        unset($_SESSION['loggedIn']);
        header('Location: login.php');
        exit;
    }
?>

现在在所有其他脚本

<?php
    // first thing is always to check if this user is logged in
    // so any access from a user not yet logged in just get
    // thrown to the login page, or maybe your index.php
    require_once 'login_check.php';

您还可以使用此会话来保存有用但不敏感的内容,例如

$_SESSION['user_id'];   // id of the users info in user table
$_SESSION['FirstName'];
$_SESSION['LastName'];
$_SESSION['nickname'];

以及在您的应用程序中可能有用的任何其他任何有用的信息,您不希望每次都要收集数据库。

其他信息

您的HTML格式不正确

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>Page Title</title>
</head>
<body>
<form role="form" method="POST" style="margin: 0px" action="index.php">
   <input type="password" name ="pass" class="form-control" id="pwd" />  
   <input type="submit" name="login" class="btn btn-danger" value="Login" />
</form>
</body>
</html>

答案 1 :(得分:1)

你可以在$ _SESSION ['pass']这样的会话中存储get / post传递 但你最好用sha1加密它,最不喜欢

$_SESSION['pass'] = sha1($pass);

并将其取回

if($_SESSION['pass'] == sha1("1234")){}

答案 2 :(得分:1)

您应该使用session

但将密码存储在会话中并不是一个好习惯。

<?php
session_start();
if(isset($_POST['pass'])){
    $_SESSION['p'] = md5($_POST['pass']);
    //$pass = $_POST['pass'];
    if($_SESSION['p'] == md5("1234"))
    {
        $page = $_GET['z'];
        if($page == "one")
            {
            include("../1.html");
            }
        else
            {
            include("../home.html");
            }

    }
}
?>

答案 3 :(得分:1)

我相信这会对你有帮助。

<?php
session_start();
if (!empty($_POST['pass']) && $_POST['pass'] == "1234") {
    $_SESSION['pass'] = $_POST['pass'];
}


if (empty($_SESSION['pass'])) {
    ?>
    <!DOCTYPE html>
    <html lang="en">
        <form role="form" method="POST" style="margin: 0px" action="index.php">
            <input type="password" name ="pass" class="form-control" id="pwd">  </input>
            <input type="submit" class="btn btn-danger" value="Enter"></input>
        </form>
    </html>
    <?php
    die;
}

$page = $_GET['z'];
if ($page == "one") {

    include("../1.html");
} else {
    include("../home.html");
}
?>