PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bild nur bei bestimmten HTTP-Referer anzeigen



AndreasMeier
12-11-2005, 20:53
Hallo zusammen,

hab eine PHP-Seite, wo eigentlich nur statischer Text dargestellt wird und ein Bild.

Dieses Bild muß ich je nach HTTP-Referer anzeigen oder ausblenden.
Kann mir jemand bitte einen Tip geben, wie ich das vom PHP-Code her lösen kann ?

Herzlichen Dank im voraus,
Gruß
Andreas

AndreasMeier
12-11-2005, 22:03
Kann ich damit was anfangen bzw. irgendwie weiterverwenden ?

Den Code-Schnipsel hab ich von phpfreaks.com für einen SSL-Check :

<?
$port = $_SERVER['SERVER_PORT'];

if($port === "443"){
echo "You are using an SSL Connection, Your transactions are secured!";
} else {
echo "This is a NON SSL connection. Your transactions are not garunteed to be secure!";
}
?>


Jetzt müsste ich das doch nur noch mit $HTTP_REFERER zusammenbringen, oder ?
Und anstatt den echo-Anweisungen könnte ich zwei unterschiedliche Grafik-Anweisungen reinsetzen.

Jetzt weiß ich aber nicht, wie ich oben anstatt $port = $_SERVER....
$HTTP_REFERER kann.

Bitte um eure Hilfe.

Danke und Gruß
Andreas

undefined
12-11-2005, 22:35
Mit einem Refferer wohl weniger, weil - wenn du über die Adressen Zeile deine Browser die URL Direckt aufrufst wir kein Refferer gesendet ;)
Siehe PHP Manual apache_request_headers
http://www.php.net/manual/de/function.apache-request-headers.php

AndreasMeier
13-11-2005, 08:25
Ok, die Beispielfunktion, die dort abgebildet ist, funktioniert und liefert mir als Anzeige ein paar Werte zurück, u.a. den Host, der die Domain beinhaltet.
Soweit sogut.

Aber trotzdem möchte ich mein zweites Posting/Frage nochmal wiederholen, ob ich die SSL-Check Routine mit den apache_request_headers abwandeln kann ?
Ich möchte dort nur dem Host-Wert abfragen, der Rest ist nicht wo wichtig.

Danke und Gruß
Andreas

Gaert
13-11-2005, 22:18
Hallo Andreas,

kann es sein, dass du HOST und REFERER ein wenig durcheinanderwirfst?
Der Hostname steht in $_SERVER['HTTP_HOST'] ...

Gruß,

Gaert

AndreasMeier
14-11-2005, 06:06
Nein, ich hoffe nicht.
Ich hab auf meine Frage einmal die Antwort HTTP_Referer von jemanden bekommen, hab damit rumprobiert, hab wieder gepostet und dann hier im Forum (im Thread) von 'undefinded' die Antwort apache_request_headers bekommen.

Mit der Funktion hab ich wieder rumprobiert und hab auch Ergebnisse (der einzelnen Funktion, noch kein Prüfskript) angezeigt bekommen (mein Posting von gestern, 9:25).

In den Ergebnissen steht weiter unten Host: www.blahblah.de drin.

Meine Frage ist nun, ob ich das Host-Ergebnis aus der Funktion apache_request_header auswerten kann.
Wenn Deine Antwort $_SERVER['HTTP_HOST'] sich darauf bezieht, bringt mich das schon ein Stück weiter und ich werd danach googeln und weitersuchen, oder Du hast eine zündende Idee, wie ich das mit einer Prüfroutine verbinden kann.

Herzlichen Dank und Gruß
Andreas

Gaert
14-11-2005, 11:02
Hallo Andreas,

vielleicht erklärst du nochmal welche Information du eigentlich möchtest:

1. Den Hostnamen der Domain, von der der Besucher auf deine Seite gekommen ist - das wäre der HTTP_REFERER.

2. Den Hostnamen der Domain, mit der dein Skript angesprochen wird - das ist der HTTP_HOST

Ich nehme fast an, dass du letzteres haben möchtest um z.B. zu sagen "Willkommen auf meiner Domain Blabla.com!" -> HTTP_HOST

Oder möchtest du doch lieber sagen "Willkommen auf meiner Seite - sie sind von der Domain Blabubb.com auf diese Seite gekommen". -> HTTP_REFERER

Gruß,

Gaert

AndreasMeier
14-11-2005, 20:24
Hallo Gaert,

danke für die Veranschaulichung.
Ich möchte dann HTTP_HOST.
Ich hoste 1 Webseite mit 2 URLs, sagen wir domain1.de und domain2.de dazu.
Beide laufen natürlich auf ein und denselben Webspace.

Ich hab 2 verschiedene Inhaltsklassen auf der Seite, einmal domain-unabhängige und domain-abhängige Inhalte, die auf den Webseiten dargestellt werden.

Ich suche die Variable, die mir genau "domain1.de" bzw. "domain2.de" ausspuckt.
Das müsste Dein Fallbeispiel Nr.2. "Den Hostnamen der Domain, mit der dein Skript angesprochen wird - das ist der HTTP_HOST" sein.

Konnte ich mich jetzt besser ausdrücken ?

Gruß
Andreas

Gaert
14-11-2005, 21:29
In dem Falle enthält $_SERVER['SERVER_NAME'] das was du brauchst. HTTP_HOST macht keinen Unterschied zwischen deinen Domains, sondern enthält i.d.R. deine Hauptdomain, welche von deinem Provider in der Apache Konfiguration angegeben wurde (ich musste mich da auch erst nochmal versichern).
Wenn du dir in Zunft bei solchen Dingen unsicher bist, dann experimentiere ein wenig mit der phpinfo() Funktion herum.

Gruß,

Gaert

AndreasMeier
15-11-2005, 07:04
Gute Idee mit phpinfo.
Also, ich hab gerade nachgeschaut, HTTP_HOST (!!!) enthält genau die Info, die ich haben möchte.
Hier werden definitiv die beiden Werte ausgewiesen, auf die ich filtern möchte.

Ich hab mir jetzt folgendes zusammengestrickt und es läuft :
<?
$domain = $_SERVER['HTTP_HOST'];

if($domain === "domain1.de"){
echo "domain1.de";
} else {
echo "domain2.de";
}
?>

Das einzige, was ich jetzt noch möchte, ist, anstatt der echo-Anweisung, mir eine Grafik anzeigen zu lassen.
Geht das wie bei HTML mit <img src .... ?

Danke und Gruß
Andreas