ugrás a tartalomhoz

Rövid webcímek - változók kezelése

Castor87 · 2007. Dec. 31. (H), 14.39
Üdv!

Én a 4. verziót választottam (4: URL Rewrite) a WL cikkben található megoldások közül. A példa alapján addig el is jutottam, hogy a
valami.hu/hirek címre egy case segítségével kiírja a "hírek" szót.

Azt szeretném megkérdezni hogy a híreken belül hogy lehet egy adott hírt kiírni?
Tehát valami.hu/hirek/3 címre a hármas számú hírt írja ki. Maga a hír lekérdezéssel (sql-ből) nincs problémám, csak nem látom át még annyira az egész rövid webcímes megoldást, hogy ki tudnám nyerni a webcímből azt a változót, amelyik megadja az adott hír (nevezzük így) id számát?

Legjobb az lenne, ha nem konkrétan erre a példámra kapnék választ, hanem általánosan hogy lehet egymásra/egymásba építeni a linkeket?

Feltételezem a megoldást SWITCH-en belüli SWITCH-ek lesznek, csak a változók kinyerésére lennék kíváncsi.
 
1

Röviden...

csla · 2007. Dec. 31. (H), 15.07
A példában írja, hogy a "RewriteRule szabja meg azt, hogy az előzetesen megadott feltételeknek megfelelő webcímet végülis miként kell átírni." Ha az ott megadott beállításokat használod, és a példádnál maradunk, akkor a $GET['q'] változó értéke "hirek/3" lesz.
Én úgy szoktam eljárni, hogy pl.

$oldal = explode('/',$GET['q']);

switch($oldal[0])
 {
  case 'hirek':
   if (isset($oldal[1])) //megvizsgáljuk, hogy van-e megadva konkrét hír az URL-ben
    //megjelenítjük a konkrét hírt ($oldal[1]-ben lesz a hír ID-je, vagy neve)
   else
    //megjelenítjük mondjuk az utolsó x darab hírt
   break;
 };
Természetesen le kell kezelni azt is, ha nem létező hír ID (vagy teljesen más karaktersorozat) kerül az URL-be (pl. valaki azt írja be, hogy valami.hu/hirek/höhöhö). Továbbá ez csak egy egyszerű példa, lehet sok mindent elegánsabbá, automatikussá tenni.

Mielőtt felhasználód az URL-ben megadott értékeket vizsgálni is kell őket.

Nekem pl. van egy GET_ok() függvényem, amiben benne van minden átalakítás, ellenőrzés, és az alábbi kód fut le a fenti switch előtt (nekem q helyett url a változó):

if (GET_ok($_GET['url']))
  {
   $oldal = explode('/',$_GET['url']);
  }
else
  {
   $oldal[0] = ''; //<- itt meg lehet adni pl. a 404-es hibaüzenetet vagy a nyitóoldalt, stb.
  };  
A teljes "site motor"-omban ez úgy működik, hogy ez után először ellenőrzöm, hogy a kért oldal[0]-hoz van-e tartalom az adatbázisban. Ha nincs, akkor 404, ha van, akkor fordulhat elő olyan, a switch-el különböző aleseteket is vizsgálok (mint pl. a hírek esetében).
3

thx

Castor87 · 2007. Dec. 31. (H), 15.17
Nagyon köszi! :) Az első forrásnál elírtad a $_GET-et! Lemaradt a "_" jel. Esetleg ha nem titkos, a teljesség kedvéért beírhatnád a GET_ok() függvényt is.
2

Erre gondolsz?

cSuwwi · 2007. Dec. 31. (H), 15.11
lassú voltam, törölni meg nem lehet