Mozilla und $HTTP_USER_AGENT
Martin
- php
hallo zusammen,
ich habe folgendes in meine website eingebaut
<?php
if (strpos($HTTP_USER_AGENT,"Mozilla")) {
echo("<link rel="stylesheet" type="text/css" href="../src/style_mozilla.css" />\n");
} else {
echo("<link rel="stylesheet" type="text/css" href="../src/style.css" />\n");
}
?>
PHP funktioniert alles wunderbar, globalVars sind aktiviert, aber das script funktioniert nicht. es liefert immer false, d.h. der standard-style-sheet wird geladen, anstatt dem speziellen für mozilla (bzw firefox).
was ist daran falsch?
gruß
Martin
Ein Problem kann sein, dass sich der Mozilla sich als Internet Explorer ausgibt.
Bei Opera weiss ich kann man die Einstellen
Hi,
was ist daran falsch?
vieles.
1.) Der User-Agent-String ist bar jedweden Belanges. Beschäftige Dich mit CSS-Hacks.
2.) "Das spezielle Stylesheet" sollte für den Browser mit dem speziellsten Verhalten sein, nicht für den standardkonformsten - also für den IE.
3.) "Mozilla" kommt in so ziemlich _jedem_ User-Agent-String vor.
4.) register_globals sollte bei PHP _grundsätzlich_ ausgeschaltet sein.
5.) Du hast keine Fehleranalyse durchgeführt.
Cheatah
PHP funktioniert alles wunderbar, <b>globalVars sind aktiviert</b>, aber das script funktioniert nicht. es liefert immer false, d.h. der standard-style-sheet wird geladen, anstatt dem speziellen für mozilla (bzw firefox).
darf ich dir eine frage stellen?
was bedeutet das, "globalVars sind aktiviert", muss man das irgendwo aktivieren dass man globale Variablen definieren kann?
danke im voraus
mfg gerhard
Hallo!
was bedeutet das, "globalVars sind aktiviert", muss man das irgendwo aktivieren dass man globale Variablen definieren kann?
Ich denke er meint die php.ini Einstellung "register_globals", siehe hierzu:
http://de3.php.net/manual/de/ini.sect.data-handling.php#ini.register-globals
In diesem Zusammenhang sollte man aber in jedem Fall auch die Sicherheitsaspekte berücksichtigen, siehe auch: http://de3.php.net/manual/de/security.registerglobals.php
Aus Sichereits-Gründen sollte man register_globals in jedem Fall deaktivieren. Man muss sich nur daran gewöhnen mit $_GET, $_POST und $_SERVER zu arbeiten, siehe: http://de3.php.net/manual/de/reserved.variables.php
Grüße
Andreas
Hallo Martin,
ich habe folgendes in meine website eingebaut
<?php
if (strpos($HTTP_USER_AGENT,"Mozilla")) {
echo("<link rel="stylesheet" type="text/css" href="../src/style_mozilla.css" />\n");
} else {
echo("<link rel="stylesheet" type="text/css" href="../src/style.css" />\n");
}
?>PHP funktioniert alles wunderbar, globalVars sind aktiviert, aber das script funktioniert nicht. es liefert immer false, d.h. der standard-style-sheet wird geladen, anstatt dem speziellen für mozilla (bzw firefox).
Ich denke mal, dass das "Mozilla" am Anfang von $HTTP_USER_AGENT vorkommt, also an Position 0. Leider wird diese 0 als etwas Unwahres interpretiert, als funktioniert es nicht.
So geht es richtig:
if(strpos($HTTP_USER_AGENT,"Mozilla") !== false)
{
# OK, Mozilla
}
else
{
# Kein Mozilla
}
Dadurch wird geprüft, ob
strpos($HTTP_USER_AGENT,"Mozilla") wirklich vom Typ her "false" ergibt. Und das trifft hier auf eine 0 nicht zu.
Es ist aber generell keine gute Idee, register_globals zu aktivieren. Schalte es besser ab!
Viele Grüße
Patrick Canterino