2016-07-28 40 views
0

我通過使用參數確定要顯示的圖像的電子郵件發送PHP圖像。該圖像顯示在除Gmail之外的每個電子郵件客戶端中原因在於Google用戶內容代理服務器,它封裝了鏈接並顯示了php文件,同時忽略了附加的參數。Gmail代理電子郵件中忽略的PHP參數

我似乎有這個問題相同的問題, Problems with tracking pixels and Gmail proxy。他們的解決方案是以下幾點:

我把它用https://www.example.com/tracking.php/order_id=1 代替,然後在tracking.php我沒有使用$ _GET但 $ _ SERVER [「REQUEST_URI」]解決,並且分析出/ ORDER_ID =字符串。

問題是我不明白如何做到這一點。

當我訪問test.php?par=1的文件URL時,我可以使用$ _GET拉取票面。如果我將文件URL切換爲test.php/par=1,則會收到404錯誤。

如何使用/par=1作爲我的參數,而仍然訪問test.php第一,所以我可以使用$ _SERVER ['REQUEST_URI']拉整個網址?

回答

3

test.php?par=1是一個名爲test.php的腳本,其查詢字符串鍵爲par,值爲1

如果沒有啓用pathinfo有這樣做,那麼test.php/par=1是一個目錄名test.php,並在名爲par=1該目錄中不存在的文件。

請注意,PHP不會將pathinfo數據分析到$ _GET中。僅爲此處理實際的?key=val類型的查詢值。你必須挖掘$_SERVER['PATH_INFO']並自己解析它。

+0

謝謝! Pathinfo是我必須啓用的。 – cul8r

0

我能夠得到這個工作並通過了Gmail測試。我的PHP圖像成功顯示!

我編輯從這個test.php文件:

test.php的VAL = 1

$value = $_GET['val']; 

要這樣:

的test.php/VAL = 1

$uri = $_SERVER['REQUEST_URI']; 
$path = substr($uri, strpos($uri, "val=")); 
$delim = 'alv='; 
$tok = strtok($path, $delim); 

$tokens = array(); 
while ($tok !== false) { 
    array_push($tokens, $tok); 
    $tok = strtok($delim); 
} 
$value = $tokens[0];