Vraag over mysql_real_escape string

  • Hallo,


    Ik heb een vraagje over het gebruik van mysql_real_escape_string.


    PHP
    ysql_query("UPDATE `users` SET `kladblok`='".mysql_real_escape_string($_POST['notes'])."' WHERE `id`='$data->id'");


    Moet ik nu voor $data->id ook mysql_real_escape_string gebruiken?

  • Gebruik intval() (of cast naar int) en laat de ' weg.


    PHP
    mysql_query("UPDATE `users` SET `kladblok`='".mysql_real_escape_string($_POST['notes'])."' WHERE `id`=".intval($data->id));


    Alleen wanneer je data echt vertrouwd, en dus weet waar het vandaan komt, mag je het zonder voorzorg maatregelen gebruiken. Aangezien het waarschijnlijk een criminals source is, die over het algemeen erg slecht gescript zijn zou ik zelf $data->id niet vertrouwen.

  • Je hebt het nergens nodig, alleen:
    - als de input een float (met decimalen) is;
    - als de input een string is (met quotes) en je ermee wilt rekenen.


    Dus bij een select optie waarbij je als waarde 0,1,2 meegeeft bijvoorbeeld is dit in principe niet nodig, tenzij je ermee wil rekenen, a.d.h.v. de PHP instelling op de server kan het zo zijn dat hij hem dan niet pakt omdat je hem als string opgeeft in de HTML (value="2").


    Je moet er gewoon mee spelen en als het niet werkt intval() erin zetten.


    Persoonlijk heb ik nooit intval nodig, ik klier daar alleen mee met JavaScript omdat die taal vele malen strenger is met rekenen i.c.m. integers / floats / strings.

  • Maar als data->id 0 is returnt intval toch niks?
    Ik zou de $data query beveiligen ipv elke vorm van $data.


    Dus ipv niks doen, zoeken naar de $data query!

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!