Логин не перенаправляет, header('Location')


я Закончил делать сайт, который позволяет CMS, чтобы наш клиент сможет войти и изменить контент на свой вкус. На localhost и на тестовом сервере, который у нас работает очень хорошо, но сервер назначения не могу выйти со страницы входа после заполнения правильные сведения.

Существуют 2 возможные исходы submit:

  • остаться на страницу формы
  • и если все правильно он делает redirect для меню.

, Но не делает redirect и также не появляется никаких сообщений проверки. Я пошел в консоль браузера, и единственное различие, которое я видел между серверы в заголовке ответа, в этом - connection: close и в другие (где работает правильно) connection: Keep-Alive. Будет это?

googled много, и я не могу найти, нет четкого ответа, помогите мне решить эту проблему.
Уже пробовал, в том числе реализации header("Connection: Keep-Alive"); в коде, но проблема остается, несмотря на то, что в заголовке ответа, теперь будьте connection: Keep-Alive, close. Я также использовал var_dump localhost отображается array(1) { ["logged_in"]=> bool(true) }. В server конце появляется array(0) { } сессии не запускается. Я не понимаю, почему.

<?php
session_start();
var_dump($_SESSION);
header("Connection: Keep-Alive");
header('Content-type: text/html; charset=UTF-8');
include_once('../includes/connection.php');
if(isset($_SESSION['logged_in'])) { ?>
<html>
    <head>
        <meta charset="UTF-8" />
        <title>AdminPT</title>
        <link rel ="stylesheet" href="../assets/style.css"/>
    </head>

        <body>
            <div class="container">
                CMS - PT
                <br>

                <ol>

                    <li><a href ="add.php">Adicionar Artigo</a></li>
                    <li><a href ="delete.php">Eliminar Artigo</a></li>
                    <li><a href ="logout.php">Sair</a></li>
                </ol>
            </div>
        </body>
    </html>

    <?php
}
else {
    //display login
    if(isset($_POST['username'], $_POST['password'])) {
        $username = $_POST['username'];
        $password = crypt(sha1(md5($_POST['password'])), 'st');

        if (empty($username) || empty($password)) {
            $error = "Todos os campos têm de ser preenchidos!";
        }
        else {
            $query = $pdo->prepare("SELECT * FROM users WHERE user_name = ? AND user_password = ?");

            $query->bindValue(1, $username);
            $query->bindValue(2, $password);

            $query->execute();

            $num = $query->rowCount();

            if($num == 1) {
                $_SESSION['logged_in'] = true;
            header('Location: index.php');
            exit();
            }
            else {
                $error = "Detalhes incorretos!";
            }
        }
    }

    ?>

    <html>
    <head>
        <title>AdminPT</title>
        <meta charset="UTF-8">
        <link rel ="stylesheet" href="../assets/style.css"/>
    </head>

        <body>
            <div class="container">
                CMS - PT
                <br><br>

                <?php
                if (isset($error)) { ?>
                    <small style="color:#aa0000"><?php echo $error; ?></small>

                <?php } ?>

                <br><br>

                <form action="index.php" method="post">
                    <input type ="text" name="username" placeholder="Username"/>
                    <input type="password" name="password" placeholder="Password"/>
                    <input type="submit" value="Login"/>
                </form>
            </div>
        </body>
    </html>

    <?php
}
?>
Author: UzumakiArtanis, 2014-03-31

3 answers

1 - Прежде всего, включите все сообщения об ошибках. Так, вероятно, станет явным то, что происходит не так и на удаленный сервер.

2 - Попробуйте переместить проверок в начало кода. Многие серверы не принимают инструкций от типа header:location "в середине" кода, и да, только перед <html>

3 - Другая возможность иметь какой-то модуль отключен на удаленном сервере, а затем проверить через phpinfo() различия между локальным сервером и удаленный.

Я Считаю, что только действие 2 устраните все, но все же я оставляю здесь и другие предложения. :)

 6
Author: Marcus Monteiro, 2014-03-31 13:27:19

У меня так же и я сделал следующее:

На место: header ("location :index.php")

Сделал так: echo "<a href='index.php'> voltar a página inicial</a>";

, То будет печатать на экране, вернуться к главной странице, просто нажмите и делает возврат.

 2
Author: eli, 2015-03-29 20:45:02
header("Location: " . $endereco);

, Можно всегда должен положить:

exit();

Если не решать, это может быть, что, поместив это в начале вашего файла:

ob_start();

И в конце файла:

ob_end_flush(); 
 2
Author: CHRISTIAN, 2015-08-11 13:41:10