Hmm, jei einam ne per pateiktą nuorodą su 20% nuolaida, tai gaunam 50% nuolaidą :D Skriaudžiat forumo lankytojus... :|

2

(10 replies, posted in PHP)

Neodan wrote:
aegis wrote:
Neodan wrote:

vietoj inputo gali naudoti button su onclick
nors ir input submit su onclick gali naudoti

Tokiu atveju geriau naudoti button su type="submit". Paduodamas tik tas buttonas kuris paspaudžiamas.

JS atveju nesvarbu kokie elementai, suveikia tik to onclick eventas, ant kurio paspaudziama (-;

Kam kišti js ir dar inline ten kur jo nereikia?

3

(10 replies, posted in PHP)

Neodan wrote:

vietoj inputo gali naudoti button su onclick
nors ir input submit su onclick gali naudoti

Tokiu atveju geriau naudoti button su type="submit". Paduodamas tik tas buttonas kuris paspaudžiamas.

Jo, skelbimo pateikimas tikrai super :) šaunuoliai ;)

SELECT * FROM `lentele` WHERE `param` = 'pirmas' OR `param` = 'kitas duomuo' <- čia užklausa atsižvelgiant į 'Tokie lentelės duomenys, man reikia gauti tik tuos pg_id, kurių param yra 'pirmas' ir 'kitas duomuo''. O rezultatų kuriuos pateikei tai nesupratau :)

edit: pataisiau užklausą

Naudok jQuery ir pamiršk galvos skausmus :)
tavo atveju būtų kaina_div = $("#txtHint").text();

7

(25 replies, posted in PHP)

minde wrote:
aegis wrote:

Jei svarbu, tik tai, kad hakeris priėjęs prie duombazės ir gavęs md5 hash'ą, pagal rainbow tables jo neatkoduotų tai galima daryti labai paprastai - sugeneruojam md5 string'ą, tada jį "sukarpom", sudeliojam pagal save (tarkim vidurys pradžioje, galas viduryje ir t.t.) ir įrašom į duombazę. Hakeris, gavęs priėjimą prie duombazės įrašo vistiek negalės atkoduoti, nes jam reiks sužinoti ir algoritmą, kuriuo md5 "sukarpytas". Kadangi visi md5 yra vienodo ilgio bei "panašiai" atrodo, labai didelė tikimybė, kad hakeriui net nešaus į galvą jog šitas string'as iš tikro yra dar kažkaip sudeliotas iš originalaus md5 string'o.

Labai klaidingai mastai.

Aš visiem bandau įkalti tokią vieną svarbią taisyklę, kurios laikydamasis programuotojas palengvis sau gyvenimą ilguoju periodu:

Programa turi būti saugi, net ir turint jos išeities kodus.

Kitaip sakant, PHP kodą gali duoti bet kam, bet jie neturi galėti nulaužti uždaros sistemos.

Na aišku tai yra viena iš daugelio taisyklių kalbant apie patikimas ir saugias programas, bet ją tikrai reikia suprasti ir jos laikytis. Tai ką tu, aegis, siūlai - tai yra "paslėpti" kažką kode, ir tipo tai jau kažkaip padidins saugumą. Programos ar sistemos saugumumo lygis yra lygis silpniausios posistemės saugumo lygiui. Tavo atveju užteks vienam "hackeriui" gauti išeities kodą, ir ištisos programų instaliacijos taps mažiau patikimos. Ta bandoma sumodeliuoti situacija, kad kažkas gauna priėjimą prie DB, bet nemato PHP kodo, bus supainionas, tai patikėk taip nebus, nes labai greitai bus aptikas tas tavo algoritmas. Esu radęs el. parduotuvių, kuriose yra SQL injectionai, o slaptažodžiai koduojami savu algoritmu. Su SQL injectionu aš galiu gauti užkoduotą slaptažodį, bet nematau PHP kodo, kaip jis yra užkoduojamas. Algoritmas buvo rastas per porą dienų, grynai iš sportinio intereso. Ir ten tikrai buvo sudėtingiau negu md5 hash'o sumaišymas.

