kielich
7.10.2013, 16:12:21
Witam potrzebuje napisać funkcję która będzie przeszukiwała tabele i z góry zdefiniowane kolumny
Problem leży jedna po tej stronie że właściciel sam "składa" sobie zapytanie.
Czyli po prostu wybiera sobie jaką tabele przeszukuje a polu typu input wpisuje np. Kolor == czerwony OR Kolor == biały .
Moje pytaniem, jak najlepiej to rozwiązać, najbaezpieczniej i optymalniej.
Dziękuje za sugestie.
freemp3
8.10.2013, 07:18:32
"Składanie" w ten sposób zapytania nie jest zbyt bezpiecznym rozwiązaniem. Można bez problemu dodać drop lub inne cuda.
Może lepiej jeśli wybór kolumny oraz operatora porównania także będzie wybierany, a dopiero wartość będzie wpisywana i podstawiana. Oczywiście wybraną kolumne oraz operator też trzeba będzie sprawdzić czy są poprawne a nie tylko przekleić wartość z posta.
W przypadku, gdy użytkownik, będzie chciał użyć OR lub AND można dodać "+", który będzie dodawał kolejny tego typu formularz.
mmmmmmm
8.10.2013, 07:47:29
Z doświadczenia wiem, że nie należy dawać użytkownikowi do wyboru OR lub AND.
Trzeba mu powiedzieć i zakodować : albo AND, albo OR. Inaczej prosisz się o problemy.
Spawnm
8.10.2013, 12:46:54
Musisz napisać własny parser, rozbijasz ciąg po spacjach i analizujesz każdą część. Wartości pól bindujesz, reszta leci z tablic twojego parsera. Jeśli user coś źle napisze, lub spróbuje ataku, parser tego nie uzna i zapytanie się nie wykona ze względu na wyrzucony wyjątek.
Tutaj można też sie zainteresować query builderami.
Inna opcja to ta którą podał @freemp3 generowanie inputów i selectów o odpowiednich nazwach w js, po stronie php znowu parser, ale już prostszy.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.