使用PHP / .htaccess保护页面?

时间:2013-09-06 01:18:53

标签: php .htaccess login passwords

我网站上的

www.example.com/index.html是一个要求输入密码的页面,输入后会运行www.example.com/login.php

<?php
if (isset($_POST['pw']) && ($_POST['pw'] == "mypassword"))
{
// Location after Logged in
header('Location: http://example.com/kareha/index.html');
}
else
{
// If not Logged in
header('Location: http://example.com/index.html');
}
?>

然后被重定向到www.example.com/kareha/

问题是,任何人都可以输入并直接导航到www.example.com/kareha/

我有什么办法可以保护这个索引文件(或网站上的其他任何地方),以便任何未登录的人都被重定向到主登录页面?

另外,如果它通过.htaccess受到保护会有帮助吗? (/kareha/index.html会根据模板自动更新,每次我搞乱时都会破坏模板)

编辑:也许就是开始与/login.php的会话,然后在.htaccess文件夹中/kareha/检查会话的内容?

1 个答案:

答案 0 :(得分:1)

您需要使用会话或.htpasswd。要使用会话,请将您的html文件更改为php

这是登录脚本的顶部

<?php
    session_start();

    // see if the form has been posted
    if($_SERVER['REQUEST_METHOD'] == 'POST') {

    // check for the password
    if($_POST['pw'] == "mypassword") {

        // set a session
        $_SESSION['loggedin'] = true;

        // redirect to kareha/
        header('Location: http://example.com/kareha/index.php');
    }
} else {
    header('Location: http://example.com/index.html');
}

// put HTML and login form here...

kareha / index.php

的最顶端
<?php
    session_start();
    if(!isset($_SESSION['loggedin'])) {
        // redirect to login page
        header('Location: http://example.com/index.html');
    }

// put rest of page here

您可以在此处阅读有关会话的信息:http://www.php.net/manual/en/book.session.php

编辑:我误读了原来的问题。订正...