Visą tą aš suprantu, tiesiog, mano žiniomis, šiuo metu labiausiai paplitęs "nulaužimo" būdas yra būtent sql injectionai. Todėl ir parašiau "jei svarbu tik tai...." :)
Aš nesiūlau nieko paslėpti kode ir nesakau, kad programa nuo to tampa 100 procentų saugi. Neįsivaizduoju koks puslapis būtų saugus kai hakeris turi ir išeities kodus IR priėjimą prie duombazės. Ką aš siūliau yra lygiai tas pats kas koduoti slaptažodžius md5 + salt. Gi to nelaikai "paslėpimo kažko kode"?

8

(25 replies, posted in PHP)

Jei svarbu, tik tai, kad hakeris priėjęs prie duombazės ir gavęs md5 hash'ą, pagal rainbow tables jo neatkoduotų tai galima daryti labai paprastai - sugeneruojam md5 string'ą, tada jį "sukarpom", sudeliojam pagal save (tarkim vidurys pradžioje, galas viduryje ir t.t.) ir įrašom į duombazę. Hakeris, gavęs priėjimą prie duombazės įrašo vistiek negalės atkoduoti, nes jam reiks sužinoti ir algoritmą, kuriuo md5 "sukarpytas". Kadangi visi md5 yra vienodo ilgio bei "panašiai" atrodo, labai didelė tikimybė, kad hakeriui net nešaus į galvą jog šitas string'as iš tikro yra dar kažkaip sudeliotas iš originalaus md5 string'o.

minde wrote:
aegis wrote:
minde wrote:

Nelabai dar suprantu ką reiškia "all tags".

Jeigu tau reikia tik viso sąrašo paveiksliukų ir tag'ų, tai užklausa paprastėja, nes nereikia filtruoti pagal tag'ų pavadinimą ir papildomai atfiltruoti koks tag'ų skaičius turi būtinai būti rezultatuose.

Dabartinę užklausa atrenka paveiksliukus kurie turi tag'us pvz. 'sky' ir 'blue'. O tas "all tags" tai būtų dar vienas stulpelis rezultate, kuriame būtų surašyti visi to paveiksliuko tag'ai.

Tai sujunk abi lenteles ir sugrupuok pagal paveiksliuko ID.

Turi omeny dar vieną LEFT JOIN? čia optimaliausias variantas?

minde wrote:

Nelabai dar suprantu ką reiškia "all tags".

Jeigu tau reikia tik viso sąrašo paveiksliukų ir tag'ų, tai užklausa paprastėja, nes nereikia filtruoti pagal tag'ų pavadinimą ir papildomai atfiltruoti koks tag'ų skaičius turi būtinai būti rezultatuose.

Dabartinę užklausa atrenka paveiksliukus kurie turi tag'us pvz. 'sky' ir 'blue'. O tas "all tags" tai būtų dar vienas stulpelis rezultate, kuriame būtų surašyti visi to paveiksliuko tag'ai.

minde wrote:
SELECT tagged.*,
   COUNT(DISTINCT tags.id) AS kiek,
   GROUP_CONCAT(tags.text) AS tags_text,
   pics.name,
   pics.ext
FROM `tagged`
   LEFT JOIN `tags` ON tagged.tag_id = tags.id 
   LEFT JOIN `pics` ON tagged.pic_id = pics.id 
WHERE tags.text = 'sky'
   OR tags.text = 'blue'
   OR tags.text = 'high'
GROUP BY pics.id
HAVING kiek = 3

Kažkas panašaus.

O ar įmanoma šitą užklausą papildyti visais paveiksliuko tagais? Na pvz. 'kažkokia_užklausa AS all_tags'. Akys mano krypsta į sub-queries. Reikiama linkme mąstau?

minde wrote:
aegis wrote:

Ačiū. Po biškį pradedu gaudytis :)

