[PHP/?] Browser-filtering voor CSS script

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ben op het moment in het kader van school en onderwijs enzo een website in elkaar aan het knutselen, en ben er tijdens het testen achter gekomen dat IE 5.5 een ongelofelijke rotzooi maakt van de layout. Nu is het grootste gedeelte wel te verhelpen, maar als ik sommige dingen fix voor 5.5 heeft 6.0 (en Mozilla) er weer gelazer mee.

Aangezien de rest van de site vooral php is (en ik dit dus aan het leren ben) zou het wel aardig zijn om een oplossing te hebben die alleen uit php bestaat, maar ben er tot nog toe geen tegengekomen. Heb al wat rondgezocht met de search, maar de enige oplossing die ik hier vond werkte hier niet (Apache 2 & PHP4.3.4 (Win32 en Linux (2 systemen)), en een ander browser detect script werkte alleen met register_globals=On, iets wat ik niet verwacht dat aanstaat op de server waar de uiteindelijke site op moet komen te staan (ben nog niet in de gelegenheid geweest dit na te gaan)

Bedoeling is dus dat IE5.5 (en lager) een ander stylesheet krijgen dan de andere browers (IE 6 / Mozilla (rest van de browsers die dan hopelijk standaard-correct zijn en ik niet in staat ben voor te testen))
liefst een oplossing die puur php is, en dan werkt met register_globals=Off, anders een andere oplossing die goed werkt :)

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 21-09 18:44

gorgi_19

Kruimeltjes zijn weer op :9

En waar zit je probleem? Of ga je er van uit dat we hier met alle liefde een script voor je gaan eerzetten in PHP?

Allicht een optie om ook goed HTML te leren, want daar zit je eigenlijke probleem?

[ Voor 28% gewijzigd door gorgi_19 op 29-01-2004 20:58 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

Verwijderd

Als je een werkend script hebt met register_globals=on dan is het toch niet zo'n probleem om dit register_globals=off compliant te maken? Als je echt lui bent zet je bovenaan je script een paar regels code om je variabelen weer global te maken (is erg vies natuurlijk, maar werkt wel :X).

[ Voor 5% gewijzigd door Verwijderd op 29-01-2004 20:58 ]


Acties:
  • 0 Henk 'm!

  • Johnny
  • Registratie: December 2001
  • Laatst online: 21-09 14:39

Johnny

ondergewaardeerde internetguru

Als je nog niet eens weet of register globals aan/ui staat, is het dan niet handiger om het vantevoren uit te zoeken?

Het is trouwens een enorm karwei om een scheiding te maken tussen wel/niet ondersteunde browsers omdat er al enorm veel bestaan en constant nieuwe bijkomen.

Een mooiere oplossing is door CSS te laten checken, dat kan doormiddel van allerlei ranzige CSS hacks die oudere browsers dan niet kunnen lezen.

Makklijker is echter om gewoon iedereen die het vertikt eens in de 5 jaar een kleine browser upgrade te doen een kale pagina zonder CSS opmaak voor te schotelen, als je goed HTML gebruikt zal de hele pagina nog heel goed bruikbaar zijn.

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:44

crisp

Devver

Pixelated

Ik denk dat je problemen hebt met strict en quirks rendermodes. IE6 kent wel een strict rendermode, net als Mozilla e.d. waarin het w3c boxmodel wordt gebruikt. IE5.5 kent geen strict rendermode.
Vaak is er nog wel omheen te werken met wat CSS foefjes (de echte hacks zou ik liever niet gebruiken), en het meest eenvoudig is dan om te zorgen dat IE6 ook in quirksmode rendert zodat je enkel een scheiding hoeft te maken tussen IE en non-IE.

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Suepahfly
  • Registratie: Juni 2001
  • Laatst online: 17-09 17:05
Ooit gehoord van de Tantec Hack? Geen PHP nodig

Als je het dan toch met php wilt doen kan je naar de user agent kijken
PHP:
1
2
3
4
ifstristr("MSIE 6.0", $_SERVER['HTTP_USER_AGENT']))
   print("<link href=\"IE5.css\" rel=\"stylesheet\" type=\"text/css\">");
else
     print("<link href=\"normaal.css\" rel=\"stylesheet\" type=\"text/css\">");

[ Voor 39% gewijzigd door Suepahfly op 29-01-2004 22:16 ]


Acties:
  • 0 Henk 'm!

  • BetuweKees
  • Registratie: Januari 2003
  • Laatst online: 15-07 20:53

BetuweKees

Flipje uit Tiel

volgens mij is dit meer iets voor /13 maar ik zou net als crisp toch eerder gaan voor de css hacks. Ik maak zelf bijvoorbeeld mij pagina's meestal zodanig dat ze zonder de styles ook prima te bekijken zijn. Vervolgens laad ik mijn stylesheet doormiddel van @import "style.css"; een methode die ie4 niet ondersteund. Alle browsers onder ie4 krijgen op die manier de pure html te zien, en nieuwere browsers de compleet mooi gestylde pagina.

Als je door middel van PHP onderscheid wil maken kun je werken met $_SERVER['HTTP_USER_AGENT'] bijvoorbeeld

