Hi zusammen,
folgende Situation:
Ich arbeite momentan an einem Script, welches ein beliebiger Nutzer auf seiner Website einbinden kann. Das Ziel des Ganzen ist eine Art sehr rudimentärer Statistik-Service hauptsächlich für Blogs, den ich eventuell um einige Features erweitern möchte. Das Script wird als Bild übergeben. Der Nutzer bindet also folgenden Code auf seiner Seite ein:
Meine Datei image.php liefert nun für den Nutzer sichtbar ein Bild zurück. Soweit ist alles kein Problem.
Jetzt ist mein momentaner Stand, dass ich innerhalb der image.php den Referer wie folgt bearbeite:
mal von der reinen Logik abgesehen, kann ich nun also folgendes durchführen:
Bindet ein User das Script (bzw. für ihn "Bild") auf seiner Seite ein, kann ich herausbekommen, auf welcher Seite das Bild eingebunden wurde. Nehmen wir an die Seite war: w*w.userblog.de, so bekomme ich das mit.
Nehmen wir an, die seite war w*w.userblog.de/artikel-1/, so bekomme ich auch das mit. Für meine Weiterverarbeitung benötige ich allerdings nur die URL. Mit dem oben genannten Code-Schnipsel bekomme ich also immer die URL (in dem Fall: w*w.userblog.de), egal von welcher Unterseite das "Bild" aufgerufen wurde.
Soweit so gut, bisher funktioniert alles.
Jetzt stellt sich folgendes Problem:
Nutzt ein User z.B. für sein Wordpress-Blog die URL: w*w.userblog.de/wordpress/ und ruft diese URL mit eingebundenem Bild-Link von mir auf, so bekomme ich ausschließlich w*w.userblog.de zurückgeliefert. Das wäre allerdings falsch, da die eigentliche Wordpress-Instanz (Wordpress dient hier nur als Beispiel) ja in dem Unterortner "/wordpress/" liegt. Die erste Idee lautet also: Den Referer so nehmen, wie er kommt - ohne ihn in einzelteile zu zerlegen.
Wenn ich das aber mache, ist es unmöglich an die Haupt-URL zu kommen, da ich pro Aufruf von einer anderen Unterseite somit einen neuen Referer bekommen würde - welcher dann als eigenständige, neue Seite gezählt werden würde.
Ich brauche eine Lösung, die mir erlaubt, das Hauptverzeichnis eines Blogs bzw. einer "Website" die in einem Unterverzeichnis liegt, herauszubekommen - und das alles über den Referer.
Würde es einen Standard geben, könnte ich einfach hergehen und den Referer so bearbeiten, dass alles was nach "/wordpress/" kommt, abgeschnitten wird. Jedoch gibt es auf diesem Planeten noch Drupal, Joomla, Typo3 und wie sie alle heißen. Mein Script soll allerdings universell einsatzbar sein - nach einem String zu parsen geht also spätestens dann schief, wenn ein User den Blog seines Fußballvereins unter w*w.privaterwebspace.de/fussballclub/ ablegt. Für diesen Fall gibt es keine Lösung.
Ich hoffe, mein Problem ist irgendwie klar geworden. Wenn alles zu unverständlich ist, dann liegt das sicherlich an meiner bereits einsetzenden Betriebsblindheit. In dem Fall bitte einfach nachfragen, wenn ihr mir dadurch helfen könnt.
Gibt es für mein Problem eine Lösung? Gibt es evtl. einen ganz anderen Ansatz? Meistens ist ja nicht immer der erste Ansatz der richtige, ich lasse mich da gerne belehren.
Ich bin zwar bei weitem kein PHP-Anfänger mehr, war aber jetzt einige Zeit raus aus dem Thema, also seht mir meine kleinen logischen Fehler bitte nach
Ich hoffe, jemand kann mir helfen
Gruß
Timo
folgende Situation:
Ich arbeite momentan an einem Script, welches ein beliebiger Nutzer auf seiner Website einbinden kann. Das Ziel des Ganzen ist eine Art sehr rudimentärer Statistik-Service hauptsächlich für Blogs, den ich eventuell um einige Features erweitern möchte. Das Script wird als Bild übergeben. Der Nutzer bindet also folgenden Code auf seiner Seite ein:
Code:
<img src="http://www.meinkram.de/image.php" alt="Image" border="0">
Jetzt ist mein momentaner Stand, dass ich innerhalb der image.php den Referer wie folgt bearbeite:
PHP-Code:
$referer = $_SERVER['HTTP_REFERER'];
$array = parse_url($referer);
$url = $array[host];
$scheme = $array[scheme]
$referer = $scheme . "://" . $url;
Bindet ein User das Script (bzw. für ihn "Bild") auf seiner Seite ein, kann ich herausbekommen, auf welcher Seite das Bild eingebunden wurde. Nehmen wir an die Seite war: w*w.userblog.de, so bekomme ich das mit.
Nehmen wir an, die seite war w*w.userblog.de/artikel-1/, so bekomme ich auch das mit. Für meine Weiterverarbeitung benötige ich allerdings nur die URL. Mit dem oben genannten Code-Schnipsel bekomme ich also immer die URL (in dem Fall: w*w.userblog.de), egal von welcher Unterseite das "Bild" aufgerufen wurde.
Soweit so gut, bisher funktioniert alles.
Jetzt stellt sich folgendes Problem:
Nutzt ein User z.B. für sein Wordpress-Blog die URL: w*w.userblog.de/wordpress/ und ruft diese URL mit eingebundenem Bild-Link von mir auf, so bekomme ich ausschließlich w*w.userblog.de zurückgeliefert. Das wäre allerdings falsch, da die eigentliche Wordpress-Instanz (Wordpress dient hier nur als Beispiel) ja in dem Unterortner "/wordpress/" liegt. Die erste Idee lautet also: Den Referer so nehmen, wie er kommt - ohne ihn in einzelteile zu zerlegen.
Wenn ich das aber mache, ist es unmöglich an die Haupt-URL zu kommen, da ich pro Aufruf von einer anderen Unterseite somit einen neuen Referer bekommen würde - welcher dann als eigenständige, neue Seite gezählt werden würde.
Ich brauche eine Lösung, die mir erlaubt, das Hauptverzeichnis eines Blogs bzw. einer "Website" die in einem Unterverzeichnis liegt, herauszubekommen - und das alles über den Referer.
Würde es einen Standard geben, könnte ich einfach hergehen und den Referer so bearbeiten, dass alles was nach "/wordpress/" kommt, abgeschnitten wird. Jedoch gibt es auf diesem Planeten noch Drupal, Joomla, Typo3 und wie sie alle heißen. Mein Script soll allerdings universell einsatzbar sein - nach einem String zu parsen geht also spätestens dann schief, wenn ein User den Blog seines Fußballvereins unter w*w.privaterwebspace.de/fussballclub/ ablegt. Für diesen Fall gibt es keine Lösung.
Ich hoffe, mein Problem ist irgendwie klar geworden. Wenn alles zu unverständlich ist, dann liegt das sicherlich an meiner bereits einsetzenden Betriebsblindheit. In dem Fall bitte einfach nachfragen, wenn ihr mir dadurch helfen könnt.
Gibt es für mein Problem eine Lösung? Gibt es evtl. einen ganz anderen Ansatz? Meistens ist ja nicht immer der erste Ansatz der richtige, ich lasse mich da gerne belehren.
Ich bin zwar bei weitem kein PHP-Anfänger mehr, war aber jetzt einige Zeit raus aus dem Thema, also seht mir meine kleinen logischen Fehler bitte nach

Ich hoffe, jemand kann mir helfen

Gruß
Timo
Kommentar