我在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