Hei!
Ongelmana on asiakkaan käyttöjärjestelmän selvittäminen serveristä käsin.
<?php $OSList = array ( 'Windows 3.11' => 'Win16', 'Windows 95' => '(Windows 95)|(Win95)|(Windows_95)', 'Windows 98' => '(Windows 98)|(Win98)', 'Windows 2000' => '(Windows NT 5.0)|(Windows 2000)', 'Windows XP' => '(Windows NT 5.1)|(Windows XP)', 'Windows Server 2003' => '(Windows NT 5.2)', 'Windows Vista' => '(Windows NT 6.0)', 'Windows 7' => '(Windows NT 7.0)', 'Windows NT 4.0' => '(Windows NT 4.0)|(WinNT4.0)|(WinNT)|(Windows NT)', 'Windows ME' => 'Windows ME', 'Open BSD' => 'OpenBSD', 'Sun OS' => 'SunOS', 'Linux' => '(Linux)|(X11)', 'Mac OS' => '(Mac_PowerPC)|(Macintosh)', 'QNX' => 'QNX', 'BeOS' => 'BeOS', 'OS/2' => 'OS/2', 'Search Bot'=>'(nuhk)|(Googlebot)|(Yammybot)|(Openbot)|(Slurp)|(MSNBot)|(Ask Jeeves/Teoma)|(ia_archiver)' ); foreach($OSList as $CurrOS=>$Match) { if (eregi($Match, $_SERVER['HTTP_USER_AGENT'])) { break; } } echo "You are using ".$CurrOS; ?>
Kuinka tätä löytämääni PHP koodia olisi parasta rakentaa, niin,
että se antaa >WINDOWS95 koneella vastauksen DIRECTX ja LINUX/MAC
koneissa vastauksen OPENGL ja muissa NONE.
Mitä kaikkea tässä nyt sitten tapahtuu, minä en omaa kunnon kokemusta PHP
ohjelmoinnista, tuo ARRAY näyttää todella kummalliselta !!
//----
Kiitos,,
Mod. korjasi oikeat kooditagit
Käännä avaimet ja arvot taulukossa toisin päin, laita avaimet viittaamaan merkkijonoihin 'DIRECTX', 'OPENGL' ja 'NONE' sekä vaihda deprekoitu eregi preg_matchiin.
Kokoa tuosta listasta nuolten oikealla puolella olevat asiat. Seuraavassa olen ottanut vasta Win95- ja Linux-rivit, lisää loputkin.
<?php function tunnista() { $taulukko = array( "DIRECTX" => array("Windows 95", "Win95", "Windows_95"), "OPENGL" => array("Linux", "X11") ); // Tutkitaan eri vaihtoehdot (DX, OGL). foreach ($taulukko as $tulos => $jarjestelmat) { // Tutkitaan vaihtoehtoon kuuluvat järjestelmät. foreach ($jarjestelmat as $jarj) { // Jos järjestelmän nimi löytyy UA-stringistä, palautetaan tulos. if (strpos($_SERVER['HTTP_USER_AGENT'], $jarj) !== false) { return $tulos; } } } return "NONE"; } echo "Oikea valinta olisi ", tunnista(), "\n";
Ok!
Nuo "X11" ja "Linux" menevät samalla tavoin kaikilla, mutta entäs kun nuo "Win" ja "Mac"
ovat vain osina isompaa sanaa joissan koneissa,
kuinka ne olisi parasta PHP:n avulla etsiä,
ei varmaankaan ole varmaa että osaan laittaa kaikkien WIN ja MAC koneitten tavan
ilmaista itseäänsä tuohon taulukkoon.
Onko tuo foreach oikea kun etsii "Win" ja "Mac" tekstiä myöskin isommista sanoista.
Minulla ei ole aikaa eikä halua opetella PHP kieltä, jotenka kiitos teille.
Hmm... kukahan tuon ensimmäisn listan on tehnyt?
Windows 7:n versionumero EI OLE 7.
Se on "Windows NT 6.1"
Haet jotain tällästä "kevyttä" esimerkkiä?
http://techpatterns.com/downloads/scripts/
Aihe on jo aika vanha, joten et voi enää vastata siihen.