⊗ppPmRdSWP 407 of 447 menu

Saviredirektavimas su parametrų pridėjimu PHP

Tegul puslapyje index.php perduodamas GET parametras su pavadinimu arg. Atvaizduokime jo turinį ekrane:

<?php echo $_GET['arg']; ?>

Tegul mūsų puslapis be GET parametro negali veikti korektiškai. Mūsų atveju tai iš tiesų taip, nes, jei parametras neperduotas, tai kreipimasis į $_GET['arg'] sukels klaidą.

Gali kilti klausimas, kodėl apskritai žmogus pateks į mūsų puslapį be parametro? Juk mes galime visur mūsų svetainėje dėti nuorodas su šiuo parametru. Tačiau, tai nėra garantija: mūsų svetainės naudotojas gali, pavyzdžiui, kopijuoti iš kažkur nuorodą ir prarasti tuo pačiu parametrą. Arba tiesiog atsitiktinai jį ištrinti, redaguodamas adreso eilutę.

Bet kuriuo atveju mūsų kodas turėtų numatyti tokią situaciją ir ką nors su ja daryti. Ką galima padaryti?

Galima patikrinti mūsų GET parametro egzistavimą ir jį atvaizduoti, tik jei jis egzistuoja:

<?php if (isset($_GET['arg'])) { echo $_GET['arg']; } else { // kažkaip reaguojame, pavyzdžiui, pranešimu } ?>

Galima elgtis gudriau:

<?php if (!isset($_GET['arg'])) { $_GET['arg'] = 'default'; // numatytoji reikšmė } echo $_GET['arg']; // garantuotai ką nors atvaizduos be klaidos ?>

O galima padaryti taip, kad patekus į puslapį be parametro, įvyktų redirektas į tą patį puslapį su parametru:

<?php if (!isset($_GET['arg'])) { header('Location: ?arg=default'); } echo $_GET['arg']; // parametras garantuotai yra ?>

Paaiškinkite, kuo skiriasi antrasis variantas nuo trečiojo.

Tegul puslapyje page.php galima perduoti skaičių naudojant GET parametrą su pavadinimu num. Padarykite taip, kad patekus be šio parametro, automatiškai būtų atliktas redirektas į tą patį puslapį, bet su parametru num reikšmėje 1.

Lietuvių
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mes naudojame slapukus svetainės veikimui, analizei ir personalizavimui. Duomenų apdorojimas vyksta pagal Privatumo politiką.
priimti visus nustatyti atšaukti