Това не ми е ясно

9 отговора 4 прегледа
#1

Това не ми е ясно

Мога ли да напиша следното:
$query = "SELECT 1, 2, 3, 4 FROM Clubs WHERE '$in' LIKE '%$search_string%' ";?
Имам зададено от таг на друга страница <SELECT name="in"> с няколко обции, които имат съответното VALUE, което ще приеме променливата $in. Няма логика да не става, но не се получава на практика. Възможно е ако се определи нещо, което не се променя. Например WHERE 1= '$search_string'.
Напълно е възможно аз да не знам как става. Затова, моля помогнете да разреша този проблем.

Животът е такъв, какъвто си го направиш
Отговор
в отговор на hrisunko #2

Re: Това не ми е ясно

parvo da iziasnim ideata -
tarsish niakakav string vaveden ot potrebitelia $search_string koito da se sadarja v niakoe pole $in sashto opredeleno ot potrebitelia i triabva da mu izvedesh niakakvi poleta 1, 2, 3, 4

SELECT 1, 2, 3, 4 FROM Clubs WHERE '$in' LIKE '%$search_string%'

1. ne triabva da pishesh SELECT 1, 2, 3, 4, a imenata na poletata ot tablicata koito te interesuvat, zashtoto taka prosto shte vadi redove 1,2,3,4
2. '$in' triabva da e samo $in - imeto na poleto ne se ograjda v takiva kavichki (ne e dobra idea obache da davash na usera vazmojnost directno da pishe v SQL-a, t.e. tova pole $in triabva da go preobrazuvash chres switch() ili masiv do niakakvo vatreshna stoinost - e ne moga da se izraziavam ama tolko )

Отговор
в отговор на hrisunko #3

може би

Само предположение, защото съм още новак в тези неща, но мисля, че кавичките около $in в WHERE '$in' карат базата данни да разглежда това $in като стринг, а не като променлива. Затов тя търси не в полета, означени в променливата а вполе $in, което не съществува. Пробвай да махнеш кавичките или по някакъв начин да ги заобиколиш, не съм много сигурен как....

Отговор
в отговор на phpGuru #4

:-))

Така е то...
заблееш се пет минути и те изпреварят...

Обаче имам един ламерски въпрос - какво толкова може да ми направи юзъра, ако ми бърка в базата по този начин?

Отговор
в отговор на phpGuru #5

Пояснявам

Пояснявам. Значи имам си таг <SELECT> на търсачка, който да ми търси по име, по друга стойност, по големина и т.н. 1,2,3,4 ги зададох като примерни, но даречем, че 1 отговаря на "име" от тага. Т.е. той сам избира по какъв показател да търси. Така $in става една променлива в зависимост от желанията на потребителя. Все пак не може да ми пипа нищо по базата данни, освен ако някой по-разбиращ се сети сам да зададе други стойности , но какво от това???!?!??!?! Има шанс само да види други данни, изнесени от базата при това само от ТАЗИ таблица.
Току-що пробвах без кавичките - стана!!!!!!! Благодаря много!!!!! Най се дразня ето от такива тъпи малки грешчици, причинени от една , ' " . и т.н. УЖАСНО Е! Особено ако не знаеш какво ще се получи :)))))

Ако имам друг проблем ще ви питам.

Благодаря ви за помощта
Отговор
в отговор на prinyo #6

Re: :-))

Ми нещо безобидно... примерно да да въведе
; DROP DATABASE db
или някво такова... ако е в кавички няма опасност, щото даже да въведе
'; DROP DATABASE db
ще се набъркат magic_quotes и ще добавят една черта \ пред апострофчето... то май даже имаше възможност за по-гадни неща от DROP нещо си

We Are Fighting With Power And Steel
Fighting For Metal Metal That's Real
Отговор
в отговор на prinyo #7

Re: може би

заради кавичките е, ама не е от това дето казваш... като напишеш "bla '$foo' bla bla", самото PHP го замяня със стойност... виж ако смениш местата на каввиччките и апостровите, тогава ще си остава текст непроменено.

We Are Fighting With Power And Steel
Fighting For Metal Metal That's Real
Отговор
в отговор на hrisunko #8

Re: Това не ми е ясно

mnogo se pisa
ne se razbra samo pisatelia razbra li...
nai dobre idi i procheti na php.net
otnosno kavizhkite i apostrofite....
inache kazano v ednoto izraza se "oceniawa", a w drugoto ti se pokazva napravo.... a kogato stringa e SQL query ima i dopulnitelni uslownosti

Отговор
в отговор на edmon #9

Re: Това не ми е ясно

Вижте сега какво съм разбрал. Първо ми стана ясно каква е функцията на кавичките в различните ситуации. Но не можах да разбера онова с DROP TABLE и DROP DATABASE. Опитах го, но не става нищо. Поразмислих и видях, че се получава следното:

значи аз си имам стринг $search_string в някаква FORM за HTML, който ще съдържа определна информация, която ще излезе от базата данни. Имам си и друга променлива, която е зададена чрез <select...> с две <option>, да речем $bla и $bla1. Като посетителя си избере едно от тях, то $search_string ще се насочи към таблицата $bla или $bla1 и ще търси само там.

Наистина има и друг начин. Да му се зададе от url-то. Например:
[линк]
Резултата, вярвам, е същия.

Вие казвате да заменя стойността на $in с DROP DATABASE или DROP TABLE. Ами тогава просто $search_string ще се търси в таблицата "DROP......"
Той ще си мисли, че това е таблица. А не че това е някакво $query

$query-то ми е: SELECT еди какво си FROM $in WHERE нещо си LIKE %search_string% или подобен израз.
Аз не виждам заплаха. Не казвам, че няма, защото имаме достатъчно грамотни програмисти, които винаги могат да измислят нещо, ако имат желание. Все пак не го разбирам с каква цел ще се прави, но това е тема на друг разговор.

Кажете ми, моля, прав ли съм за тези неща по-горе, или пак греша.


Животът е такъв, какъвто си го направиш
Отговор
в отговор на hrisunko #10

Re: Това не ми е ясно

Ако е "bla bla $in bla bla" има заплаха... това $in ще го замени PHP-то и тогава ще замине към MySQL-а... измисли такава стойност на $in, че да се получат 3 валидни заявки, разделени с ;... и гледай да нямя кавички в $in, че най вероятно ще получат по една наклонена пред себе си.

We Are Fighting With Power And Steel
Fighting For Metal Metal That's Real
Отговор