Olen nyt pähkäillyt seuraavanlaisen koodipätkän kanssa joka ei yksinkertaisesti suostu toimimaan.
<?php switch($_SERVER['query_string']) { case testi1: print "testi 1 teksti"; break; case testi2: print "testi 2 teksti"; break; case testi3: print "testi 3 teksti"; break; default: print "404 sivu"; } ?>
Linkit ovat muotoa ?testi1, ?testi2 etc. Ihan sama mitä osoiterivi näyttää, mutta printin tuloksena on aina "404 sivu". Missä vika? :l
Ja vielä toinen aiheeseen liittyvä kysymys samaan kasaan; onko mahdollista toteuttaa esim.
case NULL:
print "sama sisältö kuin testi 1:llä";
break;
muotoinen toiminto mikäli vieras vain tulee sivulle eikä ?:n jälkeen ole mitään määritetty? (Ymmärsin että defaultilla voidaan blokata käyttäjän omat kokeilut - esim. ?salainensivuko - joita ei ole olemassa, tämän vuoksi mietin NULL vaihtoehtoa)
Mod. edit kooditagit
1. kysymys: Koitappa tulostaa tuo $_SERVER['query_string']
2. kysymys:
<?php // tarkastetaan onko osoiterivillä oikeasti jotain, jos ei ole asetetaan $q:lle arvo 'etusivu' $q = trim($_SERVER['QUERY_STRING']) == NULL ? $_SERVER['QUOERY_STRING'] : 'etusivu'; switch($foo){ //jos kyseessä on etusivu tai sivu1, näytetään etusivu case 'etusivu': case 'sivu1': echo 'Etusivu'; break; case 'toinensivu': echo 'Toinensivu'; break; default: echo '404'; break; } ?>
Argh, klassista. 2 tuntia pähkäilin ongelmaa ja ~5min tänne postauksen jälkeen ratkaisu löytyi ><
Ilmeisesti $_SERVER['query_string'] ja $_SERVER['QUERY_STRING'] erossa on jotain todella maagista ja tällä ongelma ratkesi. Myös NULL toimii niinkuin pitääkin :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.