Gå til innhold

PHPsniffer med css


Anbefalte innlegg

engang for del år siden fikk jeg laget et php script som fant ut hviken nett leser brukern har med hjelp av http://phpsniff.sourceforge.net/

 

når phpsniffer har funnet ut hviken nettleser brukern har henter den inn en css fil for den nettlesern som brukeren benytter.

 

 

 

Men jeg husker ikke hvordan det gjores eller noe såtn så håper at noen kan hjelpe meg og lage detet script

 

si at jeg har 4 css filer

 

 

ie6.css

ie7.css

firefox.css

opera.css

 

Håpen her kan ha noen gode tips til hvoedan det gjøres?

Lenke til kommentar
Videoannonse
Annonse

Er ikke sikker på hvordan phpSniff funker men..

<link rel="stylesheet" type="text/css" media="screen" href="
<?php
switch ($browser) {
 case "ie6":
   echo 'ie6.css';
   break;
}
?>
" />

Så er det bare å gjenta case for hver browser/style.

Endret av darkadmin
Lenke til kommentar
Om jeg ikke tar helt feil, så identifiserer Opera seg som IE6, eller har de sluttet med det?

8884643[/snapback]

 

Det er vel det PHPsniffer gjør, finner ut browseren. Selv om den kanskje identifiserer seg som ie6, så blir det vel oppdaget på en eller annen måte.

Lenke til kommentar

Opera identifiserte seg selv før som IE6 som standard, men nå identifiserer den seg som Opera, men du kan velge at den skal identifisere seg som andre. Så lenge du har valgt at Opera skal identifisere seg som noe annet så kan man ikke finne ut at det egentlig er Opera..

Lenke til kommentar
Er ikke sikker på hvordan phpSniff funker men..

<link rel="stylesheet" type="text/css" media="screen" href="
<?php
switch ($browser) {
 case "ie6":
   echo 'ie6.css';
   break;
}
?>
" />

Så er det bare å gjenta case for hver browser/style.

8883879[/snapback]

 

takk.

 

det var noe sånt jeg hadde også inludet jeg en fil i phpsniffer tror jeg!

 

men hadde hvert fint hvis noen her hadde kunnet hjelpet meg og gjøre ferdig scripet?

 

fordi det jeg fikk av deg nå mangler jeg vel den delen som finenr ut hviken nettlesr bruker har?

Lenke til kommentar
Hadde ingen problemer med opera da jeg hadde det scrpet sist

 

phpsniffer fungerte perfekt da ihvertfall men jeg hukser ikke åssen det gjores!

 

så håper dere kan hjelpe meg og få dette til:)

8886651[/snapback]

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
   <title>
     Tittel
   </title>
<?php
require_once './phpsniff-2.1.3/phpSniff.class.php';
$style = '<link rel="stylesheet" type="text/css" media="screen" href="%s" />';
$phpSniff = &new phpSniff();
$browser = $phpSniff->property('browser');
$version = $phpSniff->property('maj_ver');
switch ($browser) {
  case 'mz':
       printf($style, 'firefox.css');
       break;
  case 'ie':
       switch ($version) {
           case 7:
               printf($style, 'ie7.css');
               break;
           case 6:
               printf($style, 'ie6.css');
               break;
           default:
               printf($style, 'ie-old.css');
               break;
       }
       break;
  case 'op':
       printf($style, 'opera.css');
       break;
}
?>
</head>
<body>
<h1>weee</h1>
</body>
</html>

Sjekk http://phpsniff.sourceforge.net/ så finner du ut hva verdiene til $client->propery('browser') kan være. Så er det bare å lage et stylesheet for hver browser.

Endret av darkadmin
Lenke til kommentar
Opera identifiserte seg selv før som IE6 som standard, men nå identifiserer den seg som Opera, men du kan velge at den skal identifisere seg som andre. Så lenge du har valgt at Opera skal identifisere seg som noe annet så kan man ikke finne ut at det egentlig er Opera..

8885171[/snapback]

Den heiv på Opera en plass i stringen. Den oppga seg nok som IE til at dei som sjekka etter IE fant IE, men samtidig var det lett å sjå at det var opera. Prøv sjølv om du er i tvil.

Lenke til kommentar
Hadde ingen problemer med opera da jeg hadde det scrpet sist

 

phpsniffer fungerte perfekt da ihvertfall men jeg hukser ikke åssen det gjores!

 

så håper dere kan hjelpe meg og få dette til:)

8886651[/snapback]

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
   <title>
     Tittel
   </title>
<?php
require_once './phpsniff-2.1.3/phpSniff.class.php';
$style = '<link rel="stylesheet" type="text/css" media="screen" href="%s" />';
$phpSniff = &new phpSniff();
$browser = $phpSniff->property('browser');
switch ($browser) {
   case 'mz':
       printf($style, 'firefox.css');
       break;
   case 'ie':
       printf($style, 'msie.css');
       break;
   case 'op':
       printf($style, 'opera.css');
       break;
}
?>
</head>
<body>
<h1>weee</h1>
</body>
</html>

Sjekk http://phpsniff.sourceforge.net/ så finner du ut hva verdiene til $client->propery('browser') kan være. Så er det bare å lage et stylesheet for hver browser.

8887416[/snapback]

 

tussen takk :)

 

en ting.

 

