Homepage selbermachen 7.851 Themen, 35.615 Beiträge

browserweiche funzt ned

Lindworm / 15 Antworten / Baumansicht Nickles

hi, hab ein verdammtes problem, ich will, dass mozilla (bzw. firefox)
eine eigene css-datei bekommt, da er teilweise breiten- und größenangaben , die sich auf eine tabelle beziehen und in der mit table class eingebundenen css-datei stehen anders (ich sag jetzt extra nicht falsch, bevor hier wieder ein kleinkrieg ausbricht, der mir nicht im geringsten nutzt ;)) interpretiert als opera und der ie. dafür hab ich auch extra dieses kleine php-script in den head-bereich eingefügt:


if(strstr($HTTP_USER_AGENT, "Mozilla"))
{
$browser="mozilla";
}else
{
$browser="formate";
}
?>


da is am anfang schon das
aber kein einziger browser findet die ihm zugehörige css-datei, ich hab schon ewigkeiten im inet gesucht, aber nichts gefunden und auch in dem script nicht den verdammten fehler gefunden, bitte helft mir, ich tick\' noch aus ;)

bei Antwort benachrichtigen
xafford Lindworm „browserweiche funzt ned“
Optionen

Möglicherweise (und sinnvollerweise) sind auf dem Server register_lobals abgeschaltet, dann wäre $HTTP_USER_AGENT nicht gesetzt, versuche es einmal mit $_SERVER['HTTP_USER_AGENT'].
Nur so als kleine Randbemerkug: Auch der IE identifiziert sich als Mozilla:
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.0.3705)"

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen
Lindworm Nachtrag zu: „browserweiche funzt ned“
Optionen

hi, danke für die antwort. Du hast recht, in den neueren php-versionen muss mans so machen, ausser man setzt den entsprechenden wert um. Habe das ganze jetzt nochmal neu gemacht:

if(strstr($_SERVER['HTTP_USER_AGENT'], "Mozilla") && !(strstr($_SERVER['HTTP_USER_AGENT'], "Gecko"))
{
$browser = "!!!";}
else {
$browser = "";}
?>!!!


so, die browser interpretieren jetzt schonmal ein stylesheet, leider greift sich das allgemeine script und die browser geben noch das aus:
";} else { $browser = "";} ?>
den bereich hab ich nochmal mit 3 ausrufezeichen markiert, damit man besser erkennen kann, worum es sich handelt. Ich leider wird der teil mit der browserdefinition nicht angezeigt, er enthält die normalen links zu der css-datei, die man so auch normal in den head-bereich schreiben würde.
Ich muss also noch irgendeinen Fehler drin haben. Könnt ihr irgendwas finden?
und xafford danke ich schonmal für die antwort

bei Antwort benachrichtigen
xafford Lindworm „hi, danke für die antwort. Du hast recht, in den neueren php-versionen muss...“
Optionen

Es wäre hilfreich, wenn Du posten würdest, was genau in dem fraglichen Bereich steht (also der volständige Code).

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen
Lindworm Nachtrag zu: „browserweiche funzt ned“
Optionen

dass würde ich allerdings auch gern, aber dieses blöde forum interpretiert das lieber, als ihn anzuzeigen -.-
habs schon verschieden versucht,
klappt so aber ned, darum hab ichs mal hochgeladen:
hier klicken

bei Antwort benachrichtigen
xafford Lindworm „dass würde ich allerdings auch gern, aber dieses blöde forum interpretiert das...“
Optionen

Das Forum is net blöd, Du mußt Tags nur maskieren, gute Editoren können das automatisch (Code zu HTML), manuell geht es so:
<=&lt;
>=&gt;

Nun zu deinem eigentlichen Problem: Du solltest deine Testumgebung so einstellen, daß sie debugging auch möglich macht, also error_reporting(E_ALL); und display_errors auf On, dann hätte Dir PHP auch gemeldet, daß Du die ein oder andere Klammer vergessen hast und das negierende Ausrufezeichen falsch ist an der Stelle:



<?php

if(strstr($_SERVER['HTTP_USER_AGENT'], "Mozilla") && (strstr($_SERVER['HTTP_USER_AGENT'], "Gecko"))){


    
$browser = '<link rel="stylesheet" type="text/css" href="mozilla.css" />';

}else{

    
$browser = '<link rel="stylesheet" type="text/css" href="formate.css" />';

}

?>




<?=$browser?>

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen
Lindworm Nachtrag zu: „browserweiche funzt ned“
Optionen

ups, danke, die hab ich in der eile wohl übersehen ;)
bin das ganze jetzt nochmal anders angegangen:

es klappt trotz des maskierens ned, also hab ichs wieder geuppt

gleicher link wie oben, hab die datei geändert

es klappt trotz des maskierens ned, also hab ichs wieder geuppt

aber ich mach immer noch irgendwas falsch, schätze man kann den html-text nicht so einbinden, aber schon mal vielen dank für die guten tips, die du mir gegeben hast ;)
ist ja auch deine zeit, ich stell die frage dann mal in einem großen php-forum, damit ich dich nicht noch mehr belästige ^^

