Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
browserweiche will nicht, so wie sie soll [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
brauche Webseite ideal für Vereine und Firmen
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
browserweiche will nicht, so wie sie soll


 
lindworm
14-12-2004, 22:22 
 
hi@all, habe ein problem und zwar möchtet ich, 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($_SERVER['HTTP_USER_AGENT'], "Mozilla")
{
$browser = "<link rel="stylesheet" type="text/css" href="mozilla.css">";}
else {
$browser = "<link rel="stylesheet" type="text/css" href="formate.css">";}
?>

<?echo $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 fett markiert, damit man besser erkennen kann, worum es sich handelt.
Ich muss also noch irgendeinen Fehler drin haben. Könnt ihr irgendwas finden?
ich hab schon ewig im netz gesucht, aber nichts gefunden, bitte um genade mit einem unwissenden ;)

 
Wurzel
14-12-2004, 22:34 
 
1. vergleich mal:

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


2. bringt dir eine prüfung auf "Mozilla" nicht viel, da der IE diesen string auch sendet und der mac safari und ...

 
lindworm
14-12-2004, 22:37 
 
ja, ich habe mir überlegt auf gecko zu prüfen, da der eintrag nur bei mozilla und dem aktuellen netscape (sehr mozilla-ähnlich)
danke schon mal für die antwort

aber das ändern der anführungszeichen hat leider nichts geändert, ich bekomme immer noch die selbe ausgabe :(
trotzdem schonmal danke, dass du geantwortet hast ;)

 
derHund
14-12-2004, 23:13 
 
hmm,

auch wenn es keiner mehr hören kann ...

- firefox interpretiert richtig, ie falsch.
- trotzdem läßt sich so layouten, daß das erscheinungsbild in allen browsern gleich ist

egal.

wie sieht momentan der erzeugte und der erzeugende source aus? nach anwendung der von Wurzel vorgeschlagenen änderungen muß sich etwas geändert haben ....

sich auf den ua zu verlassen, ist das schlechteste, was du machen kannst ...

http://www.dithered.com/css_filters/css_only/index.php

 
haSta
14-12-2004, 23:32 
 
Also das was Wurzel vorgeschlagen hat, sollte eigentlich auch so funktionieren...

ansonsten escapen:

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

 
wahsaga
15-12-2004, 00:43 
 
Original geschrieben von derHund
auch wenn es keiner mehr hören kann ...

- firefox interpretiert richtig, ie falsch.
- trotzdem läßt sich so layouten, daß das erscheinungsbild in allen browsern gleich ist
und serverseitige "browserweichen" sind der größte quatsch, und unzuverlässig.

CSS hacks und/oder conditional comments sind die zu bevorzugenden mittel, um den browsern nach ihren fähigkeiten anderes CSS vorzusetzen, und nicht nach dem, wo für sie sich ausgeben.

 
lindworm
15-12-2004, 17:00 
 
@derhund: ich weis ;)
und wegen der kompatibilität: hab sonst immer so gearbeitet, aber da mozilla bei tabellen angegebene class-definitionen für die platzangabe anderst interpretiert als der ie und opera, welche tabellen-classes genauso interpretieren wie normale über
<p class="soundso">blabla</p> eingefügte classes. nur dafür brauche ich so ne blöde browserweiche

@wahsaga: also ich finde es ist eine sauberere lösung, als hacks, welche man bei jeder neuen version von browsern prüfen, muss, ob sie noch funktionieren

und leider haben die änderungen von wurzel gar nichts gebracht und das escapen bringt, dass kein browser auch nur irgendein stylesheet findet

 
penizillin
16-12-2004, 16:11 
 
dann wirst du wohl etwas falsch gemacht haben, denn die vorgeschlagene lösung war in ordnung.

 
lindworm
16-12-2004, 22:59 
 
hab echt alles so eingeben, ich weis echt nicht mehr weiter :(

sieht jetz so aus:

<?php
$mozilla = strstr("gecko" , $_SERVER['HTTP_USER_AGENT']);
if ($mozilla == true)
{
echo ('<link rel="stylesheet" type="text/css" href="mozilla.css">');

}
else
{
echo ('<link rel="stylesheet" type="text/css" href="formate.css">');

}
?>

funzt aber immer noch nicht, trotzdem schonmal ein dickes DANKE für eure antworten und eure zeit ;)

 
Wurzel
16-12-2004, 23:24 
 
wie äussert sich "funzt nicht"?

- fehlermeldungen?
- error-reporting auf E_ALL?
- kann man das online sehen?
- hast du testausgaben gemacht?

 
Skaschy
17-12-2004, 00:20 
 
Gehört das ned ins HTML Forum ?!

btw:

<link href="mozilla.css" rel="stylesheet" type="text/css" title="Mozilla Style" />
<!--[if IE]>
<link href="ie.css" rel="stylesheet" type="text/css" title="IE Style" />
<![endif]-->


Suchste das ?!

 
lindworm
17-12-2004, 23:13 
 
also, grundsätzlich scheint das script auch zu funktionieren, allerdings wird der strstr-tag
nur als komplette ausgabe ausgewertet, also nicht, wenn ich nur gecko eingebe, sondern erst, wenn die komplette ausgabe mit
$_SERVER['HTTP_USER_AGENT']
übereinstimmt, aber ich möchte ja, dass die ausgabe dieser variable nach einem bestimmten begriff durchsucht wird. kann mir da jemand helfen? ich weiß nicht wie man das definieren würde und habe auch schon im internet gesucht, aber nichts passendes gefunden :(

und leider klappt das bei mir mit dem einbinden noch ned so ganz, wie kann ich die php-datei direkt am anfang aus einer externen datei laden?
mit dem include-befehl? und wenn ja, wie lautet der string?
und nochmal HERZLCIHEN DANK für eure wertvolle zeit und hilfe für php-noobs ;)

 
Wurzel
17-12-2004, 23:46 
 
nimm mal stristr ... in meinen stats steht "Gecko" nicht "gecko" und strstr vergleicht auf gross- & kleinschreibung

@skaschy
er wills partout mit php machen ...

 
lindworm
18-12-2004, 01:27 
 
hmm, aendern tut das leider nix, wenn ich stristri nehme :(

PS: javascript will ich ned nehmen, weil viele das ausgeschaltet haben und deshalb die falsche/ gar keine css datei bekommen würden

 
penizillin
18-12-2004, 15:03 
 
php.net berichtet:
string stristr (string haystack, string needle)

weißt du, was die worte haystack und needle in den klammern bedeuten?

 
lindworm
18-12-2004, 16:09 
 
hmm, also mein wörterbuch meint haystack heiße heuschober also sowas wie ne scheune lol
und needle heißt nadel
*pling*
nadel im heuhaufen, rofl

 
penizillin
18-12-2004, 16:26 
 
es ist zwar schön, dich zum schmunzeln zu bringen, aber die frage hatte ihren sinn.

diese termini werden verwendet um die benutzung des befehls zu verdeutlichen - man sucht eine NADEL in einem HEUHAUFEN. in deinem letzten code-zitat suchst du einen HEUHAUFEN in einer NADEL.

man kriegt ja echt muskelkater von diesem zaunpfahl.

 
lindworm
18-12-2004, 22:05 
 
achso, da hast du rgendwie recht ^^
soll es statt

$mozilla = stristr("gecko" , $_SERVER['HTTP_USER_AGENT']);

so heißen?
$mozilla = stristr($_SERVER['HTTP_USER_AGENT'] , "gecko" );

und muss vor und hinter dem komma ein leerzeichen sein, oder wie normal nur dahinter, hab nämlich gerade bemerkt, dass ich in meinem code vor und hinter dem komma ein hab
*beulevomzaunpfahlkühlengeh*

 
penizillin
19-12-2004, 01:37 
 
so ist es richtig.

leerezeichen bei der kommastzung zwischen einzelnen argumenten ist zwar egal, aber man empfiehlt das übliche wort-komma-leerzeichen-schema, um den lesefluss nicht zu stören.

 
lindworm
19-12-2004, 01:56 
 
echo ('SUPER DANKE DANKE DANKE ES KLAPPT');
*megafreu*
lag wohl an der reihenfolge.
@penizillin: wo hast du das bei php.net gefunden?
hab das nämlich irgendwie ned gefunden

//habs gefunden und runtergeladen, nochmal DANKE für alles, hoffe ich kann mich mal revanchieren

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:26 Uhr.