Neapsigauk, iki tikro gaudymosi dar reikia daug išmokti.

žinau :) Turėjau omeny, kad gaudausi konkrečioje situacijoje.

minde wrote:
SELECT tagged.*,
   COUNT(DISTINCT tags.id) AS kiek,
   GROUP_CONCAT(tags.text) AS tags_text,
   pics.name,
   pics.ext
FROM `tagged`
   LEFT JOIN `tags` ON tagged.tag_id = tags.id 
   LEFT JOIN `pics` ON tagged.pic_id = pics.id 
WHERE tags.text = 'sky'
   OR tags.text = 'blue'
   OR tags.text = 'high'
GROUP BY pics.id
HAVING kiek = 3

Kažkas panašaus.

Ačiū. Po biškį pradedu gaudytis :)
Tas HAVING kiek = x kur x yra lygus WHERE tags.text skaičiui, taip? :)

minde wrote:

Ai, aš ne apie tai rašiau - apie grupavimą.

Norint, kad įvyktų loginė funkcija AND (ir) tai reikia pagalvoti logiškai. Juk negali tas pats stulpelis būtų lygus iš karto dviem reikšmėm. Todėl turi palikti OR operatorius, bet papildomai skaičiuoti kiek grupėse gavosi rezultatų (COUNT()). Tas suskaučiuotas elementas rezultate turi būti lygus visų ieškomų tag'ų skaičiui.

Vat ties paryškinta vieta ir pastrigau aš. O toliau ką parašei nelabai supratau... :| Gal gali kokį pavyzdį parašyti? Na nebūtinai kad iškart tiktų man, bet nors ant kelio kad užvesti.

minde wrote:
aegis wrote:

Ačiū, padėjo dėl "or" paieškos :)
O kaip su "and" paieška?

Lygiai tas pats, tik tezultatų bus mažiau, bet esmė nesikeičia.

Lygiai tas pats? Turi omeny "OR" pakeisti į "AND"? Nelabai išeina taip. Nerodo nei vieno rezultato.

Ačiū, padėjo dėl "or" paieškos :)
O kaip su "and" paieška?

Sveiki,
gal kas galit pagelbėt ar ant teisingo kelio užvesti.

Yra trys lentelės:

pics
| id | name | ext |

tags
| id | text |

tagged
| id | pic_id | tag_id |

Kaip tikriausiai supratote yra paveiksliukai ir jų tag'ai. Noriu padaryti paiešką pagal tag'us. Tiksliau dvi paieškas. Viena "and" kita "or" principu.
"or" paieškos užklausa yra tokia

SELECT tagged.*, tags.text, pics.name, pics.ext FROM `tagged`
LEFT JOIN `tags` ON tagged.tag_id = tags.id 
LEFT JOIN `pics` ON tagged.pic_id = pics.id 
WHERE tags.text = 'sky' OR tags.text = 'blue' OR ... ir t.t.

Tačiau jei yra paveiksliukas turintis tiek 'sky' tiek 'blue' tag'us tai jį parenka du kartus. Tai išsprendžiau su php pagalba, tačiau manau optimaliau būtų pakeisti užklausą. Bandžiau ir su DISTINCT ir su GROUP BY, tačiau neišėjo man nieko :|

Kita problema yra "and" paieška. Visiškai neįsivaizduoju nuo kurio galo pradėti ją rašyti :| Reikia, kad atrinktų tik tuos paveiksliukus kurie turi (pateikto pavyzdžio atveju) tiek "sky" tiek "blue" tag'ą. Bet tuo pačiu ir informaciją apie juos (reikalingi visi stulpeliai esantys auksčiau pateiktoje užklausoje). Gal turite kokių nors minčių?

Pradžiai tai ryškiai reikėtų pasiskaityt apie html...

o collation pakeitimas į utf8_lithuanian_ci nepadėtų šiuo atveju?

20

(10 replies, posted in PHP)

Tas ir buvo, aš čia biškį nupjoviau :) Gali paprasčiau, css'e parašyt border:none;