0

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/文件夹中检查会话?

4

1 回答 1

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

编辑:我误读了原始问题。修改...

于 2013-09-06T01:32:35.527 回答