| Autor | Zpráva | ||
|---|---|---|---|
| pb123 Profil * |
#1 · Zasláno: 18. 2. 2015, 13:47:30
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 |
#2 · Zasláno: 18. 2. 2015, 13:49:30
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 * |
#3 · Zasláno: 18. 2. 2015, 14:48:26 · Upravil/a: pb123
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 |
#4 · Zasláno: 18. 2. 2015, 15:14:47
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 * |
#5 · Zasláno: 18. 2. 2015, 15:50:46
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 |
#6 · Zasláno: 18. 2. 2015, 16:05:40
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 * |
#7 · Zasláno: 18. 2. 2015, 16:20:39
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 |
#8 · Zasláno: 18. 2. 2015, 16:56:41
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 * |
#9 · Zasláno: 19. 2. 2015, 06:36:53
Joker:
děkuju za vysvětlení. PB |
||
|
Časová prodleva: 11 let
|
|||
0