Ocame Geschrieben 29. Juni 2012 Teilen Geschrieben 29. Juni 2012 if(!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) { | v if(!filter_var($_POST['email'][0], FILTER_VALIDATE_EMAIL)) { das mit der [0] dahinter gilt auch ein paar Zeilen weiter bei der Angabe von email und pass Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
JND3004 Geschrieben 29. Juni 2012 Autor Teilen Geschrieben 29. Juni 2012 cool danke. er hat mein konto jzt angelegt und alles. mir ist gerade aufgefallen das in der datenbank die ip adresse von mir nicht gespeichert wurde. das wäre noch ein problem. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
din1031 Geschrieben 29. Juni 2012 Teilen Geschrieben 29. Juni 2012 Das kann mehrer Gründe haben, schon mal geprüft ob auch wirklich der wert in der Variable ist? Und ist das Datenbankfehld tauglich für die IP . Prinzipielle mal zur perfomace if(isset($_POST['username']) || !isset($_POST['pass']) || !isset($_POST['email']) || empty($_POST['username']) || empty($_POST['pass']) || empty($_POST['email'])) { Das ist eigentlich unsinnig... es reicht eigentlich das empty... und php ist auch wesentlich schneller empty herauszufinden als isset (bedingt durch null prüfung) sind zwar nur ms was das aussmacht aber ich wollte es mal gesagt haben *g*. Achja empty ist auch false wenn es !isset ist . Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
JND3004 Geschrieben 29. Juni 2012 Autor Teilen Geschrieben 29. Juni 2012 also zur ip-adresse... hier ist der code wo auch am anfang die ip ist. was danach so kommt ist glaub ich eher unwichtig für die ip $user_ip = ip2long ($_SERVER['RENOTE_ADDR']); $sql = ' INSERT INTO user (Username, Password, Email, IP, date) VALUES (?, ?, ?, ?, NOW())'; $stmt = $db->prepare($sql); $stmt->bind_param('sssi', $_POST['username'], $_POST['pass'], $_POST['email'], $user_ip); if(!$stmt->execute()) { if(strpos($db->error, 'Duplicate') !== false) { $error_msg = "Der Benutzername oder die E-Mail wurde bereits verwendet."; } else { $error_msg = "Es ist ein Fehler aufgetreten."; } return; } $stmt->close(); $success_msg = "Das Benutzerkonto ".htmlspecialchars($_POST['username'])." wurde erfolgreich angelegt"; ?> ********************************** und dann noch eine sache. ich habe eben zwei meiner freunde geben sich versuchen zu regis. auf meiner seite. aber bei beiden kam der fehler das die email adresse bereits verwendet wird? wieso? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
din1031 Geschrieben 29. Juni 2012 Teilen Geschrieben 29. Juni 2012 Weil der Datensatz doppelt ist . Du hast kein Auto Increment in der db eingestellt oder so etwas in der art . Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Ocame Geschrieben 29. Juni 2012 Teilen Geschrieben 29. Juni 2012 Es heißt REMOTE_ADDR und nicht RENOTE_ADDR, das dürfte der fehler sein warum es mit der ip nicht geht. ^^ das Problem mit der Fehlermeldung liegt daran das bei der Zeile mit dem $stmt->bind_param kein [0] hinter und [pass] ist Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
JND3004 Geschrieben 29. Juni 2012 Autor Teilen Geschrieben 29. Juni 2012 Es heißt REMOTE_ADDR und nicht RENOTE_ADDR, das dürfte der fehler sein warum es mit der ip nicht geht. ^^das Problem mit der Fehlermeldung liegt daran das bei der Zeile mit dem $stmt->bind_param kein [0] hinter und [pass] ist habs geändert wie du es jzt gesagt hast. code lautet jzt so $user_ip = ip2long ($_SERVER['REMOTE_ADDR']); $sql = ' INSERT INTO user (Username, Password, Email, IP, date) VALUES (?, ?, ?, ?, NOW())'; $stmt = $db->prepare($sql); [b]zeile 68: $stmt->bind_param('sssi', $_POST['username'], $_POST['pass'][0], $_POST['email'][0], $user_ip);[/b] if(!$stmt->execute()) { if(strpos($db->error, 'Duplicate') !== false) { $error_msg = "Der Benutzername oder die E-Mail wurde bereits verwendet."; } else { $error_msg = "Es ist ein Fehler aufgetreten."; } return; } $stmt->close(); $success_msg = "Das Benutzerkonto ".htmlspecialchars($_POST['username'])." wurde erfolgreich angelegt"; ?> wenn ich mich jzt versuche zu registrieren, dann meint er jzt Fatal error: Only variables can be passed by reference in /data/multiserv/users/703938/projects/1873530/www/phpinclude/db/registration_logic.php on line 68 Weil der Datensatz doppelt ist . Du hast kein Auto Increment in der db eingestellt oder so etwas in der art . in meiner db möchte er das auto_increment nicht akzeptieren. ich hatte es auch schon versucht nachträglich es einzutragen. aber hier nochmal ein pic Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Ocame Geschrieben 29. Juni 2012 Teilen Geschrieben 29. Juni 2012 Scheinbar kein freund von Arrays Einfach die Zeile durch folgendes ersetzten: $pass = $_POST['pass'][0]; $email = $_POST['email'][0]; $stmt->bind_param('sssi', $_POST['username'], $pass, $emai, $user_ip); Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
JND3004 Geschrieben 29. Juni 2012 Autor Teilen Geschrieben 29. Juni 2012 so sieht es jzt aus $user_ip = ip2long ($_SERVER['REMOTE_ADDR']); $sql = ' INSERT INTO user (Username, Password, Email, IP, date) VALUES (?, ?, ?, ?, NOW())'; $stmt = $db->prepare($sql); $_POST['pass'][0]; $_POST['email'][0]; $stmt->bind_param('sssi', $_POST['username'], $pass, $email, $user_ip); if(!$stmt->execute()) { if(strpos($db->error, 'Duplicate') !== false) { $error_msg = "Der Benutzername oder die E-Mail wurde bereits verwendet."; } else { $error_msg = "Es ist ein Fehler aufgetreten."; } return; } $stmt->close(); $success_msg = "Das Benutzerkonto ".htmlspecialchars($_POST['username'])." wurde erfolgreich angelegt"; ?> aber wenn ich mich registr. möchte meint er "Es ist ein Fehler aufgetreten" Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Ocame Geschrieben 29. Juni 2012 Teilen Geschrieben 29. Juni 2012 dann lass dir mal mit $error_msg = "Es ist ein Fehler aufgetreten." . $db->error; mehr infos anzeigen Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
JND3004 Geschrieben 29. Juni 2012 Autor Teilen Geschrieben 29. Juni 2012 habs eben nur mal aktualiesiert um die neue meldung zu sehen Es ist ein Fehler aufgetreten.Column 'Password' cannot be null $user_ip = ip2long ($_SERVER['REMOTE_ADDR']); $sql = ' INSERT INTO user (Username, Password, Email, IP, date) VALUES (?, ?, ?, ?, NOW())'; $stmt = $db->prepare($sql); $_POST['pass'][0]; $_POST['email'][0]; $stmt->bind_param('sssi', $_POST['username'], $pass, $email, $user_ip); if(!$stmt->execute()) { if(strpos($db->error, 'Duplicate') !== false) { $error_msg = "Der Benutzername oder die E-Mail wurde bereits verwendet."; } else { $error_msg = "Es ist ein Fehler aufgetreten." . $db->error; } return; } $stmt->close(); $success_msg = "Das Benutzerkonto ".htmlspecialchars($_POST['username'])." wurde erfolgreich angelegt"; ?> ich weis sonst nicht wie du es meinst. oder hab ich es falsch gemacht? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Ocame Geschrieben 29. Juni 2012 Teilen Geschrieben 29. Juni 2012 du hast auch die Hälfte vergessen, vor dem $_POST['pass'][0] kommt noch was, das selbe gilt auch bei email Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
JND3004 Geschrieben 29. Juni 2012 Autor Teilen Geschrieben 29. Juni 2012 sry, aber kannst du vl mir es hinschreiben? denn wie man auch merkt bin ich nicht so gut Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Ocame Geschrieben 29. Juni 2012 Teilen Geschrieben 29. Juni 2012 Scheinbar kein freund von ArraysEinfach die Zeile durch folgendes ersetzten: $pass = $_POST['pass'][0]; $email = $_POST['email'][0]; $stmt->bind_param('sssi', $_POST['username'], $pass, $emai, $user_ip); das meine ich. Bei dir fehlt "$pass = " und "$email = " Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
JND3004 Geschrieben 29. Juni 2012 Autor Teilen Geschrieben 29. Juni 2012 jetzt meint er: Der Benutzername oder die E-Mail wurde bereits verwendet. aber der name oder die email ist nicht mal in der db eingetragen Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
din1031 Geschrieben 29. Juni 2012 Teilen Geschrieben 29. Juni 2012 Eindeutig dein primary hat kein auto_increment du kannst im endeffekt nur einen Datensatz anlegen da du in deinem query nicht festlegst welche id der neue datensatz bekommt *g*. Wenn ich das so richtig sehe, weiß aber nicht wie das db script funktioniert was du verwendet . Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
JND3004 Geschrieben 29. Juni 2012 Autor Teilen Geschrieben 29. Juni 2012 hab eben nochmal versucht das auto_increment hinzuzufügen und es hat jzt plötzlich geklappt. den acc hat er angelegt. ip hat er gespeichert. aber beim pw hat er als verschlüsselung nur eine "9" eingetragen. das ist das gleiche pw wie von meinem hauptkonto. aber dort hat er die verschlüsselung komplett hingeschrieben EDIT: ich bedanke mich jzt nochmal herzlichst die mir geholfen haben diese probleme zu beheben. ich werde jzt nochmal alles auf herz und nieren prüfen. danach melde ich mich nochmal also beim einloggen möchte die daten nicht akzeptieren. er meint die daten wären falsch. EDIT: hier nochmal ein pic aus der datenbank da er die verschlüsselung nicht macht Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
din1031 Geschrieben 1. Juli 2012 Teilen Geschrieben 1. Juli 2012 Tja irgendwie übergibst du falsch daten . Prüf mal ganz genau was du an die Datenbank übergibst . Weil es sieht so aus als würde da was nicht stimmen. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
JND3004 Geschrieben 1. Juli 2012 Autor Teilen Geschrieben 1. Juli 2012 könntest du mir dann sagen welche daten ich hier dann reinschreiben soll? denn so weis ich nicht welche Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
din1031 Geschrieben 2. Juli 2012 Teilen Geschrieben 2. Juli 2012 Öhm das solltest du schon hinbekommen wie du nachsehen kannst was du eigentlich übergibst and die Datenbank oO... Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.
Wende dich an einen Admin, wenn du in diesem Thema etwas posten möchtest.