Pereiti prie turinio

Kintamųjų gavimas kartu su mod_rewrite


Rekomenduojami pranešimai

Sveiki, pagražinau nuorodas su mod_rewrite:

RewriteRule ^([a-zA-Z0-9_\s\'~%,:!?()_=&-]+).html$ ?id=$1

ir dabar iškilo klausimas, kaip priimti kintamuosius ($_GET['']), kurių vardai gali būti labai įvairūs? Paprastas $var=$_GET['var']; neveikia. Pamenu, praeityje buvo iškilusi tokia pat problema, tik va sprendimo būdas užkrito... Googlint nesiųlykit, ir taip jau gerą pusvalandį bergždžiai pranaršiau.

 

Ačiū iš anksto!

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Kaip suprantu tavo tipinė užklausa atrodo maždaug taip - "svetaine.lt/kazkoks-puslapis.html" ir tu bandai perskaityti iš $_GET masyvo reikšmes, kai užklausa būna pvz. "svetaine.lt/kazkoks-puslapis.html?puslapis=1".

 

Dabartinis tavo .htaccess perrašo užklausą tik su nauju "id" raktu kurio reikšmė yra "kazkoks-puslapis", todėl $_GET masyvas visada turės tik vieną raktą - "id".

 

Norint gauti "puslapis=1", gali perskaityti $_SERVER['REQUEST_URI'] reikšmę (pilna orginali užklausa prieš .htaccess) ir apdoroti ją su parse_str().

 

Arba gali perrašyti savo .htaccess

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Kaip suprantu tavo tipinė užklausa atrodo maždaug taip - "svetaine.lt/kazkoks-puslapis.html" ir tu bandai perskaityti iš $_GET masyvo reikšmes, kai užklausa būna pvz. "svetaine.lt/kazkoks-puslapis.html?puslapis=1".

 

Dabartinis tavo .htaccess perrašo užklausą tik su nauju "id" raktu kurio reikšmė yra "kazkoks-puslapis", todėl $_GET masyvas visada turės tik vieną raktą - "id".

 

Norint gauti "puslapis=1", gali perskaityti $_SERVER['REQUEST_URI'] reikšmę (pilna orginali užklausa prieš .htaccess) ir apdoroti ją su parse_str().

 

Arba gali perrašyti savo .htaccess

Ačiū labai, gal galėtum pateikti pavyzdį teisingo .htaccess (manau tai būtų geriau, nei žaisti su SERVER komandomis) ?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

$_SERVER niekuo nesiskiria nuo $_GET, $_POST, $_SESSION ir pan., gali drąsiai naudoti.

 

Šiaip siūlyčiau visas užklausas siųsti į pagrindinį failą (pvz. index.php) kaip tai daro gaugelis framework'ų ir jau su PHP pagalba nuspręsti ką daryti toliau (kokį puslapį rodyti).

 

<IfModule mod_rewrite.c>
   RewriteEngine On

   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d

   RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

 

// Iš "svetaine.lt/kazkoks-puslapis.html?puslapis=1" imam "kazkoks-puslapis.html" dalį
$request = end(explode('/', parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)));

// Jei formatas atitinka (šiuo atveju baigiasi ".html"), gaunam pavadinimą (id)
if (substr($request, -5) == '.html') {
$id = substr_replace($request, '', -5);
} else {
$id = NULL;
}

// Čia dar gali ant viršau GET masyvo užrašyti id reikšmę, jeigu tavo programoj daug kur tikrina $_GET['id']
$_GET['id'] = $id;

 

Naudodamas šitą ar panašų kodą turėsi ir "kazkoks-puslapis" reikšmę, ir GET masyvą galėsi naudoti kaip paprastai (pvz. $_GET['puslapis']).

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...