2013-04-15 23 views
1

我需要有三個領域:通過PHP頭()重定向之前調用一個URL?

  • a.com - 我們的腳本(如下)將駐留。
  • b.com - 已經我們要火
  • c.com跟蹤腳本 - 是我們的最終目的地,就像一個登陸頁面

因此,廣告創意的廣告可以鏈接到http://a.com/track.php?id=1004&r=c.com,其中1004是我的會員ID。當這個腳本被調用時,我需要做的是這樣的:

<?php 
setcookie('affid', $_GET['id'],time()+60*60*24*365, '/'); 
head('X-Something: http://b.com/track?id=' . $_GET['id']); 
head('Location: http://' . $_GET['r']); 

...,其中X-東西只是一些標頭,Apache的理解,並嘗試做網頁重定向之前連接上。

麻煩是 - 我什至不知道HTTP頭字段將允許這個。可能嗎?

最終的關聯機構可能使他的廣告創意鏈接是這樣的:

http://a.com/track.php?id=1004&r=c.com

這將下降一個cookie上a.com,在b.com火腳本,然後重定向到c。 COM。那可能嗎?如果是這樣,我需要使用什麼頭文件而不是我創建的名爲X-Something的組合頭?

+1

如果id在url中,爲什麼你需要cookie? – 2013-04-15 01:21:47

+0

@Dagon這是因爲在c.com上我們讓客戶下載一個可執行程序。一旦客戶安裝並使用該程序,它就會連接到a.com到購物車進行升級。如果不在a.com上放棄該cookie,那麼我無法知道哪個子公司應該獲得信用。 – Volomike

+0

您可以動態地將該ID放入下載的文件名中。 – 2013-04-15 01:32:57

回答

2

我不知道這樣的HTTP頭存在。

相反,另一個解決方案是讓PHP請求跟蹤腳本。這可以通過file_get_contents()完成。該方法將返回該URL所提供的任何內容,但在這種情況下,您不需要它,因此其返回值可以被忽略。

<?php 
setcookie('affid', $_GET['id'],time()+60*60*24*365, '/'); 
file_get_contents('http://b.com/track?id=' . $_GET['id']); 
head('Location: http://' . $_GET['r']); 
+0

真聰明!不幸的是,在我的情況下,它不會工作,因爲我忘了提及另一個要求 - 它需要爲b.com放棄一個cookie。由於file_get_contents()不處理它,因爲它在服務器而不是客戶端瀏覽器上運行,所以這不起作用。 – Volomike

+0

我猜這個問題只能通過META標記重定向和IMG像素來解決。所以,a.com有一個腳本可以刪除cookie並顯示一個空白頁面。該頁面將IMG像素加載到b.com,然後將META重定向到c.com。 – Volomike

+0

這可以在某些情況下工作。但在b.com響應緩慢的情況下,您最終可能會在b.com有機會設置Cookie之前將其重定向到c.com。您是否允許在框架內顯示着陸頁?如果是這樣,您可以讓a.com以隱藏框架的形式提供HTML,而該框架可以擊中b.com,同時以可見的框架顯示來自c.com的內容。 –