hvordan får jeg scriptet til og kjenne igjenn IE versjon 6 og 7? :)

hvordan gjør jeg det?

 

kan jeg feks bruke case 'MSIE6':

case 'MSIE7':

Endret av larrylu
Lenke til kommentar

Oppdaterte posten min over. Hvis du vil at ie6.css skal gjelde for alle versjoner av IE, unntatt v7 så kan du fjerne

case 6:
   printf($style, 'ie6.css');
   break;
default:
   printf($style, 'ie-old.css');
   break;

og erstatte det med

default:
   printf($style, 'ie6.css');
   break;

Lenke til kommentar

blir det sånn her ?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
   <title>
     Tittel
   </title>
<?php
require_once './phpsniff-2.1.3/phpSniff.class.php';
$style = '<link rel="stylesheet" type="text/css" media="screen" href="%s" />';
$phpSniff = &new phpSniff();
$browser = $phpSniff->property('browser');
$version = $phpSniff->property('maj_ver');
switch ($browser) {
  case 'mz':
       printf($style, 'firefox.css');
       break;
  case 'ie':
       switch ($version) {
           case 7:
               printf($style, 'ie7.css');
               break;
           default:
   printf($style, 'ie6.css');
     break;
       }
       break;
  case 'op':
       printf($style, 'opera.css');
       break;
}
?>
</head>
<body>
<h1>weee</h1>
</body>
</html>

Lenke til kommentar

#php.no har en del kjekke tips :)

[16:13:42] [TommyG] Som jeg fortalte forrige gang du spurte om dette. Drit i slik detekteringstull, og bruk conditional includes istedet. Da lar du nettleseren ta ansvaret for å velge riktig stilark

[16:14:12] [TommyG] <!--[if lte IE 6]><link rel="stylesheet" type="text/css" media="screen" href="resources/styles/ie.css" /><![endif]-->

[16:14:31] [TommyG] <!--[if IE 7]><link rel="stylesheet" type="text/css" media="screen" href="resources/styles/ie7.css" /><![endif]-->

Og det er sant som han sier, det er bare IE6/7 som krever egne stilark, og det er kun til veldig sære saker.

Lenke til kommentar
#php.no har en del kjekke tips :)
[16:13:42] [TommyG] Som jeg fortalte forrige gang du spurte om dette. Drit i slik detekteringstull, og bruk conditional includes istedet. Da lar du nettleseren ta ansvaret for å velge riktig stilark

[16:14:12] [TommyG] <!--[if lte IE 6]><link rel="stylesheet" type="text/css" media="screen" href="resources/styles/ie.css" /><![endif]-->

[16:14:31] [TommyG] <!--[if IE 7]><link rel="stylesheet" type="text/css" media="screen" href="resources/styles/ie7.css" /><![endif]-->

Og det er sant som han sier, det er bare IE6/7 som krever egne stilark, og det er kun til veldig sære saker.

8900478[/snapback]

 

Litt uenig.

 

slik som denne siden her: www.haldensi.no

den får man aldri lik uten og ha et slikt script.

 

hvis man skal få det til bør man kunne css Meget godt.

og så god men jeg neppe før om mange år.

Lenke til kommentar
Hvis du skal bruke PHP, så er nok det enkleste å prøve ut hva get_browser() spytter ut, og bygge noe enkle greier rundt det.

 

Og da risker du å sende IE-stilark til en nettleser som maskerer seg som IE (f.eks. Opera), og du vil få problemer senere når diverse UA-strenger flytter rundt på seg. Å sniffe UA-strenger på serverside vil veldig fort ødelegge fremoverkompabilitet.

 

Jeg vil sterkt fraråde å bruke serverside kode for å sniffe browsere. Hvis problemet bare består i at IE trøbler seg (noe som er 99%), gjør du veldig klokt i å heller satse på å bruke Conditional Comments. Det lar deg sende spesielle stilark til ulike IE-versjoner uten noen som helst serverside-trøbbel.

 

Den siden som trådstarter linker til kan meget lett utføres vha. conditional comments (og uten vanskeligheter med ren CSS også). Det er ikke et argument for å kjøre det på serverside.

Lenke til kommentar
Hvis du skal bruke PHP, så er nok det enkleste å prøve ut hva get_browser() spytter ut, og bygge noe enkle greier rundt det.

 

Og da risker du å sende IE-stilark til en nettleser som maskerer seg som IE (f.eks. Opera), og du vil få problemer senere når diverse UA-strenger flytter rundt på seg. Å sniffe UA-strenger på serverside vil veldig fort ødelegge fremoverkompabilitet.

 

Jeg vil sterkt fraråde å bruke serverside kode for å sniffe browsere. Hvis problemet bare består i at IE trøbler seg (noe som er 99%), gjør du veldig klokt i å heller satse på å bruke Conditional Comments. Det lar deg sende spesielle stilark til ulike IE-versjoner uten noen som helst serverside-trøbbel.

 

Den siden som trådstarter linker til kan meget lett utføres vha. conditional comments (og uten vanskeligheter med ren CSS også). Det er ikke et argument for å kjøre det på serverside.

8911976[/snapback]

 

jeg har testet ut skrivet på par nettleres nå og alle kommer opp riktig..

så opera kommer ikke opp feil.

 

pga phpsniffer

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...