$ _POST Пусто с .htaccess - PullRequest
       6

$ _POST Пусто с .htaccess

1 голос
/ 03 апреля 2012

Я довольно долго искал в интернете, но не могу найти никакого решения. У меня есть файл .htaccess, который переписывает мою строку запроса в переменную GET. Это работает абсолютно нормально.

когда дело доходит до переменной POST, я впервые сталкиваюсь с этой проблемой. Я уже использовал этот файл .htaccess много раз на разных серверах, но теперь один из серверов моего клиента не хочет работать. Когда я публикую форму, вся переменная POST будет пустой ... Я опубликую свой файл .htaccess, любая помощь приветствуется.

Options +FollowSymLinks
Options +Indexes
RewriteEngine on
RewriteBase /
RewriteRule ^pages.*$ /error/404 [L]
RewriteRule ^classes.*$ /error/404 [L]
RewriteRule ^templates.*$ /error/404 [L]
RewriteRule ^common.*$ /error/404 [L]

RewriteRule ^([A-Za-z0-9-_]+)/?$ /?p=$1&s=index&a=index&n=index&%{QUERY_STRING} [L]
RewriteRule ^([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/?$ /?p=$1&s=$2&a=index&n=index&%{QUERY_STRING} [L]
RewriteRule ^([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/?$ /?p=$1&s=$2&a=$3&n=index&%{QUERY_STRING} [L]
RewriteRule ^([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/?$ /?p=$1&s=$2&a=$3&n=$4&%{QUERY_STRING} [L]
RewriteRule ^([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/?$ /?p=$1&s=$2&a=$3&n=$4&o=$5&%{QUERY_STRING} [L]

ErrorDocument 404 /error/404.php

форма выглядит так

        <div class="login">
            <form action="/administrator" method="post">
                <table cellspacing="0" cellpadding="0" width="100%">
                    <tr>
                        <td>Username</td>
                        <td><input type="text" name="username" /></td>
                    </tr>
                    <tr>
                        <td>Password</td>
                        <td><input type="password" name="passwort" /></td>
                    </tr>
                    <tr>
                        <td>&nbsp;</td>
                        <td><input type="submit" value="Anmelden" /></td>
                    </tr>
                </table>
            </form>
        </div>

и php-файл для входа, подобный этому

<?php
session_start();

if( isset($_SESSION['login']) && $_SESSION['login'] === TRUE ) {
    header('Location: /administrator');
    exit;
}

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

    $username = $_POST['username'];
    $passwort = $_POST['passwort'];

    $hostname = $_SERVER['HTTP_HOST'];
    $path     = dirname($_SERVER['PHP_SELF']);

    if ($username == 'xxx' && $passwort == 'xxx') {
        $_SESSION['login'] = true;
        header('Location: /administrator');
        exit;
    }
}
?>

1 Ответ

0 голосов
/ 22 сентября 2012

Ваш RewriteRule активен для GET, а не для POST.

  1. проверьте, вызван ли ваш /administrator скрипт (почему вы не вызвали его напрямую как administrator.php?), Или создайте правило для его доступа. Проверьте в журнале доступа, чтобы убедиться, что вы вызываете скрипт, когда публикуете его.

  2. Добавить что-то вроде:

    • RewriteRule ^administrator administrator.php [L]
    • или RewriteRule ^administrator pathtoyourscript/administrator.php [L]
  3. проверить без сеанса, чтобы убедиться, что он не плохо с ним взаимодействует.

Вы можете использовать var_dump ($ _ POST) для отображения всех данных. Если экран не отображается, значит, вы неправильно назвали сценарий или неверный путь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...