PHP:
1
2
3
4
5
6
7
8
9
10
// Checks if browser is MSIE
function isMSIE() {
    $agent = $_SERVER['HTTP_USER_AGENT'];
    if(eregi("msie",$agent) && !eregi("opera",$agent)) {
        return true;
    }
    else {
        return false;
    }
}


als je in deze code nog even detectie van versie nummer in bouwt ben je al een eind op weg.

daarnaast: heb je je pagina wel goed gevalideerd dmv de w3c validator? foute html kan er nl ook voor zorgen dat je weergave verneukt wordt..

[ Voor 5% gewijzigd door BetuweKees op 29-01-2004 22:38 ]

Through meditation I program my heart to beat breakbeats and hum basslines on exhalation -Blackalicious || *BetuweKees was AFK; op de fiets richting China en verder


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:44

crisp

Devver

Pixelated

Suepahfly: de Tantec hack vind ik wel 1 van de meest smerige hacks die er zijn...

BetuweKees: waarom eregi gebruiken en niet gewoon stristr?

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
@gorgi_19: nee joh, natuurlijk vraag ik hier niet om hulp omdat ik zelf net een week of 2 echt met php bezig ben en nog niet weet hoe ik alles moet doen....

@RobinVR: umm.. juist.. ik heb nog een hoop te leren, laten we het daar op houden ;)

@Johnny: Als de site het goed doet met IE 5.5 en 6.0 en Mozilla, dan ben ik al blij zat, dat de paar mensen met Opera, Konquerer, Safari, Mosaic en watniet her niet te zien krijgen zoals ik heb bedoeld (als dat al zo is), dan neem ik dat voor lief. En over dat globals. Het is sowieso netter als het script werkt met die setting uit, op m'n eigen server kan ik het wel aanzetten als ik wil, maar op de server waar het moet komen (waar ik nog steeds geen toegang heb *argh*) staat het waarschijnlijk uit.

@crisp: okay, top. Hoe kan ik quirksmode forceren?

@Supahfly: niet om te zeuren hoor, maar die tantechack is inderdaad wel ongelofelijk ranzig... user agent checks zijn inderdaad waar ik naar op zoek ben. Nu alleen even zoeken hoe die versie er goed uit komt (op de een of andere manier krijg ik het niet voor elkaar om <= 5.5 te doen... :?)

@Betuwekees: @import is inderdaad een goeie, dat scheid het kaf van het koren wel. En ja, de site is W3C validated, en het CSS evenzo.

Tot zo ver bedankt voor de (zinnige) replies... post morgen wel de resultaten die er dan (hopelijk) zijn

Acties:
  • 0 Henk 'm!

Verwijderd

Ik heb laatst de conditional comments van ie weer herontdekt. Kun je voor stylesheets en script s gebruiken
<!--[if IE ]>
<link href=\"IE5.css\" rel=\"stylesheet\" type=\"text/css\">
<![endif]-->

Je kunt er ook versienummers gebruiken. Zie ook:
http://msdn.microsoft.com...overview/ccomment_ovw.asp

Acties:
  • 0 Henk 'm!

  • CrashOne
  • Registratie: Juli 2000
  • Niet online

CrashOne

oOoOoOoOoOoOoOoOoOo

Verwijderd schreef op 30 januari 2004 @ 02:14:
[..]

@crisp: okay, top. Hoe kan ik quirksmode forceren?

[..]
Zet iets boven je doctype, bijv. <!-- --> .

Huur mij in als freelance SEO consultant!


Acties:
  • 0 Henk 'm!

  • CrashOne
  • Registratie: Juli 2000
  • Niet online

CrashOne

oOoOoOoOoOoOoOoOoOo

Verwijderd schreef op 30 januari 2004 @ 02:27:
Ik heb laatst de conditional comments van ie weer herontdekt. Kun je voor stylesheets en script s gebruiken
<!--[if IE ]>
<link href=\"IE5.css\" rel=\"stylesheet\" type=\"text/css\">
<![endif]-->

Je kunt er ook versienummers gebruiken. Zie ook:
http://msdn.microsoft.com...overview/ccomment_ovw.asp
Das wel erg vies zeg en erg onhandig, naar mijn weten ondersteund geen enkele andere browser dit, dus die voeren je script altijd uit.

Huur mij in als freelance SEO consultant!


Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
CrashOne schreef op 30 januari 2004 @ 02:46:
[...]
Das wel erg vies zeg en erg onhandig, naar mijn weten ondersteund geen enkele andere browser dit, dus die voeren je script altijd uit.
code:
1
2
3
<!--[if IE ]>
<link href=\"IE5.css\" rel=\"stylesheet\" type=\"text/css\">
<![endif]-->


<!-- en --> zorgen hier toch ervoor dat het door andere UA's wordt gezien als comment.

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
IE6 rendert nu ook keurig in Quirksmode, en het onderscheid wordt gemaakt IE / non-IE, en alles lijkt tot zo ver prima te werken.

Enige ietwat wonderlijke is dat stristr niet lijkt te werken waar eregi dat wel doet. Niet dat het mij heel erg veel uitmaakt op het moment, maar heeft iemand een idee hoe dat nou helemaal zit?
Pagina: 1