Pereiti prie turinio

Php sąlyga (if) iš mysql lentelės


Rekomenduojami pranešimai

Taigi, tokia situacija, žaidimą darau ir yra dialogai su npc. NPC kažką pasako ir į tą tekstą gali pasirinkti vieną iš kelių atsakymų. Ir reikia, kad kai kuriuos atsakymus atvaizduotų tik esant tam tikrai aplinkybei, tai nieko geresnio nesugalvojau, kaip į mysql lentelę "atsakymai" (kurioje sutalpinti atsakymų tekstai ir kita reikalinga info) primesti laukelį "rodymas", į kurį įrašyčiau aplinkybę, kuriai egzistuojant rodytų atsakymą. Tik va bėda, jau nuo senų senovės žinau, kad negerai executint php scriptus iš mysql. Tai gal turit patarimų ką daryti, gal kažkokias apsaugas dėt ir vis dėl to iš mysql paleisti kodą, o gal tekstiniuose failuose (kvaila idėja, bet gal..) laikyt info? :lol: Nes esmė, kad tų atsakymų bus beprotiškai daug tai tikrai scripte nesurašysiu a la

if (atsakymoid = "tas") 
{ if (salyga) { } }

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Taigi, tokia situacija, žaidimą darau ir yra dialogai su npc. NPC kažką pasako ir į tą tekstą gali pasirinkti vieną iš kelių atsakymų. Ir reikia, kad kai kuriuos atsakymus atvaizduotų tik esant tam tikrai aplinkybei, tai nieko geresnio nesugalvojau, kaip į mysql lentelę "atsakymai" (kurioje sutalpinti atsakymų tekstai ir kita reikalinga info) primesti laukelį "rodymas", į kurį įrašyčiau aplinkybę, kuriai egzistuojant rodytų atsakymą. Tik va bėda, jau nuo senų senovės žinau, kad negerai executint php scriptus iš mysql. Tai gal turit patarimų ką daryti, gal kažkokias apsaugas dėt ir vis dėl to iš mysql paleisti kodą, o gal tekstiniuose failuose (kvaila idėja, bet gal..) laikyt info? :lol: Nes esmė, kad tų atsakymų bus beprotiškai daug tai tikrai scripte nesurašysiu a la

if (atsakymoid = "tas") 
{ if (salyga) { } }

 

Pateik konkretesnių pavyzdžių, dabar nieko nesuprantu :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

hmm nu isivaizduok tada taip: yra while funkcija imanti is lenteles "atsakymai" duomenis. reikia, kad atvaizduotu laukeli "atsakymas" tik esant tam tikrai salygai (jei nera tos salygos, tai tada kita db irasa ima), o ta salyga įrasyta į laukeli "rodyti". Kaip apsisaugoti nuo mysql injekcijos? Ir ar galima padaryti viska kitaip klaip nors, kad sąlygų neimtų iš db?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

hmm nu isivaizduok tada taip: yra while funkcija imanti is lenteles "atsakymai" duomenis. reikia, kad atvaizduotu laukeli "atsakymas" tik esant tam tikrai salygai (jei nera tos salygos, tai tada kita db irasa ima), o ta salyga įrasyta į laukeli "rodyti". Kaip apsisaugoti nuo mysql injekcijos? Ir ar galima padaryti viska kitaip klaip nors, kad sąlygų neimtų iš db?

 

Iš tikrųjų tai nieko nesupratau ką tu čia darai.

Nuo mysql injekcijos paprasta apsisaugoti, tiesiog filtruok duomenis.

Tai kai darai mysql uzklausa i ja ir rasyk ta savo salyga, tada ismes tik variantus kurie atitinka tavo salyga.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Taigi, tokia situacija, žaidimą darau ir yra dialogai su npc. NPC kažką pasako ir į tą tekstą gali pasirinkti vieną iš kelių atsakymų. Ir reikia, kad kai kuriuos atsakymus atvaizduotų tik esant tam tikrai aplinkybei, tai nieko geresnio nesugalvojau, kaip į mysql lentelę "atsakymai" (kurioje sutalpinti atsakymų tekstai ir kita reikalinga info) primesti laukelį "rodymas", į kurį įrašyčiau aplinkybę, kuriai egzistuojant rodytų atsakymą. Tik va bėda, jau nuo senų senovės žinau, kad negerai executint php scriptus iš mysql. Tai gal turit patarimų ką daryti, gal kažkokias apsaugas dėt ir vis dėl to iš mysql paleisti kodą, o gal tekstiniuose failuose (kvaila idėja, bet gal..) laikyt info? :lol: Nes esmė, kad tų atsakymų bus beprotiškai daug tai tikrai scripte nesurašysiu a la

if (atsakymoid = "tas") 
{ if (salyga) { } }

 

geriau php sc neexecutint iš sql. pamėgink detaliau paaiškint, ką ten padaryt bandai :D

Nuoroda į pranešimą
Dalintis kituose puslapiuose

neisivaizduoju kaip detaliau paaiškint. žinau, kad nereiktų executinti.. žodžiu, neišaiškinsiu čia jums, tai tada dar vienas klausimas: kaip apsisaugoti nuo sql injekcijos executinant php scripta is mysql db

Kaip ir bet kokiu kitu atveju - escape :) Bet jei vykdai kodą, gaunamą iš vartotojo, tai ne dėl mysql injekcijos reikia jaudintis, o dėl to kodo, kurio jis gali privelt, kad ir to paties PHP :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Visai ne pro tą pusę savo žaidimą darai.

Jei žaidimas bus user-based, tai mysql turėsi sukurti maždaug tokią lentelę vartotojui:

[id][user][pass][lastflag]...

 

Ir tada, kitą lentelę, kažkokiai vėliavėlei:

[id][choice][user]

Jai uždėti „ForeignKey“ į vartotoją, užkabinusį vėliavėlę.

 

Tada jau su PHP tikrinti, kokią vėliavėlę tam tikras vartotojas užkabino, ir priklausomai nuo to žaidimą vystyti norima linkme. [lastflag](pas vartotoją) reikalingas tam, kad nereikėtų eiti per visas vėliavėles ir tikrinti, ar jos buvo užkabintos, ar ne.

 

Dialogai be abejonės, kaip ir pasirinkimai, turėtų būti atskiroje rinkmenoje. Paskui jį parsinti (tam reikės pasirinkti protingą struktūrą), arba naudoti gryną PHP.

 

Taipogi, jei nepažįsti objektų, prie žaidimų geriau nė nesiartink - be objektų kurti žaidimą yra savižudybė.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

nagisa, nelaikyk manęs kažkokiu kvaileliu, kuris mysql db optimaliai plėtot nesugeba :lol: bet dėl vėliavėlių visiškai ne pro tą pusę suki ;) taip ir daryčiau, kaip tu paminėjai, bet sąlygų gali būti labai įvairių ne vien tos tavo vėlevėlės kažkokios. vienam tekstui reikes gal kažkelinto lygio, kitam kažkokių daitkų inventoriuj, o dar kitam - questo įvygdyto. be to kiek žaidimų padariau be OOP ir dar kažkaip nemiriau, tai pasistengsiu ir dabar nenumirti ^_^

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...