我有一个简单的登录页面,但我在显示登录页面时遇到问题。提交表单后,将显示相同的登录页面。在看到登录页面之前,我必须单击刷新或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);
}
?>
答案 0 :(得分:3)
只要您正在执行以下操作......
在输出任何内容之前始终设置/删除登录cookie
在设置完cookie后,始终重定向。理想情况下,这应该是一个具有不同URL的页面(即使它只是一个不同的查询字符串),但如果没有缓存的那个应该正常工作。
只要您通过exit重定向(通过header('Location: ...');
调用)结束脚本处理。
..然后一切都应该好。也就是说,正如@Jon所说,发布一些代码,我们可以看看。