Hey alle, habe ich eine Textbox, die Sachen Eingabeautocompletes aus einer Datenbank, indem sie und es funktioniert nun wie folgt aus:Wie schützt man diesen Code vor SQL-Injektion?
<script type="text/javascript">
$().ready(function() {
$("#food").autocomplete("get_course_list.php", {
width: 260,
cacheLength: 10,
matchContains: false,
//mustMatch: true,
//minChars: 0,
//multiple: true,
//highlight: false,
//multipleSeparator: ",",
selectFirst: true
});
});
</script>
und dies in der Php-Datei:
<?php
require_once "config2.php";
$q = strtolower($_GET["q"]);
if (!$q) return;
$sql = "select DISTINCT voedsel as voed from voedingswaarden where voedsel LIKE '%$q%'";
$rsd = mysql_query($sql);
while($rs = mysql_fetch_array($rsd)) {
$cname = $rs['voed'];
echo "$cname\n";
}
?>
Aber ich jetzt lese über sql injections etc, also wollte ich mein PHP-Skript davor mit mysql_real_escape_string() schützen; aber ich kann es nicht zur Arbeit bringen. Irgendwelche Ideen, wie man das in meiner .php Datei implementiert und ob das genug Schutz ist?
'aber ich kann nicht scheinen es zu arbeiten.' - wie hast du es versucht? –
Ich habe versucht, etwas wie $ q = strtolower ($ _ GET ["q"]); und dann $ q2 = mysql_real_escape_string ('$ q') und dann $ q2 im Rest des Codes verwenden. Aber dann würde die Autocomplete-Funktion nicht mehr funktionieren. – Javaaaa
Ich glaube, Sie haben gerade vergessen, den Variablennamen von $ q zu $ q2 zu ändern. Es war zwar unnötig, eine andere Variable zu erfinden. Eins reicht. Jedenfalls ist es nur ein Mangel an Aufmerksamkeit, kein Wissen. –