LINUXSOFT.cz
Nazwa użytkownika: Hasło:     
    CZ UK PL

> Komentarze :: Poradna poskladani dotazu MySQL pomoci PHP

poskladani dotazu MySQL pomoci PHP 23.4.2009 18:05
David

Zdravim mam dotazek

na strance mam formular:
<form action="" method="">
<input type="text" size="20" maxlength="14" name="cislo" value="">
<input type="text" size="20" maxlength="14" name="datum" value="">
<input type="text" size="20" maxlength="20" name="jmeno" value="">
<input type="text" size="20" maxlength="14" name="prodejce" value="">
</form>

uzivatel ma moznost vyplnit jednu nebo vice polozek

a ja z toho potrebuji vydolovat SQL dotaz
napadlo me to udelat takto:

if ( !empty($_GET['cislo']) and !empty($_GET['datum']) and !empty($_GET['jmeno']) and !empty($_GET['prodejce']))
{
$vysledek = mysql_query('SELECT * FROM `automaty` WHERE `cislo` LIKE \'%'.$_GET['cislo'].'%\' AND `zakaznik` = LIKE \'%'.$_GET['jmeno'].'%\' AND `dat` = '.$_GET['datum'].' AND `prodejce` = '.$_GET['prodejce'].' ');
}
elseif( !empty($_GET['cislo']) and !empty($_GET['datum']) and !empty($_GET['jmeno']))
{
$vysledek = mysql_query('SELECT * FROM `automaty` WHERE `cislo` LIKE \'%'.$_GET['cislo'].'%\' AND `zakaznik` = LIKE \'%'.$_GET['jmeno'].'%\' AND `dat` = '.$_GET['datum'].' ');
}
...
...

no jenomze to je takovy hodne krkolomny... pokud by tech policek bylo 10 tak se muzu jit rovnou zastrelit

takze pokud nekdo vi jak na to privitam kazdou radu.

dekuji

Re: poskladani dotazu MySQL pomoci PHP 24.4.2009 07:31
Rudolf Svátek

Co nějak takhle?

<form action="" method="post">
<input type="text" size="20" maxlength="14" name="polozka[cislo]" value="">
<input type="text" size="20" maxlength="14" name="polozka[datum]" value="">
<input type="text" size="20" maxlength="20" name="polozka[jmeno]" value="">
<input type="text" size="20" maxlength="14" name="polozka[prodejce]" value="">
<input type="submit" name="odeslat" value="odeslat" />
</form>

<?php

if(IsSet($_POST['polozka'])) {
$sql = "SELECT * FROM `automaty` WHERE 1 ";
foreach($_POST['polozka'] as $key => $value) {
$sql .= $value > "" ? "AND `".$key."` LIKE %'".$value."'% " : "";
}
$vysledek = mysql_query($sql);
}
?>

Re: poskladani dotazu MySQL pomoci PHP 24.4.2009 13:46
Aleš Hakl

A co kdyz nekdo udela neco jako ?polozka[cislo`%20not%20null;drop%20database;--]=foo ? :)

Re: poskladani dotazu MySQL pomoci PHP 27.4.2009 07:13
Rudolf Svátek

Zabezpečení tady neřeším. Na formuláře mám třídy co mi to ošetří. Kromě toho ani David ve svém příkladu bezpečnost nijak nepostihuje. Navíc to posílá v GETu, kde je to ještě snadnější napadnout.


KOMENTARZE
poskladani dotazu MySQL pomoci PHP 23.4.2009 18:05 David
  L Re: poskladani dotazu MySQL pomoci PHP 24.4.2009 07:31 Rudolf Svátek
    L Re: poskladani dotazu MySQL pomoci PHP 24.4.2009 13:46 Aleš Hakl
      L Re: poskladani dotazu MySQL pomoci PHP 27.4.2009 07:13 Rudolf Svátek
Tylko zarejestrowani użytkownicy mogą dopisywać komentarze.
> Szukanie oprogramowania
1. Pacman linux
Download: 4791x
2. FreeBSD
Download: 8984x
3. PCLinuxOS-2010
Download: 8488x
4. alcolix
Download: 10804x
5. Onebase Linux
Download: 9568x
6. Novell Linux Desktop
Download: 0x
7. KateOS
Download: 6143x

1. xinetd
Download: 2331x
2. RDGS
Download: 937x
3. spkg
Download: 4549x
4. LinPacker
Download: 9801x
5. VFU File Manager
Download: 3116x
6. LeftHand Mała Księgowość
Download: 7002x
7. MISU pyFotoResize
Download: 2700x
8. Lefthand CRM
Download: 3486x
9. MetadataExtractor
Download: 0x
10. RCP100
Download: 3001x
11. Predaj softveru
Download: 0x
12. MSH Free Autoresponder
Download: 0x
©Pavel Kysilka - 2003-2024 | mailatlinuxsoft.cz | Design: www.megadesign.cz