管理员登录不登录?

时间:2011-02-18 17:04:56

标签: php session admin

<?php
if(isset($_GET['action'])){
    switch ($_GET['action']) {
        case 'login':
            include 'header.php';
                if($_SERVER['REQUEST_METHOD'] == "post"){
                    if(!empty($_POST['password']) && $_SERVER['REMOTE_ADDR'] == "My IP Adress" && $_POST['password'] == "Password"){
                        $_SESSION['AlphenWeerNladmin'] = 1;
                        echo 'Logged in!';
                    }
                    else
                    {
                        echo 'Wrong password or IP adress';
                    }
                }
                else
                {
                    ?>
                        <form action="admin.php?action=login" method="post">
                            <input type="password" name="password">
                            <input type="submit" value="submit">
                        </form>
                    <?php
                }
            include 'footer.php';
            break;
        case 'logout':
            include 'header.php';
            $_SESSION['AlphenWeerNladmin'] = 0;
            echo 'Logged out!';
            include 'footer.php';
            break;

        default: 
            header('Location: 404.php');
            break;

    }
}
else
{
    header('Location: 404.php');
}
?>

当我去admin.php?action = login并且我尝试登录时,我会再次发送到表单?

请帮忙!

问候

6 个答案:

答案 0 :(得分:1)

由于您确定登录的唯一条件是否给定了操作:

if($_SERVER['REQUEST_METHOD'] == "post")

然后你必须得出结论,这个条件没有得到满足。您可能会忽略一个区分大小写的情况? $_SERVER['REQUEST_METHOD']的实际价值是多少?

答案 1 :(得分:1)

            if($_SERVER['REQUEST_METHOD'] == "post"){

PHP的字符串比较区分大小写,REQUEST_METHOD是全大写:'POST'或'GET',从不'post'或'get'。

答案 2 :(得分:0)

问题出在这一行:

if($_SERVER['REQUEST_METHOD'] == "post"){

你也发布了GET变量,所以请求方法就我所知是GET而且这句话永远不会等同于真。

答案 3 :(得分:0)

使用php内置函数strcmp()来比较字符串

答案 4 :(得分:0)

也许您的IP地址不符合您的期望?您是否连接到远程服务器但使用本地IP或其他?如果删除该条件会发生什么?

答案 5 :(得分:0)

我找到了自己的答案:我需要使用大写字母,如下:

if($_SERVER['REQUEST_METHOD'] == "POST")

问候