我在Web应用程序中(PHP),在那里我需要重定向URL正与一些parameter.I写了这样在php中重定向url的最佳方式是什么?
header("Location:http://www.xyz.com?code=2345");
该代码会重定向到相应的网址,但我的数据中可见浏览器,我不希望我的数据在browser.how中可见,以隐藏数据?这是重定向的安全方式吗?什么是重定向的最佳方式?
我在Web应用程序中(PHP),在那里我需要重定向URL正与一些parameter.I写了这样在php中重定向url的最佳方式是什么?
header("Location:http://www.xyz.com?code=2345");
该代码会重定向到相应的网址,但我的数据中可见浏览器,我不希望我的数据在browser.how中可见,以隐藏数据?这是重定向的安全方式吗?什么是重定向的最佳方式?
可以重定向POST
已发送到当前请求的字段(通过重定向到307
),但人工创建它们是非常棘手的,取决于用户是否启用了javascript。我使用这个函数,但是如果用户禁用javascript,你不应该依赖它。
<?php
function createHiddenFields($value, $name = NULL)
{
$output = "";
if(is_array($value)) {
foreach($value as $key => $value) {
$output .= self::createHiddenFields($value, is_null($name) ? $key : $name."[$key]");
}
} else {
$output .= sprintf("<input type=\"hidden\" name=\"%s\" value=\"%s\" />",
htmlspecialchars(stripslashes($name)),
htmlspecialchars(stripslashes($value))
);
}
return $output;
}
function redirectNowWithPost($url, array $post_array = NULL)
{
if(is_null($post_array)) { //we want to forward our $_POST fields
header("Location: $url", TRUE, 307);
} elseif(! $post_array) { //we don't have any fields to forward
header("Location: $url", TRUE);
} else { //we have some to forward let's fake a custom post w/ javascript
?>
<form action="<?php echo htmlspecialchars($url); ?>" method="post">
<script type="text/javascript">
//this is a hack so that the submit function doesn't get overridden by a field called "submit"
document.forms[0].___submit___ = document.forms[0].submit;
</script>
<?php print createHiddenFields($post_array); ?>
</form>
<script type="text/javascript">
document.forms[0].___submit___();
</script>
<?php
}
exit();
}
?>
如果您重定向到同一主机,可以将数据存储在了会议,并通过cookie的传输会话ID做。
或者,您存储数据并发送会话ID。目标系统读取会话ID并根据会话ID从原始服务器请求原始数据。
使用CakePHP的内置redirect function的重定向,但该变量仍然会在URL中可见。
而不是在URL中使用GET参数为什么不设置一些数据到session?然后,您可以正常重定向,但数据对用户不可见,它存储在服务器端。
只要不写任何输出,如果你要重定向(没有意义写输出,然后重定向)? –
他意味着他的网址中可见的变量。 – TJHeuvel
你在使用CakePHP吗?你关心的是哪些数据,URL中的“code = 2345”?这是秘密数据吗? – deceze