Autor | Zpráva | ||
---|---|---|---|
Yur4Y Profil |
#1 · Zasláno: 17. 9. 2009, 20:15:58
Už niekoľkokrát som tu čítal názor, že použitie eval()u je "prasárna", naposledy od Timy-ho. Ak pozriem napríklad do triedy template takého premakaného systému, ako phpBB, vidím eval, je to najjednoduchšia možnosť. Vie mi niekto povedať dôvod, prečo eval() nepoužívať?
|
||
Nox Profil |
#2 · Zasláno: 17. 9. 2009, 20:23:29
No zaprvé nemyslím že by bylo někdy nutné to použít a zadruhé ... může tam někdo propašovat nějaký kód a co pak?
S tím může natropit hodně neplechy |
||
Mastodont Profil |
#3 · Zasláno: 17. 9. 2009, 20:42:58
Za prvé - záleží na tom, co do eval() předáváš, pokud tam jsou nějaká data od uživatele, hrozí průser při libovolném útoku.
Za druhé - eval() je hodně pomalá funkce. |
||
TomášK Profil |
#4 · Zasláno: 17. 9. 2009, 20:57:30
|
||
DoubleThink Profil * |
#5 · Zasláno: 18. 9. 2009, 00:21:21
PHP je celkem celkem triviální jazyk bez nějakých složitějších objektových nebo typových vazeb, takže si myslím, že zpracování skriptu evalem nebude nějak drasticky pomalejší. Možná, pokud bys dělal nějaké brikule s referencemi a třídami obecně, tak by si s tím pak možná garbage collector nevěděl rady, ale nevím.
Prasárna je to spíš z toho důvodu, že se obecně nedoporučuje interpretovat obyčejné texty - a už vůbec ne texty z externích zdrojů. Šablony se nejčastěji zpracovávají klasicky sérií regulárů (taky často s eval-přepínačem mimochodem, ale tam už s kontrolou, co do něj leze). |
||
SwimX Profil |
#6 · Zasláno: 18. 9. 2009, 08:51:39 · Upravil/a: SwimX
Já jsem eval použili na webech jen jednou a to zde:
<?php $sporty_zahlavi = array("fotbal", "hokej", "tenis", "golf", "basketbal"); $i = 1; foreach($sporty_zahlavi as $v){ ?> <div class='sport <?=$v?>'> <h3><a href='<?="/$lang/redir-from-menu/$i/"?>'><?php eval("echo ucfirst(LNG_".strtoupper($v).");"); echo ($lang=='cs'?'ové':'')." ".LNG_SOUSTREDENI?></a></h3> <div class='form'> .... </div> </div> <?php $i++; } ?> kde pomocí eval vypisuji konstantu pro konkrétní sport, ve které je uložen název sportu v konkrétním jazyce. Yur4Y: při správném použití (aby ho nešlo zneužít) v tom nevidím prasárnu. Proč bych měl dělat další pole s názvy konstant které pak v cyklu vypisovat, když mi eval usnadní práci..? |
||
Majkl578 Profil |
#7 · Zasláno: 18. 9. 2009, 09:01:11
SwimX
fuj, proc nepouzijes constant()? |
||
SwimX Profil |
#8 · Zasláno: 20. 9. 2009, 19:58:11
Majkl578:
protože ho neznám. Díky :) |
||
Časová prodleva: 15 let
|
0