html / php нет кеша но сохраняю куки - PullRequest
1 голос
/ 03 апреля 2011

У меня есть простая страница входа, но у меня возникают проблемы с отображением страницы входа в систему. Когда форма отправлена, отображается та же страница входа. Мне придется нажать обновить или F5, прежде чем я смогу увидеть страницу входа. Я попробовал no-cache (метатег), но моя проблема в том, что cookie-файлы также исчезли (я не смог сохранить состояние).

Кстати, мой логин использует редирект. Форма отправки вызывает другую страницу, выполняющую проверку, а затем перенаправляет обратно на ту же страницу, но предположительно с другим содержимым (форма входа больше не должна быть там).

Я считаю, что это просто, но, к сожалению, не смог найти ответ в другом месте.

Спасибо.

Обновление: Вот несколько кодов: Страница входа имеет форму ExtJs с отправкой:

login.getForm().getEl().dom.action='bridge.php/login';
login.getForm().getEl().dom.submit();

bridge.php является клиентом отдыха на другом сервере: фрагмент кода:

<?php
//echo $HTTP_SERVER_VARS['PATH_INFO'];


require_once "RESTclient.php";
require_once "http_request.php";

$rest = new RESTclient();
$http_req = new httpRequest();

//$headers = $http_req->headers();
$headers = apache_request_headers();

foreach($headers as $key => $value) {
    if($key != "Cookie" && $key != "Content-Type"){
        unset($headers[$key]);
    }
}

//$headers["Content-Type"] = "";

$inputs = array_merge($_GET, $_POST);
//$inputs = array_merge($inputs, $_);

$url = "http://another_server/rest_service_here";
$path = $HTTP_SERVER_VARS['PATH_INFO'];
$server = $url.$path;

$rest->createRequest("$server",$http_req->method(),$inputs);
$rest->addHeaders($headers);
$rest->setBody($http_req->body());
$rest->sendRequest();

// get the headers now
$responseheaders = $rest->getResponseHeaders();
$responsecookies = $rest->getResponseCookies();

if ($responseheaders != null) {
    foreach ($responseheaders as $key => $value) {
        header($key.': '.$value);
    }
}
if ($responsecookies != null) {
    foreach ($responsecookies as $key => $value) {

        $name = $value['name'];
        $val = $value['value'];
        setcookie($name, $val);
    }
}
if($path=='/login') {
    ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Logging in</title>
<meta HTTP-EQUIV="REFRESH" content="0; url=/new_index.php">
</HEAD>
<BODY>
Redirecting to homepage...
</BODY>
</HTML>
    <?php 
} else {
    $output = $rest->getResponse();
    //$output = $output." ".$http_req->method();

    // start doing something about the output.
    //echo $http_req->body();
    //echo $http_req->raw();
    echo $output;
    //var_dump($headers);
}

?>

1 Ответ

3 голосов
/ 03 апреля 2011

Пока вы делаете следующее ...

  1. Всегда устанавливайте / удаляйте cookie для входа в систему, прежде чем выводить что-нибудь

  2. Всегда перенаправлять после , когда вы установили cookie. В идеале это должна быть страница с другим URL-адресом (даже если это всего лишь другая строка запроса), но с ошибкой, которая не кэшируется , должна работать нормально.

  3. Как только вы перенаправите (с помощью header('Location: ...'); call) завершение обработки сценария с помощью exit .

.. тогда все должно быть хорошо. Тем не менее, как говорит @Jon, отправьте некоторый код, и мы можем посмотреть.

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