Cheatah: Tell a friend

Beitrag lesen

Hi,

Mit $HTTP_REFERER

benutze bitte ausschließlich getenv(), $HTTP_GET_VARS, $HTTP_POST_VARS und ähnliche vordefinierte(!) Funktionen und Methoden, anstatt Dich auf willkürlich in den globalen Namespace gehauene Variablennamen zu verlassen. Was mag wohl das Ergebnis sein, wenn Dein Script mit "?HTTP_REFERER=blablub" aufgerufen wird? Stichwort Sicherheistrisiko.

habe ich bislang eigentlich immer die aufrufende Seite ausfindig machen können.

Du meinst: In Deinen wenigen Testfällen, die in definierter Umgebung stattfanden. Tja, bei _Dir_ mag wirklich ausnahmslos jeder Test erfolgreich sein - Du lässt Deinen Referer vermutlich auch von keinem Proxy verändern.

Bei anderen ist dem _nicht_ so, und viele haben nicht mal einen Einfluss darauf.

Wann klappt das denn nicht

Wenn irgendein System den Referer verändert, oder vielleicht der Browser ihn gar nicht oder falsch setzt. Der Referer ist von jedem, der den Request in die Hand bekommt, beliebig veränderbar; und genau das wird auch rege praktiziert.

und wie kann ich dieses Problem umgehen?

Verwende nicht den Referer.

Nachdem Du die URL aus dem Parameter ermittelt hast, in dem Du sie abgelegt hast, [...]
Entschuldigung, ich bin zu dumm, das zu verstehen

Damit wollte ich Dir mitteilen, dass Du die Information, welche Seite empfohlen werden soll, nicht automatisch erhalten kannst. Bringe sie also in dem Link unter, der auf Dein Empfehlungs-Script leitet.

Also ich will einfach nur den Seitentitel auslesen und versenden.

Dies wird leider schon dadurch erschwert, dass Dein Script in den Grundlagen fehlerhaft ist, weil es sich auf den Referer verlässt.

Bei einer JavaScript-PopUp-Lösung würde ich das machen mit window.opener.document.title. Dafür suche ich ein PHP-Äquivalent.

Ein solches Äquivalent gibt es nicht, weil serverseitig das HTML-Dokument zunächst nicht vorhanden, und später nicht analysiert ist, wie es ein Browser tut. Am einfachsten hast Du es, wenn Du dem Link zusätzlich zur URL auch gleich den Titel mitgibst.

Cheatah