Guten Abend,
ich möchte eine kleine Statistik führen, von welchen fremden Seiten die Besucher meiner Seite kommen. Dafür wollte ich aus dem Array
$_SERVER den Referer auslesen, via
PHP-Code:
<?php
$ref = $_SERVER['HTTP_REFERER'];
echo $ref;
?>
Als das nicht ging, habe ich mir den kompletten Array ausgeben lassen:
PHP-Code:
<?php
echo '<pre>, print_r($_SERVER, true), '</pre>';
?>
Habe ich die Ausgabe durchsucht und festgestellt, dass nirgendwo etwas von HTTP-REFERER steht. Und das verwundert mich ehrlich gesagt, selbst in der PHP-Doku wird geschrieben, dass der Referer dort mitgesendet wird.
Ich selbst habe es mit den Browsern Opera und Google Chrome probiert, ein Bekannter hat es per Firefox ausgetestet. Überall kam bei erster Variante eine leere Ausgabe. Auf dem Server läuft PHP-Version 5.3.16
Hoffe auf Antwort.
Lg Flo
Es muss $_SERVER['HTTP_REFERRER'] heißen.
Auch die Schreibweise hatte ich schon ausprobiert, brachte auch nicht das gewünschte Ergebnis. Aber da bei Ausgabe des kompletten Strings der Referer nicht angezeigt wird, weiß ich nicht mehr weiter. Kann es sein, dass das Erfassen von Referers in der php.ini ausgeschalten werden kann?
Keiner eine Antwort?
Folgende Ausgabe liefert das komplette Array:
Zitat:Array
(
[FCGI_ROLE] => RESPONDER
[REDIRECT_HANDLER] => application/x-httpd-php
[REDIRECT_STATUS] => 200
[force_gzip] => 1
[HTTP_USER_AGENT] => Opera/9.80 (Windows NT 5.1) Presto/2.12.388 Version/12.11
[HTTP_HOST] => [...].square7.ch
[HTTP_ACCEPT] => text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
[HTTP_ACCEPT_LANGUAGE] => de-DE,de;q=0.9,en;q=0.8
[HTTP_COOKIE] => Cookies von MyBB, unwichtig hier
[HTTP_CONNECTION] => close
[HTTP_ACCEPT_ENCODING] => gfzip, deflate
[PATH] => /sbin:/usr/sbin:/bin:/usr/bin
[LD_LIBRARY_PATH] => /usr/local/apache2/lib:
[SERVER_SIGNATURE] =>
Apache/2.4 Server at [...].square7.ch Port 80
[SERVER_SOFTWARE] => Apache/2.4
[SERVER_NAME] => [...].square7.ch
[SERVER_ADDR] => 176.9.51.229
[SERVER_PORT] => 80
[REMOTE_ADDR] => 92.75.24.81
[DOCUMENT_ROOT] => /users/[...]/www/
[REQUEST_SCHEME] => http
[CONTEXT_PREFIX] => /binary-exec/
[CONTEXT_DOCUMENT_ROOT] => /users/[...]/core/
[SERVER_ADMIN] => www.square7.ch
[SCRIPT_FILENAME] => /users/[...]/www/forum/reftest.php
[REMOTE_PORT] => 11878
[REDIRECT_URL] => /forum/reftest.php
[GATEWAY_INTERFACE] => CGI/1.1
[SERVER_PROTOCOL] => HTTP/1.1
[REQUEST_METHOD] => GET
[QUERY_STRING] =>
[REQUEST_URI] => /forum/reftest.php
[SCRIPT_NAME] => /forum/reftest.php
[ORIG_SCRIPT_FILENAME] => /users/[...]/core/php
[ORIG_PATH_INFO] => /forum/reftest.php
[ORIG_PATH_TRANSLATED] => /users/[...]/forum/reftest.php
[ORIG_SCRIPT_NAME] => /binary-exec/php
[PHP_SELF] => /forum/reftest.php
[REQUEST_TIME] => 1357768628
[argv] => Array
(
)
[argc] => 0
)
Ist unser Testserver, Username überall mal zensiert. Funktioniert auf unserem Main-Server aber genauso wenig.
http://php.net/manual/de/reserved.variables.server.php
Zitat: 'HTTP_REFERER'
Sofern vorhanden, die Adresse der Seite, auf der der Benutzer einen Link auf die aktuell aufgerufene Seite angeklickt hat. Dieser Wert wird vom Browser des Benutzers gesetzt. Nicht alle Programme unterstützen diesen Wert, manche offerieren als Feature sogar die Möglichkeit, den Wert von HTTP_REFERER selbst zu bestimmen. Kurz, Sie können diesem Wert nicht wirklich vertrauen.
Das heisst, der Referer wird nur gesetzt, wenn der auf diese Seite weitergeleitet wird. Und nein, der Referer kann in der php.ini nicht ausgeschaltet werden. Schliesslich setzt der Browser dieser Wert.
Gibt es auch eine Möglichkeit jeden Aufruf mit entsprechender "Absenderseite" zu erfassen?
Der Wert wird immer gesetzt, wenn man von einem Link auf die Seite gekommen ist.
Das ist mir mittlerweile klar. Aber ich meinte, ob es vielleicht eine andere Möglichkeit noch gibt, alle Aufrufe zu loggen.
Die einzige Möglichkeit wäre ein Cookie dafür zu missbrauchen. Das heisst, in einem Cookie die aktuelle Seite speichern und dann wenn man auf eine andere Seite geht, den Keks auslesen und neu beschreiben.