simpelste Form des Link-Loggings - welcher Redirectheader?
frankx
- php
0 EKKi0 frankx0 Cybaer0 Malcolm Beck´s
Hellihello,
wenn jemand sich wünscht, die Häufigkeit der Link-Klicks auf eine Fremdseite mitzuzählen, würde ich dann den Link
1. so bauen: example1.com/redir.php?ziel=example2.com
mit example1 als eigener und example2 als Fremddomain.
Und dann
2. in der redir.php mit geprüftem $_GET["ziel"] dann einen entsprechenden (welchen denn?) header ausgeben?
Dank und Gruß,
Mahlzeit frankx,
- in der redir.php mit geprüftem $_GET["ziel"] dann einen entsprechenden (welchen denn?) header ausgeben?
Sinnvollerweise einen, der den Browser des Besuchers dazu auffordert, woanders nach der gewünschten Ressource zu suchen: header() (zweiter "Spezialfall")
Achja - und vor der Ausgabe des Headers das Zählen nicht vergessen! :-)
MfG,
EKKi
Hellihello EKKi,
Sinnvollerweise einen, der den Browser des Besuchers dazu auffordert, woanders nach der gewünschten Ressource zu suchen: header() (zweiter "Spezialfall")
redir.php dann mit zwei zeilen:
file_put_contents(time(),"");
header("Location: http://".$_GET["ziel"]."/")
ungetestet. Sendet automatisch dem Client "Status: 302".
Dank und Gruß,
Hi,
ungetestet. Sendet automatisch dem Client "Status: 302".
Das ist der falsche Code. Du *mußt* einen 301er senden!
Gruß, Cybaer
Hellihello
Hi,
ungetestet. Sendet automatisch dem Client "Status: 302".
Das ist der falsche Code. Du *mußt* einen 301er senden!
"The second special case is the "Location:" header. Not only does it send this header back to the browser, but it also returns a REDIRECT (302) status code to the browser unless some 3xx status code has already been set."
Dann muss ich nicht "Location" verwenden oder muss ich "Status" selber setzen?
Dank und Gruß,
Hi,
Dann muss ich nicht "Location" verwenden oder muss ich "Status" selber setzen?
Man kann den korrekten Status-Code gleich mitsenden (sollte im PHP-Manual stehen), oder in einem separaten Header. Der "Status"-Header ist dabei veraltet, wichtiger ist der "HTTP"-Header:
header('Status: 301 Moved Permanently');
header($_SERVER['SERVER_PROTOCOL'].' 301 Moved Permanently');
header('Location: '.$launchURL);
header('Connection: close');
Gruß, Cybaer
Hellihello Cybaerli,
Man kann den korrekten Status-Code gleich mitsenden (sollte im PHP-Manual stehen), oder in einem separaten Header. Der "Status"-Header ist dabei veraltet, wichtiger ist der "HTTP"-Header:
header('Status: 301 Moved Permanently');
header($_SERVER['SERVER_PROTOCOL'].' 301 Moved Permanently');
header('Location: '.$launchURL);
header('Connection: close');
Merci, das ist ja doch nicht so trivial, mit vier Zeilen in der richtigen Folge. Was ich mich frage: die Seite ist ja garnicht "premanently moved" sondern es ist ein "ich leite dich mal so weiter, weil ich es will", denn die seite "example.com/redir.php?count_url_click=example2.com" bzw. redir.php ist ja existent und auch nicht irgendein inhalt, der da mal war jetzt irgednwo anders.
Dank und Gruß,
Hi,
Merci, das ist ja doch nicht so trivial, mit vier Zeilen in der richtigen Folge.
Die Reihenfolge ist nicht so wichtig. :)
Was ich mich frage: die Seite ist ja garnicht "premanently moved" sondern es ist ein "ich leite dich mal so weiter, weil ich es will", denn die seite "example.com/redir.php?count_url_click=example2.com" bzw. redir.php ist ja existent und auch nicht irgendein inhalt, der da mal war jetzt irgednwo anders.
Du hast mit dem Ziel nichts zu tun, und auch keinen eigenen Inhalt (sondern eben nur eine Weiterleitung auf die eigentliche Seite).
Wenn Du keinen 301er verwendest, rechnet eine Suchmaschine das Linkziel fälschlicherweise ggf. *deiner Site* zu. D.h., mit einem 301er sorgst Du dafür, daß eine SE das Ziel unter dem korrekten URL indiziert.
Andernfalls ist das Vorgehen zum einen urheberrechtlich bedenklich, zum anderen aber hat es ggf. den Ausschluß deiner Seite aus Suchmaschine zur Folge (auch das gab es wg. Senden eines falschen Statuscodes bereits) - spätestens wenn sich der Webmaster der Zelseite bei Google & Co. beschwert.
Gruß, Cybaer
Hellihello
jau, überzeugt mich. Es reicht ja, dass das technisch so korrekt ist. Der intuitive Sinn bringts da ja manchmal nicht bzw. die gefühlte Wirklichkeit (;-).
Dank und Gruß,
hi,
header("Location: http://".$_GET["ziel"]."/")
Kann man `$_GET["ziel"]`{:.language-php} hier ohne eine gesonderte Kontextbehandlung verwenden?
Wenn doch Kontextgerechte Behandlung, welcher Kontext müsste hier berücksichtigt werden?
holla holla
--
[Hey, wenn's dir nicht gefällt, mach neu ...](http://www.youtube.com/watch?v=qdtLCfEcPL4&feature=related)
Hallo Malcolm,
header("Location: http://".$_GET["ziel"]."/")
>
> Kann man `$_GET["ziel"]`{:.language-php} hier ohne eine gesonderte Kontextbehandlung verwenden?
man sollte es nicht tun :-)
> Wenn doch Kontextgerechte Behandlung, welcher Kontext müsste hier berücksichtigt werden?
na, was benötigt ein [Location-Header](/archiv/2006/9/t136715/#m888167)?
Freundliche Grüße
Vinzenz
hi Vinzenz,
Kann man
$_GET["ziel"]
hier ohne eine gesonderte Kontextbehandlung verwenden?
man sollte es nicht tun :-)
Hatte ich mir schon fast gedacht :)
Wenn doch Kontextgerechte Behandlung, welcher Kontext müsste hier berücksichtigt werden?
na, was benötigt ein Location-Header?
Eine absolute uri, stehe aber fast immer auf dem Schlauch, wenn 's um Kontextgerechte Behandlung geht, insbesondere wenn es sich um URIs handelt.
urlencode();
?
Das http:// steht ja schon im header, er müsste ja nur noch example.com über $_GET['ziel']
weiterreichen.
holla holla