23. november 2011 - 19:10Der 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;
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.
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 =)
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.
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"
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.