Логин администратора не входит? - PullRequest
0 голосов
/ 18 февраля 2011
<?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 ]

1 голос
/ 18 февраля 2011
            if($_SERVER['REQUEST_METHOD'] == "post"){

Сравнения строк в PHP чувствительны к регистру, а REQUEST_METHOD имеет прописные буквы: «POST» или «GET», никогда «post» или «get».

1 голос
/ 18 февраля 2011

Поскольку единственное условие, которое у вас есть для определения логина или не заданного действия, это:

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

Тогда вы должны сделать вывод, что это условие не выполняется.Возможно, есть какая-то чувствительность к регистру, которую вы пропускаете?Каково действительное значение $_SERVER['REQUEST_METHOD']?

0 голосов
/ 18 февраля 2011

Я нашел свой ответ: мне нужно было использовать заглавные буквы, например:

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

Привет

0 голосов
/ 18 февраля 2011

Возможно, ваш IP-адрес не тот, который вы ожидаете? Вы подключаетесь к удаленному серверу, но используете локальный IP или что-то еще? Что произойдет, если вы удалите это условие?

0 голосов
/ 18 февраля 2011

Используйте встроенную функцию php strcmp() для сравнения значений

0 голосов
/ 18 февраля 2011

Проблема в этой строке:

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

Вы также публикуете переменные GET, поэтому, насколько мне известно, метод запроса будет GET, и это утверждение никогда не будет равняться истине.

...