Aktueller Standort: Startseite> Neueste Artikel> Grundlegende Verwendung von PHP real_escape_string und mysqli

Grundlegende Verwendung von PHP real_escape_string und mysqli

gitbox 2025-05-27

Bei der Verwendung von PHP für die Webentwicklung ist Betriebsdatenbanken eine der häufigsten Aufgaben in der täglichen Arbeit. Um Sicherheitsprobleme wie die SQL -Injektion zu vermeiden, müssen wir die vom Benutzer eingegebenen Daten entsprechende Fluchtverarbeitung durchführen. Bei der Verwendung von MySQL -Datenbanken bietet die MySQLI -Erweiterung von PHP eine häufig verwendete und sichere Funktion: Real_escape_string , verwendet, um Strings zu entkommen, wodurch die Sicherheit von Datenbankvorgängen verbessert wird.

1. Einführung in die MySQLI -Erweiterung

Die Erweiterung von MySQLI (MySQL Improved) ist ein Erweiterungsmodul in PHP für die Interaktion mit MySQL -Datenbanken. Im Vergleich zu den frühen MySQL -Erweiterungen bietet MySQLI umfangreichere Funktionen wie die Unterstützung von Vorverarbeitungsanweisungen, Transaktionskontrolle und einen vollständigeren Fehlerbehebungsmechanismus.

Um die MySQLI -Erweiterung zu verwenden, müssen Sie zunächst wie folgt ein Datenbankverbindungsobjekt erstellen:

<code> $ host = 'localhost'; $ user = 'db_user'; $ password = 'db_password'; $ database = 'test_db';

$ conn = new MySQLI ($ host, $ user, $ password, $ database);

if ($ conn-> connect_error) {
Die ('Verbindung fehlgeschlagen:'. $ conn-> connect_error);
}
</code>

Dieser Code verwendet den MySQLI -Konstruktor, um eine Verbindung zum MySQL -Server herzustellen, und stellt fest, ob die Verbindung erfolgreich ist.

2. Verwendung der Real_esescape_String -Funktion

real_escape_string ist eine Methode, die von MySQLi -Objekt bereitgestellt wird, um Strings zu entkommen, die in SQL -Anweisungen verwendet werden. Dies kann verhindern, dass Sonderzeichen (z. B. Zitate, Backslashes usw.) die SQL -Syntax zerstören, wodurch die SQL -Injektionsangriffe effektiv verhindert werden.

Die typische Verwendung ist wie folgt:

<Code> $ user_input = "O'Reilly"; $ safe_input = $ conn-> real_escape_string ($ user_input); $ sql = "SELECT * von Benutzern wobei name = '$ safe_input'"; $ result = $ conn-> query ($ sql); </code>

Wenn der vom Benutzer eingegebene O'Reilly nicht entkommen wird, wird dies zu einem Fehler in der SQL -Anweisung oder sogar zu Sicherheitsproblemen führen. Die Real_escape_String -Methode entgeht automatisch einzelnen Zitaten zu O \ 'Reilly und baut so eine legale und sichere SQL -Erklärung auf.

3.. Dinge zu beachten

  1. Muss nach der Datenbankverbindung verwendet werden
    real_escape_string hängt vom Zeichensatz der aktuellen Verbindung ab, daher muss sie aufgerufen werden, nachdem die Verbindung erfolgreich ist.

  2. Nicht gleich einem Ersatz für Vorverarbeitungsanweisungen <br> Obwohl real_escape_string eine gewisse Sicherheit bieten kann, kann es keine Vorverarbeitungsanweisungen vollständig ersetzen. Vorverarbeitungsanweisungen sind die sicherste Methode, um die SQL -Injektion zu verhindern.

  3. Zeichensätze müssen konsistent sein <br> Stellen Sie sicher, dass der von PHP und die Datenbank verwendete Zeichensatz konsistent ist (z. B. UTF8MB4), sonst kann sie zu Fluchtfehler oder verstümmelten Zeichen führen.

4. Praktische Beispiele für die Kombination von HTML -Formen

Hier ist ein Beispiel für die Verwendung eines HTML -Formulars, um Benutzereingaben zu empfangen und es über real_escape_string zu verarbeiten:

<Code> & lt; Formmethode = "post" action = "https://gitbox.net/process.php" & gt; Benutzername: & lt; Eingabe type = "text" name = "userername" & gt; & lt; input type = "suruging" value = "subieren" & gt; & lt;/form & gt; </code>

Process in process.php :

<Code> $ conn = new MySQLI ('localhost', 'user', 'password', 'Datenbank');

if ($ conn-> connect_error) {
Die ('Verbindung fehlgeschlagen:'. $ conn-> connect_error);
}

$ userername = $ _post ['userername'];
$ safe_username = $ conn-> real_escape_string ($ userername);

$ sql = "Select * von Benutzern wobei userername = '$ safe_username'";
$ result = $ conn-> query ($ sql);

if ($ result && $ result-> num_rows> 0) {
echo "Der Benutzer existiert bereits";
} anders {
echo "Der Benutzer existiert nicht";
}
</code>

5. Zusammenfassung

Mysqli :: real_escape_string ist eines der wichtigsten Werkzeuge in PHP, um die SQL -Injektion zu verhindern. Es schützt die Legitimität von SQL -Anweisungen, indem sie Sonderzeichen in den Benutzereingaben entkommen. Für größere Sicherheit sollten Entwickler jedoch die Verwendung von Vorverarbeitungsanweisungen priorisieren. Nachdem Sie die grundlegende Verwendung von Real_escape_String verstanden haben, können Sie die Benutzereingaben sicherer verarbeiten und sicher mit der Datenbank interagieren.