Autor |
Beitrag |
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 07.10.16 17:01
- Nachträglich durch die Entwickler-Ecke gelöscht -
|
|
Csharp-programmierer
Beiträge: 696
Erhaltene Danke: 10
Windows 8.1
C# (VS 2013)
|
Verfasst: Fr 07.10.16 17:11
Naja das wusste ich ja, dass das erste Argument die Connection sein muss.
PHP-Quelltext 1:
| $conn = mysqli_connect($servername, $username,$password,$database); |
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55:
| if($checked_agb && $checked_email && $checked_password) { $search = mysqli_query($conn,"SELECT `username`,`email` FROM `MainlysoftBenutzer` WHERE `username`='$username' AND `email`='$chem1'"); $row = mysqli_fetch_row($search);
if($row[1]==$chem1) { echo "Username and Email exists "; } else { $b = "false"; $regDatum = date(Y-M-D); $dbPass = password_hash("$chpass1", PASSWORD_DEFAULT, ['cost' => 12]); $anzMeld = "0"; $emBest = "false"; $mysqli = mysqli_query($conn, "INSERT INTO `MainlysoftBenutzer`(`name`, `vorname`, `passwort`, `email`, `accbest`, `username`, `geburtsdatum`, `registrierungsdatum`, `anzMeld`, `sicherheitsfrage`, `antwort`, `gender`, `language`, `embest`) VALUES('$nachname', '$vorname', '$dbPass', '$chem1', '$b', '$username', '$geburtsdatum', '$regDatum', '$anzMeld', '$safequestion', '$question_answer', '$gender', '$language', '$emBest')"); if ($mysqli) { function getUsetId($email) { $search = mysqli_query($conn, "SELECT ID FROM MainlysoftBenutzer WHERE `email`='$email'"); $row = mysqli_fetch_row($search); $id = $row[0]; return $id; }
$calc_id = getUsetId($chem1); $to = $chem1; $subject = 'MS Network Registrierung'; $em_res = mail($to, $subject, $message, $headers); if ($em_res) { header("Location: reg_succes.html"); } else { echo "Fehler beim Senden der Email"; } } else { echo "Ein Fehler ist aufgetreten. Die Daten konnten nicht in die Datenbank eingetragen werden. Bitte versuchen Sie es erneut."; } } } else { echo "Fehler"; } } |
Das ist ja die Verbindung im ersten Argument. Aber es funktioniert nicht
_________________ "Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
|
|
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 07.10.16 17:56
- Nachträglich durch die Entwickler-Ecke gelöscht -
|
|
Csharp-programmierer
Beiträge: 696
Erhaltene Danke: 10
Windows 8.1
C# (VS 2013)
|
Verfasst: Fr 07.10.16 18:08
An der Serververbindung liegt es keinesfaalls.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124:
| $conn = mysqli_connect($servername, $username,$password,$database);
if($conn) { $username = mysqli_real_escape_string($conn, $_POST['username']); $geburtsdatum = mysqli_real_escape_string($conn, $_POST['geburtsdatum']); $vorname = mysqli_real_escape_string($conn, $_POST['vorname']); $nachname = mysqli_real_escape_string($conn, $_POST['lastname']); $chem1 = mysqli_real_escape_string($conn, $_POST['email_one']); $chem2 = mysqli_real_escape_string($conn, $_POST['email_two']); $safequestion = mysqli_real_escape_string($conn, $_POST['safequestion']); $question_answer = mysqli_real_escape_string($conn, $_POST['question_answer']); $chpass1 = mysqli_real_escape_string($conn, $_POST['password1']); $chpass2 = mysqli_real_escape_string($conn, $_POST['password2']); $gender = mysqli_real_escape_string($conn, $_POST['gender']); $language = mysqli_real_escape_string($conn, $_POST['language']); if($username != "" && $geburtsdatum != "" && $vorname != "" && $chem1 != "" && $chem2 != "" && $safequestion != "" && $question_answer != "" && chpass1 != "" && $chpass2 != "" && language != "" && gender != "") { if($chpass1 == $chpass2) { if(strlen($chpass1) >= 6) { $checked_password = true; } else { echo "Das Passwort muss mindestens 6 Zeichen enthalten."; $checked_password = false; } } else { echo "<div class='alert alert-danger'>Die von Ihnen eingegebenen Passwörter stimmen nicht überein.</div>"; $checked_password = false; } if(isset($_POST['agb'])) { $checked_agb = true; } else { echo "<div class='alert alert-danger'>Sie müssen die AGB lesen.</div>"; $checked_agb = false; }
if($chem1 == $chem2) { $checked_email = true; } else { echo "<div class='alert alert-danger'>Die von Ihnen eingegebenen E-Mails stimmen nicht überein.</div>"; $checked_email = false; } if($checked_agb && $checked_email && $checked_password) { $search = mysqli_query($conn,"SELECT `username`,`email` FROM `MainlysoftBenutzer` WHERE `username`='$username' AND `email`='$chem1'"); $row = mysqli_fetch_row($search);
if($row[1]==$chem1) { echo "Username and Email exists "; } else { $b = "false"; $regDatum = date(Y-M-D); $dbPass = password_hash("$chpass1", PASSWORD_DEFAULT, ['cost' => 12]); $anzMeld = "0"; $emBest = "false"; $mysqli = mysqli_query($conn, "INSERT INTO `MainlysoftBenutzer`(`name`, `vorname`, `passwort`, `email`, `accbest`, `username`, `geburtsdatum`, `registrierungsdatum`, `anzMeld`, `sicherheitsfrage`, `antwort`, `gender`, `language`, `embest`) VALUES('$nachname', '$vorname', '$dbPass', '$chem1', '$b', '$username', '$geburtsdatum', '$regDatum', '$anzMeld', '$safequestion', '$question_answer', '$gender', '$language', '$emBest')"); if ($mysqli) { function getUsetId($email) { $search = mysqli_query($conn, "SELECT `ID` FROM `MainlysoftBenutzer` WHERE 'email'='$chem1'"); $row = mysqli_fetch_row($search); $id = $row[0]; return $id; }
$calc_id = getUsetId($chem1); $to = $chem1; $subject = 'MS Network Registrierung'; $em_res = mail($to, $subject, $message, $headers); if ($em_res) { header("Location: reg_succes.html"); } else { echo "Fehler beim Senden der Email"; } } else { echo "Ein Fehler ist aufgetreten. Die Daten konnten nicht in die Datenbank eingetragen werden. Bitte versuchen Sie es erneut."; } } } else { echo "Fehler"; } } else { echo "Füllen Sie bitte alle Datenfelder aus."; } } else { die('Es konnte keine Verbindung zu dem Mainlysoft Registrationsserver hergestellt werden.'); } |
Das kurriose ist ja, dass die Daten trotzdem in die Datenbank geschrieben werden. Es wird auch verglichen, ob es den Username schon gibt. Aber ich weiß auch nicht, warum genau an der Funktion hapert, die die ID ausliest, ich meine die obigen Funktionen funktionieren ja auch tadellos
_________________ "Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
|
|
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 07.10.16 19:10
- Nachträglich durch die Entwickler-Ecke gelöscht -
|
|
Csharp-programmierer
Beiträge: 696
Erhaltene Danke: 10
Windows 8.1
C# (VS 2013)
|
Verfasst: Fr 07.10.16 21:49
$server = "localhost";
$database = "usr_web23442894_1";
Die anderen beiden möchte ich aus Sicherheitsgründen nicht sagen. Aber ich verstehe nicht, warum erst die Daten rausgesucht werden, und dann nicht
_________________ "Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
|
|
Christian S.
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Fr 07.10.16 21:58
Hallo,
wenn Du innerhalb einer Funktion eine Variable benutzen willst, die außerhalb zugewiesen wurde (wie $conn in getUserId), musst Du das mittels global $conn; bekannt machen.
Grüße
Christian
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Csharp-programmierer
Beiträge: 696
Erhaltene Danke: 10
Windows 8.1
C# (VS 2013)
|
Verfasst: Fr 07.10.16 22:19
Ahh. Ich habe die Variable jetzt globalisiert:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132:
| <?php $servername = ""; $username = ""; $password = ""; $database = ""; global $conn; $conn = mysqli_connect($servername, $username,$password,$database);
if($conn) { $username = mysqli_real_escape_string($conn, $_POST['username']); $geburtsdatum = mysqli_real_escape_string($conn, $_POST['geburtsdatum']); $vorname = mysqli_real_escape_string($conn, $_POST['vorname']); $nachname = mysqli_real_escape_string($conn, $_POST['lastname']); $chem1 = mysqli_real_escape_string($conn, $_POST['email_one']); $chem2 = mysqli_real_escape_string($conn, $_POST['email_two']); $safequestion = mysqli_real_escape_string($conn, $_POST['safequestion']); $question_answer = mysqli_real_escape_string($conn, $_POST['question_answer']); $chpass1 = mysqli_real_escape_string($conn, $_POST['password1']); $chpass2 = mysqli_real_escape_string($conn, $_POST['password2']); $gender = mysqli_real_escape_string($conn, $_POST['gender']); $language = mysqli_real_escape_string($conn, $_POST['language']); if($username != "" && $geburtsdatum != "" && $vorname != "" && $chem1 != "" && $chem2 != "" && $safequestion != "" && $question_answer != "" && chpass1 != "" && $chpass2 != "" && language != "" && gender != "") { if($chpass1 == $chpass2) { if(strlen($chpass1) >= 6) { $checked_password = true; } else { echo "Das Passwort muss mindestens 6 Zeichen enthalten."; $checked_password = false; } } else { echo "<div class='alert alert-danger'>Die von Ihnen eingegebenen Passwörter stimmen nicht überein.</div>"; $checked_password = false; } if(isset($_POST['agb'])) { $checked_agb = true; } else { echo "<div class='alert alert-danger'>Sie müssen die AGB lesen.</div>"; $checked_agb = false; }
if($chem1 == $chem2) { $checked_email = true; } else { echo "<div class='alert alert-danger'>Die von Ihnen eingegebenen E-Mails stimmen nicht überein.</div>"; $checked_email = false; } if($checked_agb && $checked_email && $checked_password) { $search = mysqli_query($conn,"SELECT `username`,`email` FROM `MainlysoftBenutzer` WHERE `username`='$username' AND `email`='$chem1'"); $row = mysqli_fetch_row($search);
if($row[1]==$chem1) { echo "Username and Email exists "; } else { $b = "false"; $regDatum = date(Y-M-D); $dbPass = password_hash("$chpass1", PASSWORD_DEFAULT, ['cost' => 12]); $anzMeld = "0"; $emBest = "false"; $mysqli = mysqli_query($conn, "INSERT INTO `MainlysoftBenutzer`(`name`, `vorname`, `passwort`, `email`, `accbest`, `username`, `geburtsdatum`, `registrierungsdatum`, `anzMeld`, `sicherheitsfrage`, `antwort`, `gender`, `language`, `embest`) VALUES('$nachname', '$vorname', '$dbPass', '$chem1', '$b', '$username', '$geburtsdatum', '$regDatum', '$anzMeld', '$safequestion', '$question_answer', '$gender', '$language', '$emBest')"); if ($mysqli) { function getUsetId($email) { $search = mysqli_query($conn, "SELECT `ID` FROM `MainlysoftBenutzer` WHERE `email`='$chem1'"); $row = mysqli_fetch_row($search); $id = $row[0]; return $id; }
$calc_id = getUsetId($chem1); $to = $chem1; $subject = 'MS Network Registrierung'; $headers = "From: " . strip_tags('yannicmair@mainlysoft.com') . "\r\n"; $em_res = mail($to, $subject, $message, $headers); if ($em_res) { header("Location: reg_succes.html"); } else { echo "Fehler beim Senden der Email"; } } else { echo "Ein Fehler ist aufgetreten. Die Daten konnten nicht in die Datenbank eingetragen werden. Bitte versuchen Sie es erneut."; } } } else { echo "Fehler"; } } else { echo "Füllen Sie bitte alle Datenfelder aus."; } } else { die('Es konnte keine Verbindung zu dem Mainlysoft Registrationsserver hergestellt werden.'); } ?> |
Aber der Fehler kommt an der selben Stelle
_________________ "Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
|
|
Christian S.
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Fr 07.10.16 22:38
Lies Dir bitte durch, was global tut und an welcher Stelle man es verwendet.
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Csharp-programmierer
Beiträge: 696
Erhaltene Danke: 10
Windows 8.1
C# (VS 2013)
|
Verfasst: Fr 07.10.16 22:44
_________________ "Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
|
|
hydemarie
Beiträge: 481
Erhaltene Danke: 51
|
Verfasst: Fr 07.10.16 22:55
Hast du es denn verstanden? Und, was noch wichtiger ist, weißt du, wo du nächstes Mal nachgucken solltest, bevor du drauflosprogrammierst?
|
|
Csharp-programmierer
Beiträge: 696
Erhaltene Danke: 10
Windows 8.1
C# (VS 2013)
|
Verfasst: Sa 08.10.16 12:29
Ja, ich denke schon. Man definiert eine Variable $conn. Aber in functions muss man dann global $conn definieren. Aber vielen Dank für jeden einzelnen, der mit geholfen hat
_________________ "Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
|
|
Csharp-programmierer
Beiträge: 696
Erhaltene Danke: 10
Windows 8.1
C# (VS 2013)
|
Verfasst: Sa 08.10.16 22:58
Also soweit funktioniert jetzt erstmal alles. Jetzt ist nur noch das Problem, dass keine Usernames und Emails mehrmals vorkommen fürfen. Ich weiß nicht so recht, wie man die korrekte Abfrage dazu macht:
PHP-Quelltext 1: 2: 3: 4: 5: 6: 7:
| $search = mysqli_query($conn,"SELECT `username`,`email` FROM `MainlysoftBenutzer` WHERE `username`='$username' AND `email`='$chem1'"); $row = mysqli_fetch_row($search);
if($row[1]==$chem1 && $row[0] == $username) { echo "Username and Email exists "; } |
Ich habe das jetzt mal ausgeführt und ich habe 2 mal die selben Emails in der Datenbank. Aber das darf nicht sein. Wie kann man das beheben?
_________________ "Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
|
|
hydemarie
Beiträge: 481
Erhaltene Danke: 51
|
Verfasst: Sa 08.10.16 23:00
Zitat: | dass keine Usernames und Emails mehrmals vorkommen fürfen |
Dann setz' die Spalten in der Datenbank doch auf Unique.
|
|
Csharp-programmierer
Beiträge: 696
Erhaltene Danke: 10
Windows 8.1
C# (VS 2013)
|
Verfasst: Sa 08.10.16 23:15
Danke! Ich habe email und username jetzt auf Unique gesetzt. Ich vertraue echt auf SQL, dass das alles sicher zu 100% funktioniert
_________________ "Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
|
|
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 09.10.16 06:00
- Nachträglich durch die Entwickler-Ecke gelöscht -
|
|
Csharp-programmierer
Beiträge: 696
Erhaltene Danke: 10
Windows 8.1
C# (VS 2013)
|
Verfasst: Mo 10.10.16 11:48
Soo. Also die Registrierung funktioniert jetzt einwandfrei. Jetzt habe ich mir auf YouTube ein Tutorial angesehen, wie man einen Login baut. Folgendes ist dabei herausgekommen:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43:
| if($conn) { $benutzername = mysqli_real_escape_string($conn, $_POST['user']); $passwort = mysqli_real_escape_string($conn, $_POST['pass']); $loginButton = mysqli_real_escape_string($conn, $_POST['login']); if ($loginButton) { if($benutzername AND $password) { mysqli_select_db($conn, "MainlysoftBenutzer"); $query = mysqli_query($conn, "SELECT * FROM `MainlysoftBenutzer` WHERE `username`='$benutzername'"); $num = mysqli_num_rows($query); if($num != 0) { WHILE ($row = mysqli_fetch_assoc($query)) { $dbbenutzer = $row['username']; $dbpasswort = $row['passwort']; } if($dbbenutzer == $username AND $dbpasswort == $passwort) { echo "Login erfolgreich"; } else { echo "Ihre Daten sind nicht korrekt. Bitte geben Sie richtige Daten ein."; } } else { echo "Der eingegebene Benutzer existiert nicht."; } } else { echo "Füllen Sie alle Datenfelder aus."; } } } |
Wenn ich einen Benutzer eingebe, der gar nicht existiert, wird mir auch die Fehlermeldung angezeigt, dass dieser Benutzer nicht existiert. Wenn ich jedoch das richtige Passwort eingebe, bekomme ich die Meldung, dass die Daten nicht korrekt sind. Ich dachte erst, es liegt an password_hash. Das habe ich dann entfernt, also ist in der Datenbank jetzt das Passwort unverschlüsselt - aber die Benutzerdaten sind immernoch inkorrekt.
Zusammenfassung: Den Benutzer erkennt er, also ob es ihn gibt oder nicht. Bei dem Passwort jedoch nicht. Woran liegt das?
_________________ "Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
|
|
hydemarie
Beiträge: 481
Erhaltene Danke: 51
|
Verfasst: Mo 10.10.16 11:54
Csharp-programmierer hat folgendes geschrieben : | also ist in der Datenbank jetzt das Passwort unverschlüsselt |
Aua.
Mach' das nie, niemals, unter keinen Umständen. Nicht mal, wenn man dich mit vorgehaltener Waffe dazu zu zwingen versucht.
Gib doch mal die beiden Variablen aus, die du versuchst zu vergleichen. Wir wissen nämlich auch nicht, was da drinsteht.
|
|
Csharp-programmierer
Beiträge: 696
Erhaltene Danke: 10
Windows 8.1
C# (VS 2013)
|
Verfasst: Mo 10.10.16 12:16
In den Variablen in der Benutzername und das Passwort. So sieht es jetzt erstmal in der Datenbank aus:
Sowohl der Login Script als auch der InsertData Script verschlüsseln das Passwort über die selbe Methode. Wenn ich mir das Passwort im Login ausgeben lasse, kommt dieses Konstrukt: $2y$10$jzQRdyFfAdHXsK/lA1YGXeFAq3FvLkByzUKK9typUJQrqglOZiu1m
Ganz anders als in der Datenbank. Aber als ich es in Plain Text versucht habe und die Passwörter identisch waren, hat's auch nicht geklappt. Hier einmal die Verschlüsselung: $passwordHash = password_hash($passwort, PASSWORD_DEFAULT);
Einloggen, um Attachments anzusehen!
_________________ "Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
|
|
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 10.10.16 12:24
- Nachträglich durch die Entwickler-Ecke gelöscht -
Für diesen Beitrag haben gedankt: hydemarie
|
|
|