-
01. 02. 2012, 17:34 #1Mitglied
- Registriert seit
- Jun 2009
- Ort
- Im Forum
- Beiträge
- 530
[PHP] Daten für SQL maskieren
Hallo Leute,
ich schreibe gerade ein paar Funktionen, die mir das Arbeiten auf Dauer einfacher und sicherer machen sollen.
Dazu gehört auch eine Funktion, die anhand des Datentyps eine Variable richtig maskiert.
(ungetestet!)PHP-Code:/**
* Maskiert alle Variablen gemäß ihrem Typ für MySQL
*
* @param $to_escape Der zu maskierende String
* @param $kind Der Datentyp der beachtet werden soll
*
* return Die maskierte Variable
*/
function query_escape($to_escape, $kind = NULL) {
$datatypes = array('s', 'b', 'a', 'i', 'd', 'f', 'u', 'o', 'r');
if(!in_array($kind, $datatypes)) {
$kind = substr(gettype($to_escape), 0, 1);
}
switch($kind) {
case 's':
case 'u':
return "'".mysql_real_escape_string($to_escape)."'";
case 'b':
return ($to_escape)? 1:0;
case 'a':
case 'o':
case 'r':
return "'".serialize($to_escape)."'";
case 'i':
return intval($to_escape);
case 'd':
return doubleval($to_escape);
case 'f':
return floatval($to_escape);
default:
return "'".mysql_real_escape_string($to_escape)."'";
}
return NULL;
}
Hab ich da irgendwas vergessen?
Bei Stringstypen setzt sie außerdem die einfachen Anführungszeichen, damit man diese ebenfalls nicht vergisst.
LG
-
02. 02. 2012, 21:32 #2
Re: [PHP] Daten für SQL maskieren
Warum versuchst du etwas neu zu erfinden, was es bereits bei den Prepared Statements gibt? Siehe http://www.php.net/manual/en/mysqli-stmt.bind-param.php
Der Name der Funktion ist ansonsten auch irreführend, da du nur bei Strings tatsächlich die Werte maskierst. Nach der Serialisierung müsstest du übrigens auch maskieren.
-
03. 02. 2012, 15:56 #3Mitglied
(Threadstarter)
- Registriert seit
- Jun 2009
- Ort
- Im Forum
- Beiträge
- 530
Re: [PHP] Daten für SQL maskieren
Ohh - das ist mir aber peinlich^^ Ich arbeite schon seit einiger Zeit mit Prepared Statements und dann sowas^^
Ok hat sichalso erledigt
-


Zitieren
mehr lesen...







Resident Evil 6 erscheint in...
Heute, 15:21 in gulli:news