Autor Zpráva
cybernaut
Profil
Dobrý den,
mám problém s tím když mám název pole v GET a potřebuji s ním dál pracovat.
např.:
Takže když $_GET['pole'] = 'a' potřebuji to předat funkci jako název pole.

$a = array ("bla", "bla", "bla");
$b = array ("bla", "bla", "bla");
$c = array ("bla", "bla", "bla");

vypsatPole($_GET['pole']);
donny
Profil
nechápem celkom otázku.. ale
1. ak chceš predať pole priamo v php do get dá sa to $_GET[test] = &$a; (s využítím som sa ešte nestretol, je to celkom nezmyslel)
2. ak chceš predať $a do GET, tak sa to robí ce odkaz index.php?pole=$a

Ak som sa netrafil, tak upresni otázku :)
cybernaut
Profil
No z GET dostanu název pole např 'a' a to potrebuju poslat do funkce (to pole). Když se ale do funkce která pracuje s polem pošle 'a' a né $a vypíše chybu. Potřebuju tedy z 'a' udělat $a.
Tori
Profil
if ($_GET['pole'] === 'a')
    vypsatPole($a);
elseif ($_GET['pole'] === 'b')
    vypsatPole($b);
Nepoužívala bych jakákoli data zvenku jako název proměnné.
donny
Profil
${a}, resp. v tvojom prípade ${$_GET['pole']}

http://php.net/manual/en/language.variables.variable.php
cybernaut
Profil
To mě samozřejmě napadlo taky, ale mám těch polí asi dvacet. Tak jestli neexistuje elegantnější způsob než mít pak dvace if za sebou.


donny:
Díky to je přesně ono
Tori
Profil
Tak potom bych použila:
$data = array(
  'a' => array(....),
  'b' => array(....),
);
if (isset($data[$_GET['pole']]))
    vypsatPole($data[$_GET['pole']]);
Jde o to, aby nebyly přístupné všechny globální proměnné. Co když zadám adresu stranka.php?pole=dbPassword?
donny
Profil
som síce rád, že ti to pomohlo ale súhlasím s Tori.. Môže to byť nebezpečné napr. v prípade že to posielaš do databáze (sql injection) alebo v prípade že máš pomocou toho riešenú navigáciu po stránke (File inclusion vulnerability).

Treba to nejakým spôsobom ošetriť..
cybernaut
Profil
Tak když už jsme u toho neznáte tedy dobrý článek o sql injection?
donny
Profil
http://php.net/manual/en/security.database.sql-injection.php

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