Autor | Zpráva | ||
---|---|---|---|
drvaca Profil |
#1 · Zasláno: 3. 8. 2010, 15:19:59
Zdravím,
do proměnné text chci dostat obsah inputu textpole. Tedy samozřejmě pokud existuje. Normálně bych to udělal takto: $text = $_POST["textpole"]; Poblém však nastane tehdy, když tam to textpole není, pak to vypíše Notice: Undefined index: textpole in /ftp/censured/index.php on line 1079 Systém nedokáže ignorovat neexistující textpole. Jak to mám upravit, aby to neexistující textpole ignorovalo, ale existující neignorovalo? |
||
panther Profil |
drvaca:
isset(), resp. !empty(). |
||
DoubleThink Profil * |
#3 · Zasláno: 3. 8. 2010, 16:18:28
Případně můžeš taky toto Upozornění ignorovat, protože nepředstavuje žádný bezpečnostní ani výkonnostní problém. Viz error_reporting.
|
||
drvaca Profil |
#4 · Zasláno: 3. 8. 2010, 16:19:40
No, nakonec mi vystačil isset, děkuji :)
|
||
AM_ Profil |
#5 · Zasláno: 3. 8. 2010, 17:58:05
DoubleThink:
tady bych to ignoroval spíše lokálně zavináčem (Tedy @$_POST['textpole']). error_reporting by měl být při vývoji zapnutý a v ostrém provozu vypnutý, takže v ostrém to bude stejně jedno a při vývoji je otravné, když mezi smysluplnými chybami vidíš i notice, o kterých víš. |
||
Majkl578 Profil |
#6 · Zasláno: 3. 8. 2010, 18:03:48
AM:
error_reporting by měl být zapnutý vždy (i na produkčním) nejlépe s hodnotou E_ALL | E_STRICT. DoubleThink, AM: Osobně toto nedoporučuji používat. |
||
AM_ Profil |
#7 · Zasláno: 3. 8. 2010, 18:08:24
Majkl578:
puritán se ozval :) „error_reporting by měl být zapnutý vždy“ máš pravdu, vypínat by se měl na produkčním display_errors. „Osobně toto nedoporučuji používat.“ když tě tlačí čas, @ napíšeš podstatně rychleji než isset() a pokud víš, co děláš, výsledek je stejný (až na tu vyhozenou potlačenou notice). |
||
DoubleThink Profil * |
#8 · Zasláno: 4. 8. 2010, 16:19:31
Majkl578:
„Osobně toto nedoporučuji používat.“ Z nějakého konkrétního důvodu? |
||
Majkl578 Profil |
#9 · Zasláno: 4. 8. 2010, 17:57:06
DoubleThink:
Pokud takový neexistující offset nacpu třeba do foreach, hned k notice přibývá warning. Existuje určitě víc dalších míst, kde neošetřený neexistující offset nebo proměnná sama způsobí problémy. E_NOTICE považuji za chybu, stejně jako E_WARNING, E_STRICT a další. |
||
Str4wberry Profil |
#10 · Zasláno: 4. 8. 2010, 19:39:17
Podle mě je nejlepší to řešit případ od případu. Třeba psát něco jako:
echo (isset($_POST["textpole"])? $_POST["textpole"]: ""); |
||
W4C Profil |
#11 · Zasláno: 4. 8. 2010, 22:45:39
Nestačí někde na začátku stránky předdefinovat prázdnou proměnnou/někde před inputem/?
$text = ""; |
||
DoubleThink Profil * |
#12 · Zasláno: 5. 8. 2010, 13:03:08
Majkl578:
„Pokud takový neexistující offset nacpu třeba do foreach, hned k notice přibývá warning.“ Nevhodný příklad, argumentačně úplně mimo. Je jasné, že když do foreach nacpu místo pole zemlbábu, tak se mu to nebude líbit. To ale budu řešit až na místě. Netvrdím, že notices jsou zbytečné. Tvrdím, že profík je může klidně ignorovat a nesnížit tím kvalitu a bezpečnost aplikace. |
||
AM_ Profil |
#13 · Zasláno: 5. 8. 2010, 14:37:20
[#11] W4C:
a v čem to pomůže? to nemá žádný vliv na to, jak zjistit, zda v $_POST['textpole'] bylo něco předáno. |
||
W4C Profil |
#14 · Zasláno: 6. 8. 2010, 01:10:49 · Upravil/a: W4C
AM:
sry,máš pravdu navíc jsem to napsal blbě :( - mělo tam být: $textpole = ""; ale tohle by stejně fungovalo jen jedině kdyby se použilo místo $_POST["textpole"] $textpole Teď mě tak napadá, jakej je vlastně rozdíl mezi použitím zápisu $_POST["textpole"] $textpole Já používám vesměs ten kratší. name="textpole" |
||
dRaGen Profil |
#15 · Zasláno: 6. 8. 2010, 01:36:06 · Upravil/a: dRaGen
W4C:
Základní problém je v tom že pokud je použito nastavení register_globals 0, což je defaultní tak ti ten tvůj skript nebude fungovat. protože rozlišuje $_POST, $_GET To že píšeš zkráceně tento tvar se dopouštíš obrovské bezpećnostní chyby. Protože někdo ti může manipulovat s jinejma datama než ty požaduješ. edit: viz. http://php.net/manual/en/security.globals.php |
||
W4C Profil |
#16 · Zasláno: 6. 8. 2010, 03:38:26
dRaGen
nj,vidíš to, takhle to dopadá, když je člověk zhýčkanej register_globals ON :)) No nic, vrhnu se na věc - naštěstí to je bleskovka. Díky za upřesnění. |
||
Časová prodleva: 14 let
|
0