- siposa blogja
- A hozzászóláshoz be kell jelentkezni
- 946 megtekintés
Hozzászólások
az eval mar eleve evil....
t
- A hozzászóláshoz be kell jelentkezni
+1
mert senki se gondolná, hogy olyat használ :)
- A hozzászóláshoz be kell jelentkezni
Usert engedtem volna szkriptelni alapszinten, de így egy rossz inputtól elhasal az egész hóbelevanc.
- A hozzászóláshoz be kell jelentkezni
szerintem ezzel nem alapszinten engeded scriptelni... Inkább írj parsert, mert az eval()-t szvsz elég nehéz biztosítani ;)
—-—-—
int getRandomNumber() {
return 4;//szabályos kockadobással választva.
} //garantáltan véletlenszerű. xkcd
- A hozzászóláshoz be kell jelentkezni
Tudnám biztosítani, előtte átdolgozom rendesen, de szintaktikai elemzőt nem akartam írni.
- A hozzászóláshoz be kell jelentkezni
+1.
- A hozzászóláshoz be kell jelentkezni
A, Definal sajat hiba kezelot.
B, hivd meg php nevu programot `` ha mered :)
Amit nem lehet megirni assemblyben, azt nem lehet megirni.
- A hozzászóláshoz be kell jelentkezni
Köszi, ezt megnézem.
Szerk: sajna nem jó, parse errorokra nem lehet ráakasztani :(
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Userek visznek be egyszerű szintaxisú formulákat, azokat kell kiértékelnem. Megoldom máshogy, nem tragédia, csak így egyszerűbb lett volna.
- A hozzászóláshoz be kell jelentkezni
Hacsak nem konkrétan kötelező jelleggel php-ban kell megírnia (pl. vizsgafeladat, etc.), akkor nem javaslom az eval() -t.
De ha gondolod, keress meg mailben, szivesen segítek (majd lesörözzük:)).
die(DIE_HARD);
- A hozzászóláshoz be kell jelentkezni
:)
- A hozzászóláshoz be kell jelentkezni
Amit ajálanék:
http://php.net/manual/en/function.php-check-syntax.php
Ez persze deprecated, de lentebb találsz elég sok megvalósítást erre, illetve indítasz egy php -l /a/tmp/file.php -t exec() vagy system() segítségével és várod a kimenetét. Hmm?
die(DIE_HARD);
- A hozzászóláshoz be kell jelentkezni
Köszönöm az ötleteket! A php_check_syntax tökéletes lenne, de sajnos "removed from PHP" :(. A külön processzben ellenőrzés alapgondolata bennem is felmerült, de nem biztos, hogy az éles környezetben lesz "exec", úgyhogy egyelőre nem építenék rá. Jelenleg a "@eval('return true;...')" a befutó.
- A hozzászóláshoz be kell jelentkezni
wait, és azt hogyan tudod ellenőrizni, hogy a kedves júzerek nem művelnek semmi galádságot?
Nekem így elsőre az ugrana be, hogy eltávolítasz a stringből minden engedélyezett kifejezést, és ha fennmarad valami, akkor visszadobom.
Végülis nem fájin, ha valaki rekurzívan futtat unlink()-et ;)
—-—-—
int getRandomNumber() {
return 4;//szabályos kockadobással választva.
} //garantáltan véletlenszerű. xkcd
- A hozzászóláshoz be kell jelentkezni
Van egy előfeldolgozóm, az (elvileg) csak az általam preferált elemeket engedi át magán.
- A hozzászóláshoz be kell jelentkezni
Suhosin PHP kieg lesz a barátod ebben.
- A hozzászóláshoz be kell jelentkezni
Innen egy lehetséges megoldás:
function check_syntax($code) {
return @eval('return true;' . $code);
}
- A hozzászóláshoz be kell jelentkezni
Ez jó :) Köszönöm!
- A hozzászóláshoz be kell jelentkezni