dedlfix: Fatal error: Call to undefined function mysqli_connect()

Beitrag lesen

Hi!

"Fatal error: Call to undefined function mysqli_connect() "

Ist im Rest des Threads schon beantwortet, hier noch allgemeine Kommentare zum Code.

$vorname = $_POST['vorname'];
[...]

Es ist unsinnig, die Werte umzukopieren.

$db = mysqli_connect('localhost', 'user', '***********', 'db')
      or die('Fehler beim Verbinden mit MySQL-Server.');

Ein "or die()" ist keine gescheite Fehlerbehandlung. Einem Anwender eine mehr oder weniger nackige und auf jeden Fall hier abgebrochene Seite vorzusetzen bringt ihn und dich/dein Geschäft nicht weiter. Denk dir eine alternative Vorgehensweise aus, wie der Anwender doch noch zum Ziel kommen kann. Vielleicht sendest du einfach nur eine Mail an einen Bearbeiter und lässt den Datenbankeintrag sein, wenn das DBMS grad nicht will. So hast du auch noch eine Information, dass das DBMS nicht lief. Das "or die()" sieht nur der Anwender und du bekommst vom Ausfall nichts mit.

$sql = "INSERT INTO kontakt (vorname, nachname, email, betr, anliegen)" .
"VALUES ('$vorname','$nachname','$email','$betr','$anliegen')";

Sowas ist gefährlich und leichtsinnig. Das einfache unmaskierte Einfügen ist eine der häufigsten und am leichtesten auszunutzenden Sicherheitslücken. Ein Großteil der erfolgreichen Angriffe, die in letzter Zeit durch die Medien gehen, sind sicherlich auf solche Versäumnisse zurückzuführen. Das Problem läst sich vermeiden, indem man den Kontextwechsel beachtet. Siehe auch Exploits of a Mom.

$ergebnis = mysqli_query($db, $sql)
or die('Fehler bei Datenbankabfrage.');<-- Auf diese Zeile bezieht sich der Fehler

Kann nicht sein, er spricht vom mysqli_connect(), was weiter oben steht.

echo '<p>Vielen Dank ' . $vorname . '&ensp;' . $nachname . ',<br />f&uuml;r ihre E-Mail, ' . 'wir werden ihnen schnellstm&ouml;glich antworten<br /><br />';

Auch hier und beim Rest der echos ist auch der Kontextwechsel nicht beachtet worden.

Für ihre Unterstützung bedanke ich mich im vorraus.

Gerrn geschehen.

Lo!