Diskuze: Jak ošetřit vstup při použití LIKE v dotazu pro databázi
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 10 zpráv z 10.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Ahoj, řešení je jednoduché
Db::queryAll('SELECT * FROM uzivatele WHERE vek = ?', "%{$vek}%");
Případně s apostrofy
Db::queryAll('SELECT * FROM uzivatele WHERE vek = ?', '%' . $vek . '%");
Jen tak btw, na co potřebuješ v databázi ukládat věk uživatele, který se každoročně mění? Není lepší si uložit datum narození a věk z toho spočítat?
Jo, to by určitě bylo lepší, ale tohle je jen příklad, ve skutečnosti
v tý databázi pro kterou to potřebuju nemám věk, ale něco jiného... Tohle
mě jen tak rychle napadlo abych to tady mohl vysvětlit 
Jeste bych mozna v php odmazal nadbytecne % a * ze zacatku a konce. Uzivatele obcas nevi, jak rici, ze chteji pouzit like, nevidi dovnitr programu.
Co přesně myslíš? Jako, že nemám používat LIKE pokud jde o vstup od uživatele? Nechápu...
V sql query davas:
... sloupec LIKE '%slovo%'
No, a ted jsou uzivatele, co zkousi pridat * nebo % do inputu, napr
<input value="%slovo"> nebo <input value="*slovo">
... sloupec LIKE '%%slovo%' | ... sloupec LIKE '%*slovo%'
Oni nevidi php kod, tak nevi, ze tam s like pracujes.
Cili, mozna (zalezi na datech), bych z te promenne mazal ze zacatku a z konce
znaky * a %. Neco jako dela php trim() pro mezery.
Je to zbytecnost navic, ale muze se to obcas hodit.
Jasně, to je dobrý point
Sloupec ve kterém se bude hledat by tyto znaky stejně obsahovat asi neměl,
takže to není problém mazat
Nicméně asi i upozorním uživatele, že jsou tyto znaky
zakázané, pokud se je tam pokusí hodit.
Zobrazeno 10 zpráv z 10.