Avatar billede LilleUdvikler Nybegynder
23. november 2011 - 19:10 Der er 8 kommentarer og
1 løsning

PHP - mysql_real_escape_string problemer

Hejsa,

Overskriften siger det hele, så jeg vil copy-paste lidt kode her, som jeg ikke kan få til at makke ret. Jeg prøver at lave mysql_real_escape_string på $val:


function editProvider($post)
    {   
        $sql = "UPDATE provider SET ";
            foreach($post as $key => $val):
                if($key != "providerId")
                {
                    $val = mysql_real_escape_string($val);
                    $sqlE[] = "`$key`='$val'";
                }
            endforeach;

        $sqlE = implode(",", $sqlE);

        $where = ' WHERE `providerId` = \''.$post['providerId'].'\'';
        $sql = $sql . $sqlE . $where;
       
        $query = mysql_query($sql);

        if($query){
            return true;
        }
    }
    //

Og lige pt. fungere dette overhovedet ikke. Scriptet UPDAT'er databasen, men der bliver ikke lavet nogen mysql_real_escape_string på nogle af mine $val.

Jeg bruger forresten en omgang AJAX til at sende til denne function, som så snakker med databasen.
Avatar billede LilleUdvikler Nybegynder
23. november 2011 - 19:14 #1
Det skal siges, at hvis jeg ændre $val til:

$val = "HEJ";

Så ændre den alle $val til hej.. Så jeg forstår ikke, hvad det er der sker?
Avatar billede olebole Juniormester
23. november 2011 - 19:42 #2
<ole>

Her virker det, som det skal. Hvad mener du med "virker ikke"?

*) Hvad forventer du skal ske?
*) Hvad sker?
*) Hvad sker ikke?
*) Får du fejlmeldinger (de er vel slået til?)
*) Hvis du får fejl, hvad siger de så?

Derudover bør du overveje mysqli eller PDO, som er langt sikrere og giver mulighed for bedre bedre performance. Det gamle mysql API er gårsdagens API - mysqli og PDO er dagens og (indtil videre) fremtidens  =)

/mvh
</bole>
Avatar billede micma18_ Nybegynder
24. november 2011 - 09:31 #3
Du kan muligvis supplerer med strip_tags() eller htmlspecialchars(), hvis det er den slags funktionalitet du leder efter?
Avatar billede LilleUdvikler Nybegynder
30. november 2011 - 10:35 #4
Det der IKKE sker er, at når jeg foreksempel i input skriver: <script></script> så escapper den ikke noget. Den indsætter bare det hele ind i databasen.
Avatar billede olebole Juniormester
30. november 2011 - 17:01 #5
Vær du glad for det - for ellers havde der været noget seriøst galt med din PHP-installation  =)

Hvad vil du have, der sker med '<script></script>', inden det ryger i databasen? Hvis du vil have de to tags fjernet, skal du nok kikke på strip_tags, som micma18_ foreslog i #3.

Ellers må du forklare, hvad du mener med, at de to tags skal "escapes"
Avatar billede LilleUdvikler Nybegynder
06. december 2011 - 16:08 #6
Hej olebole.

Jeg har ganske rigtigt troet at mysql_real_escape_string ville escape de html tegn. Jeg har brugt htmlspecialchars i stedet.

Nu har jeg bare et nyt problem:

Jeg kan ikke kalde min function:

function formValidate($string){
        $string = trim($string);
        $string = mysql_real_escape_string($string);
        $strubg = htmlspecialchars($string);
        return $string;
    }

inde i en anden function?

Jeg kan ikke udføre:

formValidate($val); fx.

Hvordan gør jeg dette?
Avatar billede LilleUdvikler Nybegynder
06. december 2011 - 16:17 #7
Jeg fandt faktisk lige ud af det. Kan du ikke smide et svar olebole?
Du har hjulpet mig igennem det :-)
Avatar billede olebole Juniormester
06. december 2011 - 16:40 #8
Ellers tak, jeg samler ikke point. Læg selv et svar og accepter det, så tråden lukkes  =)
Avatar billede LilleUdvikler Nybegynder
15. december 2011 - 10:34 #9
Jeg lukker :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester