PHP style css dla konkretnej przeglądarki


(system) #1

Witam mam konieczność skorygowania małych błędów na stronie jeżeli chodzi o przeglądarkę chrome , opera smile.gif

I jedyne co znalazłem na google to coś takiego :

<?php

    $x = $_SERVER['HTTP_USER_AGENT'];


    if(substr_count($x,"chrome")!=0)

    { $styl = "chrome"; }


    echo "";

    ?>

Siedze nad tym cały dzień i nie mam pomysłu jak zrobić coś takiego :

Mam styl css .styl { color:black;} /*testowo tak*/

A na chrome i tylko na nim ma być .styl1 { color:red;}

I na każdej przeglądarce : FF ,Opera , IE będę miał tekst koloru czarnego a na chrome czerwonego smile.gif

Jak mam to zroić na podstawie kodu który przedstawiłem dokładnie jak mam to wyświetlić bo nie ogarniam za bardzo sad.gif

Proszę o pomoc..


(Krzysiek2501) #2

Nie znam się za bardzo na php. Ale myślę, że powinno to wyglądać jakoś tak że tam gdzie deklarujesz x musi ono przechowywać informacje o tym jaką przeglądarkę używa obecnie dana osoba a potem w if musisz dać warunek

if ( x == chrome ) { wyświetl .styl1{color:red;}

jeśli nie to wyświetl drugi i zakończenie wszystkiego. A teraz krótkie tłumaczenie nie wiem jak wygląda porównanie w php więc dałem z C++. I chciałem tu tylko obrazowo przedstawić jak to widzę jeśli znasz php tak słabo jak ja to jesteśmy w kropce :smiley:

Edit

Myślę, że deklaracja x jest dobra :slight_smile:

Po sprawdzeniu znak przyrównania jest dokładnie taki jak napisałem :stuck_out_tongue:


(Drobok) #3

Ta, ale warunek jest zły. Więcej nie trzeba dodać, bo wszystko było.


(system) #4

rozwiązano i juz działa :wink:

problemem było to że przypisaliśmy wartość zmiennej zamiast porównywaliśmy ją do czegoś zamiast '=' powinno być '==' i wszystko ładnie pięknie dziala :wink:


(Damgora) #5

Kolejność ma znaczenie bo musisz najpierw zapisać jakąś wartość do zmiennej by móc ją potem porównać z inną (no właśnie porównać, a nie przypisać - powtórka z operatorów)


(Krzysiek2501) #6

Porównując te kody ta linijka

$styl = "undefined";

nie jest ci potrzebna w kodzie który jak piszesz ty sobie zrobiłeś nie ma wykorzystania i po usunięciu nie wpłynie raczej na poprawność wyświetlania całej reszty ale piszę tak dla usunięcia zbędnych części kodu. Możesz zawsze dodać

else if ($styl = "undefined") echo '';

gdzieś w znaczniku meta jak tu piszesz.

Może warto zastosować else i podać co ma być wyświetlone jeśli nie będzie to chrome ? To takie moje wnioski z twojego postu bo php to kompletnie nie moja bajka może w przyszłości.


(system) #7

Ups pomyłkowo z edytowałem nie ten post co trzeba i usunąłem i tak błędny kod :wink:

Jak napisałem 2 posty wyżej już wszyskto działa :wink:

I tak Cayman3 masz rację kolejność w tym przypadku ma znaczenie chodź w w innych przypadkach może wystąpić odstąpienie od reguły ale to zależy od kodu , i co ma robić :slight_smile:

W każdym razie zamykam ten temat :slight_smile:

Dzięki za odpowiedzi :wink: I pomoc


(Damgora) #8

Ten sam błąd z operatorem! A jeśli chodzi o upraszczanie tego kodu to zależnie od tego czy ma mieć możliwość dodania obsługi innych przeglądarek czy ograniczać się tylko do Chrome'a można to zrobić np. tak: tylko Chrome:

if (strpos($_SERVER['HTTP_USER_AGENT'], 'Chrome') !== false)
     echo '';[/code]


wersja rozszerzalna

[code=php]$styles = array(     'Chrome' => 'css/chrome.css',     'Opera' => 'css/opera.css');if ($_SERVER['HTTP_USER_AGENT'])     foreach ($styles as $key => $dir)          if (strpos($_SERVER['HTTP_USER_AGENT'], $key) !== false){               echo '.$dir.'" />';               break;          }

dane do tablicy można trzymać w bazie albo pliku konfiguracyjnym

edit: dodany warunek sprawdzający czy został wysłany niepusty UA


(system) #9

Nie będę już zmieniał zrobiłem na kodzie który podałem tylko ze zmienionymi operatorami na poprawne wszystko działa i bez większych problemów mogę dodać (w razie potrzeby) inne przeglądarki :slight_smile:

Ale dzięki , zapiszę to sobie może się przydać :slight_smile: