php-kód futtatása, amit adatbázisból olvasok ki
Sziasztok!
A segítségetekre lenne szükségem! Egy select-el olvasom ki az adatbázisból a php parancsot (pl.: 'echo helló world!') és et szeretném lefuttatni. van valami ötletetek?
Segítségeteket előre is köszi!: crash7
■ A segítségetekre lenne szükségem! Egy select-el olvasom ki az adatbázisból a php parancsot (pl.: 'echo helló world!') és et szeretném lefuttatni. van valami ötletetek?
Segítségeteket előre is köszi!: crash7
eval
Arról már nem is írok hogy ez milyen súlyos biztonsági problémákat jelenthet, mennyi nyűg lehet vele ésatöbbi.
Ha teheted, kerüld ki ezt a megoldást!
+1
Láttam már
Nem alulképzet, hanem fantáziátlan ;))
Drupal-ban is lehet ilyet csinálni. Van is számtalan phpsnipet amik keringenek a neten és vagy működnek vagy nem. Aztán ott van a views amivel pikk-pakk összekattintgathatsz szinte bármilyen lekérdezést, sőt... Csak nem árt tudni melyik kattra milyen kód gyártódik le. Nem optimális megoldás lesz, hanem gyorsan elkészíthető megoldás. (bár a views bizonyos esetekben az optimálishoz közeli megoldást eredményez.)
Erre van igény ezzel nem érdemes vitatkozni. Azért mert Te még ilyet nem láttál attól még létezik mint ahogyan a hold túlsó oldala is. (vagy szerinted ott csak egy nagy lyuk van?) ;)
Egyébként egy kis ügyes fájlba gyorstárazós/include-lós megoldással kiküszöbölhető a sebesség veszteség amiről tolmi beszélt. Nyílván a biztonsági kockázat fennáll! Gyorsan lehet ügyes biztonsági rést ütni a rendszeren ezzel a megoldással. Tehát csak óvatosan, körültekintően.
pp
fájl létrehozása?
ennyi erővel lemented fájlba és adatbázisban csak az adott funckióhoz tartozó controller adatokat tárolod. Akkor nem kell adatbáziskezelővel gányolni a php kódot. De nem értem ettől miért lenne gyorsabb a fejlesztés, a php kódot ugyanúgy meg kell írni..
Tervezés egyben az elkészítés is.
Lehet, hogy ez nem jó, lehet, hogy ez gányolás, lehet, hogy jobban is meg lehetne csinálni, ezen én nem vitatkozom, de hogy van rá igény az biztos.
Lásd mire is akarja a téma felvetője használni ezt a lehetőséget. Nyílván van trillió előre legyártott ellenőrző lehetőség amit csak kattintgatni kell, de szeretné megadni a lehetőséget, hogy a lehető legrugalmasabb legyen a rendszere. Nyílván ha előkerül egy olyan php snipet amit gyakran használnak akkor ahhoz ír egy újabb bővítményt, amit aztán már kattintgatni is lehet. (még gyorsabb a "fejelsztés")
pp
de mit kattintgatsz?
Ehhez csak normálisan meg kell írni a saját moduljaidat, majd konfigurlálni(akár ezt lehetd adatbázisban is tárolni, de maga a program az egy normális fájlban van). ehhez a művelethez lehet aztán "installációs csomagok" meg egyéb csilivili felületet írni, viszont szerintem egy fejlesztő a saját rendszerének nem nagyon fog ilyeneket készíteni.
olvasod amit írok?
Hagyományos mosópor:
1. Megrendelő specifikálja a feladatot (x idő)
2. fejlesztő megvalósítja (y idő)
összidő: x+y
Kattints folttisztító adalék:
1. Megrendelő specifikálja a feladatot (kattintgat x idő)
2. fejlesztő nem kell (0 idő)
összidő: x
Ha még azt is megnézzük, hogy a hagyományos mosópornál gyakran foltos marad a ruha és újra mosni kell.. vagyis nem az készült el amire a megrendelő gondolt, mivel rosszul specifikált a feladat, mivel nem ismeri a lehetőségeket és korlátokat. Akkor láthatjuk, hogy nagy a nyereség, hisz a legtöbb esetben a fejlesztő munka nélkül marad, ami szomorú (brühühü) de a megrendelőnek jó, mert occsó és azt kapja amit akart (még ha az nem is az ami kéne neki ;)) nem kell várni senkire stb.
pp
Gyors fejlesztés
Üldögélsz egy kávéházban, nincs nálad a notebookod, csak egy okostelefon. Hívnak, hogy ki kéne javítani/módosítani kellene egy apróságot a siteon. Felballagsz a weboldalra, bejelentkezel adminként, beszúrod a pár soros php kódrészt a megfelelő helyre, elmented és örülsz. A megrendelő is örül, hogy milyen gyors vagy. Nyilván a cms motornak gondoskodnia kell arról, hogy az ilyen módon beszúrt kódok a lehető leggyorsabban fussanak, így aztán cache-el, kiírja file-ba vagy bármilyen hasonló technikával elérhető, hogy az oldal kiszolgálása gyors legyen, hogy ez milyen hatékonysággal működik az a cms-től függ...
Legyen...
Részben
hibalehetőség
de ezen kár vitatkozni, alapvetően el tudom fogadni az indokod...
Hogy miért akartam ezt használni?
Hogy miért akartam ezt használni? A célom egy űrlap kezelő "motor" készítése. Az elképzelt működés nagyvonalakban: 1., Az űrlapon szereplő beviteli mezők listáját tárolom egy táblában 2.,Amikor jön egy kérés az űrlapról, egy rejtett azonosítón (űrlap_id) keresztül kiolvasom az adott űrlapon szereplő beviteli mezőket, ezt feltöltöm egy tömbbe, + az űrlapon kitöltött értékkel párosítom. Eddig talán egy Joomlás űrlapkezelőt koppintottam. Innen jött az ötlet, hogy az egy mezőkhöz tartozó n számú ellenőrzést miért ne tárolhatnám szintén adatbázisban, és ciklusba szervezve lefuttanám.
Röviden ennyi, remélem érthetően le tudtam írni, bár egy kicsit nekem is zavaros így átolvasva:)
Joomla?
Egyébként amit Te szeretnél megcsinálni, ahhoz nem kell eval() PHP-be, mert egy kis tervezéssel meg lehet csinálni, hogy megfelelően paraméterezve az űrlapmezők odanőjenek úgy, ahogy egy config fájlban letároltad (és sztem ne használj erre adatbázist).
eval evil
én eddigi életem során 1x használtam kb. 1 hete eval-t, másnap átírtam a kódomat úgy, hogy ne legyen benne :) megrémültem ugyanis tőle.
Egyetértek veled abban, hogy az eval használatának pusztán a felmerülése is elgondolkodtató (ha van valamilyen szintű tervezés, akkor ugyanis eval nem fordulhat elő, legalábbis én így gondolom), de szerintem semmivel nem szabad ennyire radikálisan szembeszegülni, mert soha nem lehet tudni, hogy mit hoz az élet...
Lehetőség
Vissza a kályhához...
Az már lejött, hogy ne adatbázisból olvassak ki futtatásra szánt PHP kódot. Az szerintetek járható út-e, ha csak azt olvasom ki az adatbázisból, hogy milyen php állomány, vagy függvény fusson le?
Válaszotokat előre is köszönöm: Crash7
Form ellenőrzések
Erre készíteném fel a kódot, hogy a megfelelő validátorok hívódjanak meg szépen sorban a form feldolgozása közben, nem kötelező mezők esetén csak akkor ha van megadva érték.
Így semmilyen kódhoz köthető adat nem kerül adatbázisba. Az ellenőrzés típusa szerint fogsz meghivogatni függvényeket, de ne a függvénynevet tárold így megvéded magad olyan esetektől, hogy valami triviális függvénynevet csempésznek a db-be (pl. SQL inject-tel, ha nem védekezel) ami káros következménnyel járhat...
Flexibilisebb hozzáállás
Én már vettem részt ilyenben..
mikor az ilyenek több soron és beláthatatlan elágazásokon keresztül haladnak, akkor nagyon "izgi" őket debugolni :-) Arról nem is beszélve, hogy ha az adatbázisból belekerül mondjuk az $ertek-be egy ' akkor nézhetjük miért unterminated string literal :-). Tudom, hogy vannak rá megoldások, és már a javascript más utakon jár, ám akkor még függvényeket írtunk és így csináltuk, és nagyon büszkék voltunk rá :-)
Off: debug