mysql_real_escape_string mit mysqli benutzen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anweisung
anwenden
benutzen
benutzer
code
datum
eingabe
fehlermeldung
funktion
gestrigen tage
lauf
normalen code
sinn
sonstige abfrage
string
typ
unruhe
url
verbindung
verwenden
-
Am gestrigen Tage hab ich im laufe der "Unruhen" hier auf lima von einem werten Freund aus der Community von dem PHP bzw. MySQL - Befehl "mysql_real_escape_string" erfahren.
Den möchte ich jetzt mal anwenden. Wenn ich ihn aber im normalen Code, ohne sonstige Abfrage zum umwandeln eines Strings benutze, kommt eine Fehlermeldung, dass ich nicht in die Datenbank eingeloggt wäre. Das einloggen geht bei mir über eine db-Klasse und (ganz wichtig) über die mysqli - Funktion, also nicht mysql_connect (!).
Könnte es damit zusammenhängen, dass ich die Funktion nicht benutzen kann?
Oder wäre solch ein Code garnicht valide?:
<?php
$str = "blubberblubber";
echo mysql_real_escape_string($str);
?>
(Ein Code von der Art führt bei mir schon zu der Fehlermeldung.
Achja, die Fehlermeldung:
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'www-data'@'localhost' (using password: NO) in /home/webpages/lima-city/xxxxxxxx on line 227
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /home/webpages/lima-city/s1m13/html/namenlos/index.php on line 227
andere User online: 0
MfG
s1m13 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Könnte es damit zusammenhängen, dass ich die Funktion nicht benutzen kann?
Oder wäre solch ein Code garnicht valide?:
Der Code ist valide, aber du benötigst eine Datenbankverbindung, siehe hier:
http://de2.php.net/mysql_real_escape_string
Dort steht:
Hinweis: Sie müssen eine Verbindung zu MySQL geöffnet haben, bevor Sie mysql_real_escape_string() verwenden, ansonsten erhalten Sie einen Fehler vom Typ E_WARNING und der Rückgabewert wird zu FALSE. Ist link_identifier nicht angegeben, wird die letzte MySQL-Verbindung verwendet.
Beitrag geändert: 29.12.2008 17:11:41 von cbhp -
noch eine Frage (ich mach mal keinen neuen Thread auf), zu OOP:
kann man die __destruct oder__construct - Funktionen auch manuell aufrufen?
dann würd ich mir ne Funktion schreiben, die __construct und __destruct ausführt, wenn ich mysql_real.. benutze.
MfG
s1m13
EDIT: Es ging trotzdem nicht:
Du warst nicht darauf eingegangen, dass ich mysqli benutze. Für das Objekt gibt es die eigene Methode: real_escape_string.
Jetz gehts, obwohl ich den Sinn von real_escape_string noch nicht 100% verstanden hab.
Beitrag geändert: 29.12.2008 17:18:02 von s1m13
Beitrag geändert: 29.12.2008 17:35:19 von s1m13 -
Hallo s1m13,
der Sinn von mysqli::real_escape_string() ist, eine Zeichenkette dafür vorzubereiten, dass man sie gefahrlos in eine SQL-Anweisung einfügen kann.
Normalerweise führst du die Funktion ja über Daten aus, die vom Benutzer eingegeben werden. Hacker dringen auch über Eingaben in Login-Feldern, Kommentarfeldern usw. in dein System ein, indem sie präparierte Eingaben verwenden. Wenn du diese Eingaben allerdings erst mit real_escape_string bearbeitest, kannst du sie gefahrlos in eine SQL-Anweisung reinschreiben. Mit dem Stichwort "SQL Injection" wirst du sicher fündig, wenn du mehr wissen willst.
Deshalb sollte man generell alle Daten, die ein Benutzer eingibt durch real_escape_string leiten (sofern es Zeichenketten sind).
Viele Grüße,
ps3web -
mysql_real_escape_string und mysqli_real_escape_string escapen einfach alles, was Probleme machen könnte. Das sind offensichtlich die beiden sorten von Anführungszeichen, aber auch der Nullterminator, Der Zeilenumbruch und der Wagenrücklauf. Ebenfalls maskiert wird Das 26. Ascii-Zeichen, das \Z. Das ist der EOF-Marker sozusagen, oder war es mal, kenn mich da nicht aus.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage