PHP soll Images steueren | Geht das?

Ingolo

Erfahrenes Mitglied
Hallo alle zusammen,

Frage: Ich möchte, dass wenn irgendwer auf meiner seite ist folgendes passiert:

Es läuft im hintergrund ein php-script das die daten des benutzers liest, also Browser, BSystem usw. Das ist kein Problem, da ich das schon alles in einem script habe. Also das funktioniert.
Aber ich möchte, wenn der Benutzer z.B. mit dem Internet Explorer gerade auf der seite ist das es dann grafisch denn internetexplorer anzeigt also das e und danneben soll Internet Explorer und die version stehen. Geht er aber später mit firefox rein, soll grafisch der fuchs da sein, halt das zeichen von ff, und da soll dann FireFox und version stehen. Wie macht man so eine steuerung, dass wenn im log-script steht das es gerade ff ist das er dann das image auch verwenden soll und bei etwas anderem was anderes. Ich zeig euch noch das log-script:

PHP:
<?php

$logfile=fopen($rootdir . "test_log/test_log.txt","a");
fputs($logfile, date("d.m.Y, H:i:s",time()) . ", " . $REMOTE_ADDR . ", " . $REQUEST_METHOD . ", " . $PHP_SELF .", ". $HTTP_USER_AGENT . ", " . $HTTP_REFERER ."\n");
fclose($logfile);
?>

 

<?php
$fp = fopen("test_log/test_log.txt","r");
if ($fp)
{
while(!feof($fp))
{
$text = fgets($fp);
echo"$text";
}
fclose($fp);
}
?>

Und die txt-datei speichert er dann so ab:

29.01.2006, 10:16:10, 84.57.10.146, GET, /logfile.php, Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322),


Bitte. Ich hoffe ihr könnt mir da helfen!

Weis jemand wie sowas funktioniert?
 
Du musst den User-Agent String einfach auf Schlüsselwörter wie etwa „MSIE“ oder „Firefox“ prüfen. PHP besitzt dafür bereits eine fertige Funktion (get_browser()), die dir helfen könnte.
 
?Aha?

Jetzt versteh ich gar nix mehr! :confused: :suspekt:

Hab jetzt das script genommen:
PHP:
<?php
function list_array ($array) {
   while (list ($key, $value) = each ($array)) {
       $str .= "<b>$key:</b> $value<br>\n";
   }
   return $str;
}
echo "$HTTP_USER_AGENT<hr>\n";
$browser = get_browser();
echo list_array ((array) $browser);
?>

Kommt aber die fehlermeldung das diese browsercap.ini fehlt. Was ist das und woher bekomm ich die?
 
Tut mir wirklich leid, aber ich versteh jetzt gar nix mehr. Null. Ich bin wieder da wo ich angefangen hab. Total verwirrt. Ich will doch nur wenn der benutzer mit firefox reingeht dann das firefox image dasteht und wenn er IE benutzt dann das zeichen für IE und das ganze möchte ich halt noch mit Betriebsystem, IP-Adresse. Genau wie der wie-ist-meine-ip.** dienst. Ist das wirklich sooo schwer?

Ich glaubs langsam wirklich.
 
Das Problem ist, dass die Browser nicht direkt sagen „hier, ich bin Browser X“. Diese Information ist im so genannten User-Agent-String verpackt und aufgrund seiner toleranten Syntax auch nicht unbedingt so einfach zu zerlegen.

Falls du aber wirklich nur wissen möchtest, ob es sich um ein Firefox- oder Internet-Explorer-Browser handelt, kannst du den UA-String ganz einfach auf Stichwörter „Firefox“ beziehungsweise „MSIE“ prüfen.
 
Also ich komm jetzt nicht mehr mit. Man kann doch dann aus der datei die man ausgibt vllt. lesen was es ist und dann somit wieder im php script sagen: 'ok da steht jetzt firefox, also mache /img/ff.jpeg' oder? geht sowas nicht?
 
Ich glaube es geht nur darum, das du nicht erst alles ausliesst, in eine Textdatei schreibst. Dann diese Textdatei wieder öffnest und das geschriebene wieder einliesst.

Mit der oben genannten Funktion werden die jeweiligen Browser "Kürzel" aus dem HTTP Agent gelesen.

Im Endeffekt ist es das gleiche, wie du machen möchtest. Aus deine TXT Datei ein pattern auf den String legen und nach Schlsselwörtern (MSIE, FIREFOX) suchen.

Wenn du dann einmal sichergestellt hast, welche Browser die Seite aufgerufen hat, kannst du natürlich eine IF Abfrage.

PHP:
IF($ermittelterBrowser == 'MSIE')
  $img = 'iebrowser.gif';
ELSEIF($ermittelterBrowser == 'FireFox')
  $img = 'ff.gif';
ELSEIF($ermittelterBrowser == 'Netscape')
  $img = 'netscape.gif';
ELSE
  $img = 'unknown.gif';

Gruss
 
Danke. Und muss ich nicht erst $img deklarieren? Dann müsste ich doch $img = ff.jpeg $img1 = ie.jpeg oder?
 
Bei PHP musst du die Variable $img nicht deklarieren. PHP erkennt den Typ der Variable (in dem Fall String) automatisch.

Was du natürlich vorher machen musst, ist die Variable $ermittelterBrowser mit Inhalt füllen, sprich damit er die Abfrage auf "MSIE", "FireFox" etc machen kann, muss in der Variable was stehen. Aber das steht ja schon oben.

Gruss
 
Zurück