21. září bude sraz! Od 18.00 v restauraci Tradice v Praze u Anděla
Autor Zpráva
pb123
Profil *
Pěkný den,
potřebuji vypsat obsah proměnné předávané z jiné stránky, ovšem název té proměnné je obsahem jiné proměnné
(prostě se ty názvy mění, nedá se to zapsat napevno).

něco jako: $check_name_value="$_REQUEST['$check_name'];
... toto ale nefunguje:(

Předem díky za radu. PB
juriad
Profil
Odstraň všechny ty uvozovky a apostrofy. Nejčastější potíže s PHP (FAQ) » Co dávat a co nedávat do uvozovek
$check_name_value=$_REQUEST[$check_name];
pb123
Profil *
moc moc děkuji :)
PB


juriad:
mám ještě jeden dotaz:
jak to napsat pokud proměnná ve které je název jiné proměnné není předávaná ale pouze definovaná?
toto mi nefunguje:
$idx = $$id_name;

Díky. PB
juriad
Profil
pb123:
Tak se jedná o špatný návrh aplikace. A znovu zapřemýšlej, co to vlastně chceš dělat.

Zkus popsat svůj problém podrobněji. Co máš vlastně na vstupu?
pb123
Profil *
juriad:
tak děkuji za naťuknutí.. měl jsem v tom chybu.
ten druhý případ se bude řešit stejně jako první:
$idx = $_REQUEST[$id_name];

teď už mi to začalo fungovat.
Tak snad se nepletu. pokud by něco dalšího vyskočilo, tak zase napíšu.
Díky. PB
Joker
Profil
pb123:
Návrh té aplikace vypadá podezřele…
Skutečně se na daném místě má číst položka, u které není předem známé ani jméno, ani odkud přišla?

Ohledně toho druhého jen upozorním, že -kromě toho, že $_REQUEST je bezpečnostní díra- v novějších verzích PHP obsah $_REQUEST závisí na konfiguraci, neboli těžko říct, co v tom vlastně bude, neboli to je stěží použitelné.
pb123
Profil *
Joker:
je to aplikace pro intranet.
Je známo odkud se ty hodnoty odesílají, ty názvy proměnných se prostě na jedné straně generují cyklem... např. check$i tj. check1, check2...
a na druhé straně je chci zase vypsat...
ještě mám otázku ohledně $_REQUEST - to znamená třeba, že to v nějaké další verzi PHP nebude podporováno?
abych nenaprogramoval něco, co pak za chvíli budu muset měnit :(
co bych místo toho měl použít? $_POST, $_GET ??
Díky. pomoc a strávený čas.
PB
Joker
Profil
pb123:
ty názvy proměnných se prostě na jedné straně generují cyklem
To jsem tak trochu předpokládal, to je jedna situace, kdy proměnný název má asi smysl.
Ale zvážil bych, jestli není lepší z toho udělat normální pole. Tzn. políčka pojmenovat check[], případně check[1], check[2] atd. (pokud jsou potřeba specifické indexy).
A pak v $_POST["check"] (nebo jakou metodou se to posílá) dostanu rovnou PHP pole.

ještě mám otázku ohledně $_REQUEST - to znamená třeba, že to v nějaké další verzi PHP nebude podporováno?
V dohledné době z PHP nezmizí (není deprecated), vidím tam spíš praktické problémy:
1. Chování $_REQUEST od PHP 5.3 udává direktiva request_order, přes kterou se nastavuje nejen pořadí, ale i zapíná/vypíná převádění jednotlivých vstupů. Takže na úrovni PHP skriptu není jisté, jaké vstupy se do $_REQUEST vůbec převedly*. Např. od zmíněného PHP 5.3 nejsou ve výchozím nastavení zahrnuté cookies. Čili pokud skript na starší verzi PHP přes $_REQUEST četl cookies, po upgrade na novou verzi PHP přestane fungovat.

2. Funkčnost $_REQUEST typicky není vůbec potřeba, obvykle vím, odkud mám hodnotu čekat, takže můžu číst rovnou třeba $_POST.

3. Ani nevidím důvod míchat hodnoty z různých zdrojů a může to být bezpečnostní riziko. Pokud mají prioritu data z cookies (což před PHP 5.3 je vždycky) a někdo (např. záškodnický JavaScript, nebo i jiná část stejného webu používající svoje cookies) vytvoří uživateli cookie se stejným jménem jaké má formulářové políčko, skript čtoucí $_REQUEST přečte hodnotu cookie a ne hodnotu formulářového políčka.

* Samozřejmě lze přečíst a zkoumat obsah té direktivy request_order a podle toho se chovat, ale to už je jednodušší číst hodnoty rovnou z těch specifických polí.
pb123
Profil *
Joker:
děkuju za vysvětlení. PB

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0