Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Quellcode |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
function db_connect() { // Wenn du deine DB-Verbindung als statische Variable definierst, kannst du sichergehen, das sie nur einmal aufgerufen wird... static $connection; // ...in dem du vor dem Connect prüfst, ob die Variable nicht schon bereits gesetzt wurde if(!isset($connection)) { // Sachen wie Passwort etc. kannst du auch in einer ini Datei definieren. // Ansonsten habe ich hier keine Datenbank definiert. // Wenn du mehrere Datenbanken verwendest, sollte jede Query im FROM Statement die Datenbank (am besten per globale Variable) nennen, um Fehler mit Default Werten zu vermeiden // Wenn nicht, kannst du den DB Namen als nächsten Parameter an die unten stehende mysqli_connect funktion haengen $config = array(); $config['username'] = "mein_username"; $config['password'] = "mein_passwort" $connection = mysqli_connect('localhost',$config['username'],$config['password'],); } // Falls keine Datenbankverbindung stattgefunden hat, solltest du den Fehler abfangen if($connection === false) { // Und hier irgendwie loggen return mysqli_connect_error(); } return $connection; } |
Quellcode |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
//Alle String Variablen in einem Query sollten damit vorher "saubergemacht" werden function quote($var="") { $var = preg_replace("/\\\'/","'",$var); $var = preg_replace('/\\\"/','"',$var); $var = preg_replace("/\\\+/","\\\\\\",$var); $var = preg_replace('/"/','\"',$var); $var = preg_replace("/'/","\'",$var); return "'".$var."'"; } |
Ausserdem
Immer immer IMMER Variablen escapen und selbst in Anführungszeichen, die von Nutzern kommen
Damit vermeidest du nicht nur doofe Datenbankfehler, sondern gehst auch zumindest grundsätzlich sicher, das dir kein Nutzer mit einer SQL Injection deine DB versaut
Quellcode
1 2 3 4 5 6 7 8 9 10 11 12 13 //Alle String Variablen in einem Query sollten damit vorher "saubergemacht" werden function quote($var="") { $var = preg_replace("/\\\'/","'",$var); $var = preg_replace('/\\\"/','"',$var); $var = preg_replace("/\\\+/","\\\\\\",$var); $var = preg_replace('/"/','\"',$var); $var = preg_replace("/'/","\'",$var); return "'".$var."'"; }
Die beiden und weitere DB Funktionen am besten in einen zentralen Handler packen, das jedes Skript (achja, du solltest von vornherein sicher gehen, das PHP Skripte und HTML Seiten möglichst strikt voneinander getrennt sind) das mit Datenbanken zu tun hat dann inkludieren kann.
Das wäre jetzt was was mir spontan zu dem Thema einfällt, wenn du da noch Konkret fragen hast stell sie
Ähm... dafür gibt es doch Prepared Statements !?
Werbeanzeige