有沒有辦法讓PHP重定向到新的頁面,並傳遞HTTP-AUTH?使用HTTP-AUTH重定向?
我一直在使用捲曲,作爲第二個例子在這裏: Sending basic authentication information via form
不幸的是,當我這樣做,(在瀏覽器地址欄中顯示)的實際URL保留原始PHP的網址,而不是目標我正在瀏覽。
這裏是我到目前爲止有:
<?php
$user = "xyz";
$pass = "abc";
$userpass = $user . ":" . $pass;
$url = "http://website/directory/";
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERPWD, $userpass);
$result = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if($httpcode == 200){
header("Authorization: Basic " . base64_encode($userpass));
echo $result;
}else{
header("Location: http://website/login.php");
}
?>
我也曾嘗試更換上面的尾部:
if($httpcode == 200){
header("Authorization: Basic " . base64_encode($userpass));
header("Location: http://website/directory/");
}else{
header("Location: http://website/login.php");
}
但失敗了;它重定向到http://website.xyz/directory,但它沒有通過用戶/通行證,並且我在抵達時出現了來自服務器的登錄信息。
從技術上講,下面的工作。然而,我更喜歡比在HREF內傳遞用戶/密碼更優雅的解決方案:
header("Location: http://" . $userpass . "website/directory/");
我也這麼想過。當HTTP-AUTH被重定向時,它似乎並未將HTTP-AUTH傳遞給新頁面;到達新位置後,我仍然通過網絡服務器提示用戶/通行證。 – ltwally 2013-04-04 18:36:10
您確定您要重定向到的網站正在接受您的憑證嗎?我用兩個不同的文件夾在本地主機上測試過它,它工作了 – hek2mgl 2013-04-04 18:41:53
我看了上面的代碼,並替換了「echo $ result;」與「標題('位置:http://網站/目錄');」,這是我所嘗試過的。它失敗了。到達http:// website/directory /後,我收到了登錄提示。 – ltwally 2013-04-04 18:59:42