Hallo!
Ich habe im Userprofil ein Feld gemacht, wo man Foren-ID's eingeben kann, die dann als Variable " AND NOT IN (xx, xxx, xxxx)" in die SQL-Abfrage eingefügt werden - um gewisse Foren bei den "Beiträgen seit dem letzten Besuch" je nach Userwünsche auszuschlueßen.
Das funzt soweit auch gut, aber da ja in der Variable theoretisch alles stehen kann, will ich vor dem Einfügen der Variable in das SQLkommando eine Prüfung machen, daß da auch nur Zahlen und "," drin sind bzw. kein böser Code sich einschleichen kann (und daß nicht eine Fehlermeldung kommt, nur weil da flasche Buchstaben oder sonstwas drin steht)
Wie mache ich das am besten / einfachsten?
Danke für eure Tipps!
Sicherheitscheck bei Variablen in SQL-Abfrage
- Gumfuzi
- Ehemaliges Teammitglied
- Beiträge: 2454
- Registriert: 26.03.2004 22:25
- Wohnort: Linz, AT
- Kontaktdaten:
Danke vielmals!
... also ich habe nun rumprobiert, aber es will einfach nicht: $sf ist "2,89", das wird auch ausgegeben, aber dann kommt eine Zeitüberschreitung bei der Zeile "if (!is_numeric($sf_array[$co]))"
Wo habe ich hier den Denkfehler? ich komm einfach nicht drauf...
Danke für Deine kurze Hilfe bzw. den kurzen Denkanstoß!
... also ich habe nun rumprobiert, aber es will einfach nicht:
Code: Alles auswählen
if ( $userdata['session_logged_in'] )
{
if ($userdata['suchfilter'] <> "")
{
$sf_error = 0;
$sf_array = array();
$sf = $userdata['suchfilter'];
echo $sf;
$sf_array = explode(",", $sf);
$co = 0;
while ($sf_array[$co] <> "")
{
if (!is_numeric($sf_array[$co]))
{
$sf_error = 1;
}
}
if ($sf_error == 0)
{
$suchfilter = " AND forum_id NOT IN (" . $userdata['suchfilter'] . ")";
}
}
$sql = "SELECT post_id, forum_id
FROM " . POSTS_TABLE . "
WHERE post_time >= " . $userdata['user_lastvisit'] . $suchfilter;
}
Wo habe ich hier den Denkfehler? ich komm einfach nicht drauf...
Danke für Deine kurze Hilfe bzw. den kurzen Denkanstoß!
Code: Alles auswählen
if(!empty($userdata['suchfilter'])) {
$suchfilter = explode(',', $userdata['suchfilter']);
for($i=0; $i<count($suchfilter); $i++) {
$suchfilter[$i] = intval($suchfilter[$i]);
}
$suchfilter = $suchfilter = ' AND forum_id NOT IN (' . implode(', '$suchfilter) . ')';
}
$sql = ...
KB:knigge
- Gumfuzi
- Ehemaliges Teammitglied
- Beiträge: 2454
- Registriert: 26.03.2004 22:25
- Wohnort: Linz, AT
- Kontaktdaten:
Hi Pyramide,
Danke vielmals!!
Habe noch das fehlende Komma bei implode() hinzugefügt, dann funzte es:
Sehr schön, daß es noch einfacher (mit weniger Code) geht...
Danke vielmals!!
Habe noch das fehlende Komma bei implode() hinzugefügt, dann funzte es:
Code: Alles auswählen
if(!empty($userdata['suchfilter']))
{
$suchfilter = explode(',', $userdata['suchfilter']);
for($i=0; $i<count($suchfilter); $i++)
{
$suchfilter[$i] = intval($suchfilter[$i]);
}
$suchfilter = ' AND forum_id NOT IN (' . implode(", ", $suchfilter) . ')';
}