Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem PHP - "převzetí parametru"

Dobrý den
Mám v souboru index.php mimo jiné tento segment:
<? if ($stranka == "maxim") {include "./maxim.php";}
elseif ($stranka == "kontakt") {include "./kontakt.php";}
elseif ($stranka == "download") {include "./download.php";}
else {include "./maxim.php";}?>

Při zobrazení mi IE hlásí :
Notice: Undefined variable: stranka in c:\www\index.php on line 26
Notice: Undefined variable: stranka in c:\www\index.php on line 27 ...

Co ještě musí index.php obsahovat, aby správně naplnil hodnotu proměnné stranka například z odkazu :
href="index.php?stranka=kontakt"

Předmět Autor Datum
Místo $stranka k proměnný přistupuj pomocí $_GET['stranka']. Takže to bude takto: <?php if ($_GET['…
Marvin 27.02.2007 10:36
Marvin
Teď to hlásí zase: Notice: Undefined index: stranka in c:\www\index.php on line 26 ... Zkrátka ať p…
Taras Bulba 27.02.2007 11:37
Taras Bulba
mozno by bolo vhodne spravit dalsiu podmienku a to na to, aby zistilo, ci vobec nejaka $_GET['strank…
2laak 27.02.2007 11:59
2laak
To by mě sice zbavilo toho chybovýho hlášení, ale to správný include by stejně neproběhlo. Zkrátka n…
Taras Bulba 27.02.2007 12:03
Taras Bulba
dobre no, mierna modifikacia a je to: <?php if(IsSet($_GET['stranka'])) { if ($_GET['stranka'] == "…
2laak 27.02.2007 12:17
2laak
Výborně, díky moc! Takhle to fachá. Jen jsem se chtěl zeptat: To teprve ta funkce IsSet tu variable…
Taras Bulba 27.02.2007 12:30
Taras Bulba
ne, isset() akorat zkontroluje, jestli dana promenna existuje btw hlaseni poznamek bych vypnul budto… poslední
foltyn 27.02.2007 13:11
foltyn
Automatické nastavovanie premenných podľa parametrov z požiadavky môže byť zapnuté alebo vypnuté pod…
los 27.02.2007 12:25
los
Koukám, že tady už je vlastně odpověď na mou doplňující otázku. Díky, trošku si to rozpitvám a pak s…
Taras Bulba 27.02.2007 12:37
Taras Bulba

Místo $stranka k proměnný přistupuj pomocí $_GET['stranka']. Takže to bude takto:

<?php
  if ($_GET['stranka'] == "maxim") { include "./maxim.php"; }
  elseif ($_GET['stranka'] == "kontakt") { include "./kontakt.php"; }
  elseif ($_GET['stranka'] == "download") { include "./download.php"; }
  else { include "./maxim.php"; }
?>

Teď to hlásí zase:
Notice: Undefined index: stranka in c:\www\index.php on line 26 ...

Zkrátka ať proměnná, nebo teďkonc index nejsou definovaný.

Stačí, když před tím if provedu třeba
<?php $stranka="kontakt" ?>
a proběhne to bez chyby. Akorát že samozřejmě pak nebere ohled na to volání.

mozno by bolo vhodne spravit dalsiu podmienku a to na to, aby zistilo, ci vobec nejaka $_GET['stranka'] je setnuta a az potom by to vkladalo include-om.

<?php
if(IsSet($_GET['stranka'])) {
  if ($_GET['stranka'] == "maxim") { include "./maxim.php"; }
  elseif ($_GET['stranka'] == "kontakt") { include "./kontakt.php"; }
  elseif ($_GET['stranka'] == "download") { include "./download.php"; }
  else { include "./maxim.php"; }
}
?>

mozno je to trochu zvratene riesenie, davat jedno if cez druhe, nenapada ma lepsie riesenie...snad niekto iny :-p

dobre no, mierna modifikacia a je to:

<?php
if(IsSet($_GET['stranka'])) {
if ($_GET['stranka'] == "maxim") { include "./maxim.php"; }
elseif ($_GET['stranka'] == "kontakt") { include "./kontakt.php"; }
elseif ($_GET['stranka'] == "download") { include "./download.php"; }
else { include "./maxim.php"; }
}
else { include "./maxim.php"; }

?>

Výborně, díky moc! Takhle to fachá.
Jen jsem se chtěl zeptat: To teprve ta funkce IsSet tu variable nadefinuje a hned i naplní správnou hodnotou ? To se tedy takhle musí "plnit" všechny podobným způsobem předávané proměnné ?

Automatické nastavovanie premenných podľa parametrov z požiadavky môže byť zapnuté alebo vypnuté podľa nastavenia PHP (register_globals). Keď je zapnuté, je to bezpečnostné riziko. K parametrom z URL sa dostaneš vždy cez $_GET.

Môžeš použiť:

if (isset($_GET["stranka"]) and in_array($_GET["stranka"], array("maxim", "kontakt", "download"))) {
  $stranka = "./" . $_GET["stranka"] . ".php";
} else {
  $stranka = "./maxim.php";
}

alebo skrátený zápis:

$stranka = (isset($_GET["stranka"]) and in_array($_GET["stranka"], array("maxim", "kontakt", "download"))?
  "./" . $_GET["stranka"] . ".php":
  "./maxim.php");

(netestované, ale snáď tam nie sú preklepy)

Zpět do poradny Odpovědět na původní otázku Nahoru