2016-07-28 12 views
0

Ich sende ein PHP-Bild über E-Mail, die Parameter verwendet, um das Bild zu bestimmen, um anzuzeigen. Dieses Bild wird in jedem E-Mail-Client außer Google Mail angezeigt. Der Grund dafür liegt am Google User Content Proxy, der den Link umschließt und die php-Datei anzeigt, ohne die Parameter zu beachten.PHP-Parameter ignoriert in Gmail Proxy-E-Mail

Ich habe das gleiche Problem wie diese Frage zu haben, Problems with tracking pixels and Gmail proxy. Ihre Lösung war die folgende:

ich es https://www.example.com/tracking.php/order_id=1 mit aufgelöst statt und dann auf dem tracking.php ich nicht $ _GET verwendet habe aber $ _SERVER [ 'REQUEST_URI'] und analysiert, um das/order_id = String.

Das Problem ist, ich verstehe nicht, wie dies zu tun ist.

Wenn ich die Datei URL für test.php?par=1 besuche, kann ich Par mit $ _GET ziehen. Wenn ich die Datei-URL auf test.php/par=1 umschalte, erhalte ich einen 404-Fehler.

Wie verwende ich /par=1 als mein Parameter beim ersten Zugriff auf test.php, damit ich die gesamte URL mit $ _SERVER ['REQUEST_URI'] ziehen kann?

Antwort

3

test.php?par=1 ist ein Skript namens test.php mit einem Abfragezeichenfolgenschlüssel par und Wert 1.

Wenn Sie nicht pathinfo aktiviert haben, dann ist test.php/par=1 ein Verzeichnisname test.php und eine nicht vorhandene Datei in diesem Verzeichnis par=1 benannt.

Beachten Sie, dass PHP Pathinfo-Daten nicht in $ _GET analysieren wird. Nur tatsächliche ?key=val-Abfragewerte werden für das verarbeitet. Sie müssen $_SERVER['PATH_INFO'] ausgraben und es selbst analysieren.

+0

Vielen Dank !! Pathinfo war das, was ich aktivieren musste. – cul8r

0

Ich konnte dies funktioniert und getestet für Google Mail. Mein PHP-Bild wird erfolgreich angezeigt! ?

test.php val = 1

$value = $_GET['val']; 

Um dies:

test.php/val = 1

ich meine test.php Datei von dieser bearbeitet

$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];