Ein Wunderschönen,
ich sitze seit mehreren Tagen an folgendem Problem und hoffe mit eurer Hilfe endlich eine Lösung zu finden:
Für meine Webseite soll es ein einfach Accountsystem geben, so wie man es kennt. Habe alles programmiert und hat lokal auch wunderbar funktioniert. Nun habe ich alles auf einen Strato-Server hochgeladen und seitdem funktioniert das auslesen mittels SELECT nicht mehr. INSERT und UPDATE funktionieren wiederum wunderbar. Ich habe ne Menge recherchiert, versucht und gebastelt, nichts hilft. Strato selber konnte mir sowohl telefonisch als auch schriftlich nicht weiterhelfen.
Ich bin noch recht frisch im PHP/SQL-Universum daher übersehe ich womöglich grundlegendes Wissen.
Als erstes der Verbindungsaufbau zur Datenbank (mit Platzhaltern):
Dann auf der Seite zum Registrieren die Überprüfung, ob die eingegebene E-Mail schon in der DB ist (funktioniert nicht):
Falls nicht, wird eine Authentifizierungsmail verschickt und die Eingaben in die DB eingetragen (inkl. Backup)(funktioniert):
Über den Link in der E-Mail gelangt man dann zu einer anderen Seite, welche die Echtheit des Links überprüft und dann die Spalte "auth" in der Datenbank auf 1 (funktioniert) setzt für "authentifiziert".
Ich habe mir schon alles erdenklich ausgeben lassen aber da meine Kenntnisse begrenzt sind, hilft mir das nur bedingt weiter. Jedenfalls scheint die Problematik in den folgenden Zeilen zu stecken.
Wenn ich mir $login danach ausgeben lassen, kommt immer affected-rows-> -1, was meinen Recherchen nach bedeutet, dass die SQL-Abfrage nicht geklappt hat.
Über den Strato Error-Logfile wird mir kein Fehler ausgegeben, das Programm macht weiter, als wenn die E-Mail noch nicht in der DB wäre, was sie aber definitiv ist.
Dasselbe Spiel auf der Seite zum Einloggen, die DB wird nicht korrekt ausgelesen, sprich ich kann mich nicht einloggen.
ich sitze seit mehreren Tagen an folgendem Problem und hoffe mit eurer Hilfe endlich eine Lösung zu finden:
Für meine Webseite soll es ein einfach Accountsystem geben, so wie man es kennt. Habe alles programmiert und hat lokal auch wunderbar funktioniert. Nun habe ich alles auf einen Strato-Server hochgeladen und seitdem funktioniert das auslesen mittels SELECT nicht mehr. INSERT und UPDATE funktionieren wiederum wunderbar. Ich habe ne Menge recherchiert, versucht und gebastelt, nichts hilft. Strato selber konnte mir sowohl telefonisch als auch schriftlich nicht weiterhelfen.
Ich bin noch recht frisch im PHP/SQL-Universum daher übersehe ich womöglich grundlegendes Wissen.
Als erstes der Verbindungsaufbau zur Datenbank (mit Platzhaltern):
PHP-Code:
<?php
session_start();
error_reporting(-1);
ini_set('display_errors', 1);
define ("ZEILENUMBRUCH", "\r\n");
$db = new mysqli('rdbms.strato.de','benutzer','passwort','Datenbank');
if($db->connect_errno) {
die('Keine Verbindung zum Server');
}
PHP-Code:
$mail = "";
if (isset($_POST['mail'])) {
$mail = trim($_POST['mail']);
}
$erstellt = date("Y-m-d H:i:s");
$kontrollzahl = random_int (100000000, 999999999);
$login = $db->prepare("SELECT mail FROM users WHERE mail=? ");
$login->bind_param('s',$mail);
$login->execute();
$login->bind_result($mail);
while ($login->fetch()) {
}
if ( $login->num_rows == 1 ) {
header('Location: register.php?aktion=vergeben');
die();
}
PHP-Code:
if($email->send()){
$erfolg = true;
$einfuegen = $db->prepare("INSERT INTO users (username, passwort, mail, s_zugang, g_zugang, erstellt, auth_code, auth)
VALUES (?, ?, ?, 0, 0, NOW(), $kontrollzahl, 0)");
$einfuegen->bind_param('sss', $username, $password, $mail);
if ($einfuegen->execute()) {
$einfuegen2 = $db->prepare("INSERT INTO backup (username, passwort, mail, s_zugang, g_zugang, erstellt, auth_code, auth)
VALUES (?, ?, ?, 0, 0, NOW(), $kontrollzahl, 0)");
$einfuegen2->bind_param('sss', $username, $password, $mail);
if ($einfuegen2->execute()) {
}
else {
$fehlschlag = true;
}
}
}
else {
$ungueltig = true;
}
PHP-Code:
if ( $mail == $_GET['mail'] AND $kontrollzahl == $_GET['id']) {
$update = $db->prepare("UPDATE users SET auth = 1 WHERE mail=? LIMIT 1");
$update->bind_param('s', $_GET['mail']);
if ($update->execute()) {
?>
<div class="text_box_one_liner">E-Mail wurde authentifiziert</div>
<?php
}
}
PHP-Code:
$login = $db->prepare("SELECT mail FROM users WHERE mail=? ");
$login->bind_param('s',$mail);
$login->execute();
Über den Strato Error-Logfile wird mir kein Fehler ausgegeben, das Programm macht weiter, als wenn die E-Mail noch nicht in der DB wäre, was sie aber definitiv ist.
Dasselbe Spiel auf der Seite zum Einloggen, die DB wird nicht korrekt ausgelesen, sprich ich kann mich nicht einloggen.
Kommentar