2010-03-17 86 views
2

我有一個PHP頁面,需要一堆url參數併發送一封電子郵件。我試圖在郵件發送後使用相同的url參數調用另一個網頁。如果我執行以下操作,我的電子郵件是否可靠地發送?重定向是我真正想做的事情嗎?執行代碼後PHP重定向


更新:感謝您的提示。正如你可以看到我使用+,我不知道任何PHP。閱讀所有的答案到目前爲止,我想出了這個之後:

 
Random code to send email... 

file_get_contents('http://www.othersite.com/' . $_SERVER["REQUEST_URI"]. "?". $_SERVER["QUERY_STRING"]); 

我相信這應該開始在另一個網站上一個GET與當前的所有參數,這正是我想要的。這樣我就不必處理重定向了。這個解決方案的任何問題?


更新2:由於我的網址是https,file_get_contents給我帶來了一些問題。有辦法解決這個問題,但我只是使用頭重定向和一切運作良好。感謝大家!

+1

重新更新:如果遠程服務器上的目錄結構和頁面名稱確實是相同的,那麼看起來不錯,直到頁面名稱?這聽起來很難相信,如果它是你打電話的外部服務。 – 2010-03-17 13:36:34

回答

3

在其他答案中提出的問題是否您的基本方法真的是你想要的是有效的 - 首先檢查。無論如何,如果這真的是你想要做什麼(是您的目標URL真的等同於你在嗎?),你的確可以使用

header('Location: http://www.othersite.com/' . $_SERVER["REQUEST_URI"]); 

只要注意使用.以連接字符串,而不是+,你不能在PHP中這樣做。

要做到這一點,您可以使用http_build_url從當前GET數組中構建一個完整的有效URL。從手工代碼,修改了一下:

<?php 
echo http_build_url("http://[email protected]/pub/index.php", 
    $_GET, 
    HTTP_URL_STRIP_AUTH | HTTP_URL_JOIN_PATH | HTTP_URL_JOIN_QUERY 
); 
?> 
+0

我實際上不得不使用header而不是file_get_contents,因爲我的url是https。所以你的答案就是我使用的答案。 – UmYeah 2010-03-17 17:27:41

+0

'$ _SERVER [「REQUEST_URI」]已包含URI路徑和查詢。 – Gumbo 2010-03-17 17:31:25

+0

@Gumbo歡呼,當然。糾正。 – 2010-03-17 18:15:59

1
  • 如果它的應用程序相同,爲什麼不調用相同的函數?
  • 如果你想你可以做file_get_contents ..而不是重定向的相同效果。
+0

不同的應用程序,但感謝file_get_contents。 – UmYeah 2010-03-17 13:30:36

1

如果你只是想打那個頁面,爲什麼不使用file_get_contents

$data = file_get_contents('http://www.othersite.com/' . $_SERVER["REQUEST_URI"]); 
echo $data; 

這樣做的好處是,你不必親自到其他網站,如果你不想,同樣,如果您在其他網站上控制腳本,則可以在HTML中返回true或false,並在返回時檢查該腳本。

+0

但是,這不會通過GET參數傳遞給被調用的腳本。 – 2010-03-17 13:27:16

2

標題位置調用將僅在郵件代碼後調用,因此它不會影響您的電子郵件。

不要忘記在標題位置調用後調用exit()。

此外字符串concat運算符不是+它的。 (點)。

0

完全符合(有時Chrome將不只是一個地點工作:頭)

header("HTTP/1.0 302 Found"); 
header("Status: 302"); # this is for chrome compliance 
header("Location: http://www.othersite.com/' . $_SERVER["REQUEST_URI"]); 
0

另一種選擇是呼應的HTML標籤:

<meta http-equiv="Refresh" content="1;url=http://www.othersite.com/<?php echo $_SERVER['REQUEST_URI']; ?>"> 

這使您可以設置重定向的延遲時間(通常爲1秒),這在某些情況下很好,以便用戶不會因爲內容的閃爍而感到困惑。您可以在我們重定向您的信息或類似信息時添加「待定」。