bei Antwort benachrichtigen
xafford Lindworm „ups, danke, die hab ich in der eile wohl übersehen bin das ganze jetzt nochmal...“
Optionen

So kann es auch nicht funktionieren aus mehreren Gründen:


  • wie wir schon festgestellt hatten, ist auf dem entsprechenden Server register_globals auf Off, ergo is die Variable $HTTP_USER_AGENT nicht vorhanden, es muß $_SERVER['HTTP_USER_AGENT'] heißen

  • wenn die Wertzuweisung an die Variable $mozilla erfolgt, dann nutzt ein Prüfen der Variable $mozila nichts, sie ist nämlich immer false, weil an $mozilla zugeiesen wurde (jaja, die Vertipper) ;o)

  • auch wenn sonst alles klappen würde, dann wäre mit deinem aufruf exit; (der immer ausgewertet wird, weil er in beiden Ästen steht) Schluß mit deiner Seite. Nach einem exit erfolgt keine Ausgabe durch den Server mehr, auch kein HTML!!!


Noch als kleine Randbemerkung: die ereg_* Funktionen vermeidet man besser, sie sind recht langsam und nicht so praktisch, wie die preg_*-Funktionen. Für deinen Fall reichen aber auf jeden Fall die String-Funktionen strstr() oder stristr() vollkommen aus und sind schneller (nur so für die Zukunft.

PS.: Falls Du das Entwickler-Forum meinst, oder PHP.net, da kann es durchaus passieren, daß Du auch meine Zeit nutzt ;o)
Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen
Lindworm Nachtrag zu: „browserweiche funzt ned“
Optionen

hmm, habs nochmal überarbeitet, ein dickes DANKE für die tipps ;)
hab sie wieder veraendert klick
PS: meine php-resource.de ;)

bei Antwort benachrichtigen
xafford Lindworm „hmm, habs nochmal überarbeitet, ein dickes DANKE für die tipps hab sie wieder...“
Optionen

So sollte es eigentlich laufen (vorausgesetzt der USER-Agent wird richtig übermittelt).

PS: Das nächste Mal schick ich ne Rechnung ;o)

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen
Lindworm Nachtrag zu: „browserweiche funzt ned“
Optionen

hehe, funzt wohl inzwischen, müsste es noch in die html-datei integrieren und das script durchsucht die ausgabe nicht, sondern es funktioniert nur, wenn die tags genau übereinstimmen, kann man das auch durchsuchen lassen? und wenn ja wie?
PS: machst du sowas eigentlich beruflich oder mehr fun- und freizeitmaeßig?
und nochwas: du hast mir echt klasse geholfen, danke. denn ohne solche hilfe würde man, denke ich sschnell die lust am lernen einer script- oder programmier-sprache verlieren, weil man keine erfolgserlebnisse hat

bei Antwort benachrichtigen
xafford Lindworm „hehe, funzt wohl inzwischen, müsste es noch in die html-datei integrieren und...“
Optionen

Ich verstehe nicht ganz, was Du durchsuchen lassen willst, bzw. was Du mit durchsuchen der Ausgabe meinst.

Mittlerweile mache ich den Kram beruflich, bzw als Selbständiger, angefangen hat es aber eher hobbymäßig und ich bin dann mehr oder weniger rein gerutscht.

Genau dafür gibt es ja aber auch dieses (und die anderen) Foren. Ohne die Hilfe anderer steht man manchmal echt vor einem Problem und sieht die offensichtlichen Lösungen nicht, weil man einfach sich schon zu lange damit abgemüht hat, da hilft es eben, wenn einem jemand einen schnellen Tipp geben kann.

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen
Lindworm Nachtrag zu: „browserweiche funzt ned“
Optionen

ich meine mit durchsuchen, dass geguckt werden soll, ob bspw. das wort gecko in der ausgabe vom user-agent vorkommt, denn momentan ist es so, dass geprüft wird, ob der user-agent mit bspw. gecko übereinstimmt. aber ich will ja jetzt nicht alle möglichen kombinationen für mozilla-browser prüfen lassen, sondern eben prüfen, ob gecko in der ausgabe des user-agents vorkommt

bei Antwort benachrichtigen
Lindworm Nachtrag zu: „browserweiche funzt ned“
Optionen

also hab die lösung:
es muss $mozilla = stristr($_SERVER['HTTP_USER_AGENT'], "Gecko" ); heißen
und nicht $mozilla = stristr("Gecko", $_SERVER['HTTP_USER_AGENT']);
der suchbegriff muss also hinten stehen
da muss man aber auch erstmal drauf kommen :rolleyes:

bei Antwort benachrichtigen
xafford Lindworm „also hab die lösung: es muss mozilla stristr _SERVER HTTP_USER_AGENT , Gecko...“
Optionen

Kleiner Tipp:
Lade Dir von www.php.net die Dokumentation in Form der .chm-Datei in Deutsch herunter. Da stehen so gut wie alle verfügbaren Funktionen inklusive ihrer Parameter -(reihenfolge) drinnen.

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen
Lindworm Nachtrag zu: „browserweiche funzt ned“
Optionen

habs mir runtergeladen und mal reingeschaut, die doku is echt gut, danke für den tipp ;)

bei Antwort benachrichtigen