Kezdőoldal » Számítástechnika » Programozás » Az eval () egy legitim módszer...

Az eval () egy legitim módszer a php-ben?

Figyelt kérdés

Itt a link róla:

[link]


Szoktak ilyet használni? Ha egy programozó meglátja, nem kap agykukit tőle? Komolyan kérdezem, mert számomra most jól jönne, de olyan gányolásnak tűnik. Ti mit gondoltok?



#php #programozás #string to phpcode
2017. aug. 24. 22:30
1 2 3
 21/24 A kérdező kommentje:

Most elég gyors a kereső 500 000 sorral ebben a formában. Én viszont azt csinálom, hogy addig megyek ezekkel az ifekkel, amíg nem találok 10-20-50 darabot, utána megállítom a while ciklust. Az indexet megjegyzem, és ugye következőleg már csak onnan keresek a léptetővel. Így nem kell átnézni sokat egyszerre. Ezt az adatbázismodellt is megnézem, de még sose hallottam ilyesmiről.

Valami apache lucene-ről hallottam, az ilyesmi lenne?

2017. aug. 25. 15:30
 22/24 anonim ***** válasza:

Itt van az xml: pastebin com/YL8tNBQe

Itt a php: pastebin com/DAxgWz68

(A pontot írd be a .com elé!)


Van egy tömbünk a keresendő adatokkal $keres neven, van olyan elem ami üres, azt nem adta meg a felhasználó -> ebben az esetben bármilyen egyezés megfelel:


$keres = array(

"hanyajtos" => 4,

"kobcenti" => "",

"marka" => "ford",

"tipus" => "fiesta"

);


$keresendo = count($keres);


$keresendo tárolja, hány db értékre keresünk. Betöltjük az xml-t az $osszesauto-ba, végigmegyünk rajta.

Minden egyes <auto> minden egyes kulcsánál (ugye a kulcs a 'hanyajtos', a 'kobcenti' stb., az érték meg a kulcshoz tartozó érték) végigmegyünk a $keres tömbön is, és első körben kulcsokat hasonlítünk össze kulcsokkal!

Az aktuális <auto> aktuális kulcsa és értéke: $osszesauto->current()->children() as $kulcs => $ertek

A $keres tömb keresendő kulcsa és értéke: $keres as $kereskulcs => $keresertek


Ha a keresendő kulcsunk megegyezik az aktuális <auto> aktuális kulcsával, és a kulcsok értéke megegyezik vagy ha a kulcs értéke üres, akkor van találat:

if ($kereskulcs == $kulcs and ($keres[$kereskulcs] == $ertek or empty($keres[$kereskulcs])))


Pontos találat az, ha a keresendő kulcs értéke pontosan azonos az <auto> aktuális kulcsának értékével:

if ($keres[$kereskulcs] == $ertek)

Egyéb esetben (mikor a keresendő kulcs értéke nincs megadva) van üresre találat. Egyenlőségvizsgálat helyett persze lehet bele rakni kisebb-nagyobb vizsgálatot is, és azt is meg lehet csinálni, hogy üres adat esetén ne legyen elfogadható semmilyen érték.


Találat akkor van, ha a $keresendo értéke megegyezik a $talalat értékével, tehát ha az összes kulcsra van találat.


Nem tudom milyen gyors, nem teszteltem le sok adattal. A foreach-ek miatt lehet, hogy lassú lesz. De lehet optimalizálni pl. azzal, hogy csak az első X találatig keresel. Bár az az igazság, hogy ha production környezetbe használod a cuccot és tényleg sok adatod van, akkor mindenképp adatbázissal kéne az ilyesmit.

2017. aug. 25. 21:04
Hasznos számodra ez a válasz?
 23/24 A kérdező kommentje:
Köszi winscp, de már megoldottam. :)
2017. aug. 26. 09:57
 24/24 anonim ***** válasza:

Én az eval()-t base64-el kódolt kódrészlet futtatására használtam, hogy a laikus megrendelő, akit nem csíptem, még csak ne is sejthesse, hogy egy fájl feltöltő backend részét rejtettem el, magát a kódot meg egy $important nevű változóban tároltam el, hogy fontosnak tűnjön.:D

Ugyan ez kicsit más szituáció, de ebben az esetben is egy rosszindulatú kód futtatására lett felhasználva a függvény, szóval az elsődleges funkciója mindenképp ez.:D

2017. aug. 27. 23:44
Hasznos számodra ez a válasz?
1 2 3

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!