php get & function

Mene pa zanima kako bi dobil ID izdelki.php?izbrisi=2 kot argument funcije function Izbrisi:
if ($_GET["izbrisi"] != NULL)
Zbrisi(???);

function Zbrisi(???)
{
$sql="DELETE * FROM izdelki WHERE ID='???'";
echo "<center><b>Izdelek izbrisan!</b></center>";
}

Se tega lotevam pravilno?

10 odgovorov

if(isset($GET["izbrisi"]) && isnumeric($_GET["izbrisi"])) ...

pa jaz bi raje uporabil POST za brisanje.

kaj je razlika? sem bl ultra začetnik v tem :)

Imam podoben problem...
Podatke imam zlistane v bazi, sedaj pa želim da ko kliknem na ikono "uredi" se mi odpre facebox v katerem imam "id" in "vrednost" katero imam izbrani vnos.
Sedaj pa nevem kako bi shranil "id" kliknjenega vnos, da bi ga potem prikazal v facebox-u da ga lahko uredim.

Kaksna ideja?

mtance:
Mene pa zanima kako bi dobil ID izdelki.php?izbrisi=2 kot argument funcije function Izbrisi:
if ($_GET["izbrisi"] != NULL)
Zbrisi(???);

function Zbrisi(???)
{
$sql="DELETE * FROM izdelki WHERE ID='???'";
echo "<center><b>Izdelek izbrisan!</b></center>";
}

Se tega lotevam pravilno?

Če prav razumem tvoje vprašanje ti iščeš tole?

if ($GET["izbrisi"] != NULL)
Zbrisi($
GET["izbrisi"]);

function Zbrisi($id)
{
$sql="DELETE * FROM izdelki WHERE ID='$id'";
echo "<center><b>Izdelek izbrisan!</b></center>";
}

Ja, verjetno nekaj takega, s tem da se moraš še prej povezati na bazo in izvesti ta sql stavek. Spremenljivka $sql ti tega sama ne naredi, saj je to samo "navaden" string.

Če query sestavljaš preko $GET spremenljivk, nujno uporabi funkcijo mysqlrealescapestring!!

$sql="DELETE * FROM izdelki WHERE ID='".mysqlrealescape_string($id)."'";

Drugače lahko kdo napiše npr:
www.domena.com/izdelek.php?izbrisi=1' OR 1=1 --; delete * from users

Vsekakor bodi pozoren na sql injection

Meni pa tole izgleda, kot da na novo delaš aplikacijo LuknjaTM :)

Oglej si predavanje s PHP konference, kjer je Gašper Kozak (fatg na tem forumu) govoril o vseh teh zadevah, o GET vs. POST, o SQL injection, proti kateremu tale tvoja koda ne bo imuna, če boš poslušal enega od zgornjih komentatorjev, itd :)

Predavanje najdeš na videolectures.net, močno priporočam tudi drugim.

5

Jp, pri tvoji trenutni kodi zadošča parameter id=5 OR 1 = 1 in adijo vsi podatki v tabeli. Escaping tukaj ne pomaga popolnoma nič, ker za tak query ne rabiš narekovajev. :)

1

Ahaa :) drugače pa imam t.i. nadzorno ploščo zaščiteno s htaccessom(user&password). V frontu nimam nč te šare. bom pa vseeno prečitu, saj me res zanima, kašne fore use obstajajo

Na varnost le glej. Tista rešitev je pač odgovor na tvoje vprašanje. Za resne stvari pa je potrebno zagotoviti varnost na več nivojih.