Mailinglisten-Archive |
Hallo
> ich würde da eher auf diese Funktion setzen:
> http://de2.php.net/manual/en/function.mysql-real-escape-string.php
Dazu hatte ich mir mal ein Funktion zusammengesucht (phpbar.de und php.net
waren die Quellen):
/**
* Variable für sichere Verwendung quotieren
*
* ACHTUNG!
* Damit mysql_real_escape_string selbstständig eine Verbindungskennung
* finden kann, muss eine Verbindung zur DB ersteinmal bestehen.
* Dies ist bei der Verwendung von PHPLib standartmäßig nicht der Fall.
* Hier erfolgt die Verbindung erst mit dem $db->query-Aufruf.
* Um das zu umgehen, muss man die Verbindung vor der Verwendung dieser
* Funktion explizit herstellen:
* $db = new DB_Example; // Erzeuge ein Datenbankobjekt
* $db->connect(); // stelle Verbindung zur DB her
*
* @param string zu quotierende Variable
* @param string DB-Verbindungskennung (falls vorhanden)
* @see URL http://www.php.net/mysql_real_escape_string
*/
function escape_string($string, $dbcon = false) {
// stripslashes, falls nötig
if (get_magic_quotes_gpc()) {
$string = stripslashes($string);
}
// mysql_escape_string funktioniert nicht vor PHP-Version 4.3.0
if (version_compare (phpversion(),"4.3.0") == '-1') {
return (mysql_escape_string ($string));
} elseif ($dbcon) {
// wurde eine MySQL-Verbindungskennung übergeben, verwende diese
return (mysql_real_escape_string ($string, $dbcon));
} else {
// Ohne MySQL-Verbindungskennung gehts auch; dann versucht
// mysql_real_escape_string selbst eine Verbindungskennung zu finden.
return (mysql_real_escape_string ($string));
}
}
Das im SQL eingebunden würde so aussehen:
$sql = 'SELECT COUNT(*) as eingeloggt
FROM users
WHERE username = "'.escape_string($_POST['username']).'"
AND password = MD5("'.escape_string($_POST['password']).'")';
$result = mysql_query($sql);
--
Sven
php::bar PHP Wiki - Listenarchive