Autor Zpráva
Mufna
Profil
Zdravím Vás. Potřebuji sestavit funkci, která by kontrolovala interní URL a pokud se v něm vyskytne určitý řetězec znaků, tak aby tento řetězec vždy uložila do SESSION. Mám to zatím nějak takto:
$url = $_SERVER['REQUEST_URI'];

fce check_url($url) {
  $_SESSION["rok"] = "";
  $_SESSION["kategorie"] = "";

  //  a tady potřebuju vždy získat část z URL, jednak rok a jednak kategorii
  // tvar URL vypadá vždy takto: /nabidka-tohoatoho/kolekce-2008/kategorie/

  return $_SESSION["rok"] = "2008";
  return $_SESSION["kategorie"] = "kategorie";
  
  // nevím zda můžu použít 2x return, pokud ne tak bych to rozdělil do 2 funkcí, to mi nevadí

}

// ve výpisu stránky se pak provádí toto:

check_url($url);
$rok = $_SESSION["rok"];
$kategorie = $_SESSION["kategorie"];

// a pak se dále pracuje s proměnnými $rok a $kategorie
panther
Profil
Mufna:
nějak postrádám otázku, vlastně nevím, co přesně chceš, s čím si nevíš rady.
Mufna
Profil
panther

Nevím jak v té funkci získat z toho tvaru URL, které mám, pouze 2 části - rok a kategorii. Čili jak toto udělat. Rok v URL může být třeba 2005, 2006, 2007 atd, kategorie pak třeba "auta" "motorky" "jizdni-kola" (třeba). A ta funkce má do SESSION uložit: "2005" nebo "2006" nebo "2007" (podle toho co bude v URL), a "auta" nebo "motorky" nebo "jizdni-kola"

Tvar URL bude vždy:
/nabidka-tohoatoho/kolekce-rok/kategorie/
bohyn
Profil
Mufna:
Nepoužívá na tohle spíš mod_rewrite?
Mufna
Profil
bohyn
vím jak to myslíš ... ale na to co já potřebuju musím mít asi nějakou funkci, mám to pro systém načítání jednotlivých menu do stránek (ne na zjišťování vlastního URL a následné zobrazení příslušné stránky), aby to sedělo + mohl jsem tomu dát třeba CSS class="active" podle potřeb.

Napadlo mě mezitím nějak to URL nejdřív rozdělit regulárem na 3 části (bude to pořád mít tuhle strukturu), tedy oddělit 3 části za jednotlivými lomítky, pak vzít druhou část a najít v ní všechny numerické hodnoty a vypsat je za sebou (to by dalo ten rok), a pak vzít třetí část a to je ta kategorie (tady už nemusím nic zkoumat, jen to hodit do proměnné). Ale ty potřebné reguláry asi nedám sám dohromady, tak jsem se obrátil sem do fóra pro radu.

EDIT: Jednodušeji řečeno v podstatě potřebuju to, aby se: 1) prozkoumalo URL a vypsaly se všechny nalezené numerické hodnoty 0-9 za sebou (což dá ten rok), 2) vzala se ta poslední část URL (kategorie) a vložilo se to do proměnné.
bohyn
Profil
preg_match("~([0-9]{4})/([^/]+)/?$~", $url, $match);
var_dump($match);
Mufna
Profil
bohyn
super, díky, funguje to parádně ... bohužel ale nevím jak to mám zpracovat, resp dát to do obou proměnných, tedy $_SESSION["rok"] a $_SESSION["kategorie"] . Přidání tvých dvou řádků kódu do té funkce způsobí vypsání něčeho takovéhoto:
array(3) { [0]=> string(14) "2010/kategorie/" [1]=> string(4) "2010" [2]=> string(8) "kategorie" 
panther
Profil
Mufna:
nevím jak to mám zpracovat, resp dát to do obou proměnných
to by mělo být prosté, ne?
$_SESSION['rok'] = $match[1];
$_SESSION['kategorie'] = $match[2];


Přidání tvých dvou řádků kódu do té funkce způsobí vypsání něčeho takovéhoto:
cos očekával od var_dump() jiného než výpis?
Mufna
Profil
panther
já vím, že by to asi mělo být prosté, s tímhle jsem ale ještě nikdy nepracoval, takže to pro mě prosté není ... díky za radu, teď už to prosté je :-)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0