Hallo an alle!
Eine ID, die per $_POST an MySQL gesendet wird, soll den maximalen Wertebereich von 4294967295 bei einer Abfrage nicht übersteigen. Weiterhin soll ermittelt werden ob es sich bei der übermittelten ID auch tatsächlich nur um Ganzzahlen handelt.
Das MySQL Tabellenfeld ist zurzeit folgendermaßen Konfiguriert:
Tabellenfeldname: ID,
Typ: INT,
Set: 10,
Attribut: Unsigniert,
Null: NOT NULL
Extra: auto_increment
Ich habe auf http://www.phpforum.de/forum/showthread.php?t=218433 einen Codeschnipsel gefunden der genau dieses und auch auf Minuswerte prüft.
Codeschnipsel:
function allowOnlyUnsignedINTs ($i)
{
if (!preg_match('/^\d{1,10}$/', $i)) return FALSE;
if (bccomp($i, '4294967295') == 1) return FALSE;
return $i;
}
$id = filter_input(INPUT_POST, 'id', FILTER_CALLBACK, array('options' =>
'allowOnlyUnsignedINTs'));
if ($id !== FALSE)
{
echo "Alles OK!";
}
else
{
echo "FEHLER!";
}
Jetzt möchte ich aber auch auf leer und 0 prüfen und diese Eingaben nicht zulassen. Spricht etwas dagegen in die function einen zweiten bccomp einzufügen:
if (bccomp($i, '0') !== 1) return FALSE;
Also so:
function allowOnlyUnsignedINTs ($i)
{
if (!preg_match('/^\d{1,10}$/', $i)) return FALSE;
if (bccomp($i, '0') !== 1) return FALSE;
if (bccomp($i, '4294967295') == 1) return FALSE;
return $i;
}
Danke für eure antworten!