smarti Geschrieben 18. Juni 2008 Teilen Geschrieben 18. Juni 2008 Hallo alle zusamm ich hab folgendes problem. Ich habe mit einer gruppe ein forum in den letzten tagen aufgebaut. jetzt fehlt es nur noch an kleinigkeiten. das is die sache das wenn man sich registriert noch doppelte datesätze entstehen können kann mir bitte wer helfen das ich das problem auf die reihe bekomme danke. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Kuroi Geschrieben 18. Juni 2008 Teilen Geschrieben 18. Juni 2008 Hallo alle zusamm ich hab folgendes problem. Ich habe mit einer gruppe ein forum in den letzten tagen aufgebaut. jetzt fehlt es nur noch an kleinigkeiten. das is die sache das wenn man sich registriert noch doppelte datesätze entstehen können kann mir bitte wer helfen das ich das problem auf die reihe bekomme danke. Hm, verstehe jetzt nicht genau, wo das Problem liegt. Registrierung mit 'nem Nicknamen? Dann einfach die entsprechende Spalte auf "UNIQUE" setzen ... Oder versteh' ich da jetzt was falsch? Konkretisier' doch mal bitte dein Problem. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 18. Juni 2008 Teilen Geschrieben 18. Juni 2008 Hallo, warum können doppelte Daten enstehen? Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
smarti Geschrieben 18. Juni 2008 Autor Teilen Geschrieben 18. Juni 2008 ja ich hab das script und dann kann man sich mit nick und pw anmelden unr das prob is es geht noch das nicks doppel vorkommen können wie kann ich das abfangen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 18. Juni 2008 Teilen Geschrieben 18. Juni 2008 Erstmal vernünftigen Satzbau mit Satzzeichen wäre nicht schlecht. Warum können Daten doppelt vorkommen? Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
smarti Geschrieben 18. Juni 2008 Autor Teilen Geschrieben 18. Juni 2008 wenn ich das wüsste dann würde ich das beheben.! <?php include "inc/mysqlconfig.php"; if(isset($_POST['benutzer']) AND isset($_POST['pass']) AND isset($_POST['passB'])) { $benutzer = $_POST['benutzer']; $pass = $_POST['pass']; $passB = $_POST['passB']; if(empty($benutzer) OR empty($pass) OR empty($passB)) { header("location:registrierung.php?status=empty"); } else { $userid = mysql_query("select * from user where uname='".$benutzer."'"); // Überprüfen ob Benutzername Existiert if($userid) { header("Location: registrierung.php?status=userdoppelt"); } if($pass == $passB) { mysql_query("INSERT IGNORE INTO user set uname='$benutzer', upassword='$pass'"); header("location: login.php"); } else { header("location:registrierung.php?status=passwort"); } } } else { header("location:registrierung.php"); } ?> Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 18. Juni 2008 Teilen Geschrieben 18. Juni 2008 (bearbeitet) Ich sehe nicht, warum dort doppelte Datensätze enstehen. Wenn dem so wäre, dann müsste er ja zwei mal am Insert vorbeikommen. Frank Bearbeitet 18. Juni 2008 von robotto7831a Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Kuroi Geschrieben 18. Juni 2008 Teilen Geschrieben 18. Juni 2008 Die Antwort hab' ich eigentlich bereits gegeben, wie man Redundanz bei den Nicknames vermeiden kann. [...] Registrierung mit 'nem Nicknamen? Dann einfach die entsprechende Spalte auf "UNIQUE" setzen [...] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
smarti Geschrieben 18. Juni 2008 Autor Teilen Geschrieben 18. Juni 2008 auf gut deutsch direkt in der mysql tabelle 'benutzer' diese auf unique stellen oder verstehe ich das falsch? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 18. Juni 2008 Teilen Geschrieben 18. Juni 2008 Richtig. Und nicht vergessen den Fehler abzufangen der dann kommt. Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Kuroi Geschrieben 18. Juni 2008 Teilen Geschrieben 18. Juni 2008 auf gut deutsch direkt in der mysql tabelle 'benutzer' diese auf unique stellen oder verstehe ich das falsch? Ich weiß nicht, wie deine Datenbank aufgebaut ist. Wenn die Tabelle 'BENUTZER' alle benutzerbezogenen Daten wie bspw. Nickname, Geburtsdatum oder Registrierungsdatum enthält, dann setzt du die entsprechende Spalte, für die du redundante Daten vermeiden willst (in deinem Fall wäre das 'NICKNAME' oder etwas Ähnliches) auf 'UNIQUE'. Mal nebenbei, wenn du schon bei so einem Problem nicht weiter weißt, will ich nicht wissen, wie die restliche Datenbank aufgebaut ist. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
smarti Geschrieben 18. Juni 2008 Autor Teilen Geschrieben 18. Juni 2008 ich denke ich hab nur iwie nen brett vorm kopf ich hab heute schon 5 stunden da dran gearbeitet. ich versuche das mal. Vielleicht war das auch einfach nur ein total doofer fehler oder so trotzdem danke. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Tweetymax Geschrieben 27. Juni 2008 Teilen Geschrieben 27. Juni 2008 <?php include "inc/mysqlconfig.php"; if(isset($_POST['benutzer']) AND isset($_POST['pass']) AND isset($_POST['passB'])) { $benutzer = $_POST['benutzer']; $pass = $_POST['pass']; $passB = $_POST['passB']; if(empty($benutzer) OR empty($pass) OR empty($passB)) { header("location:registrierung.php?status=empty"); } else { $userid = mysql_query("select * from user where uname='".$benutzer."'"); // Überprüfen ob Benutzername Existiert if($userid) { header("Location: registrierung.php?status=userdoppelt"); } if($pass == $passB) { mysql_query("INSERT IGNORE INTO user set uname='$benutzer', upassword='$pass'"); header("location: login.php"); } else { header("location:registrierung.php?status=passwort"); } } } else { header("location:registrierung.php"); } ?> Das Problem, warum das mit der überprüfung im Code ansich nicht funktioniert sind 2 sachen: 1. $userid = mysql_query("select * from user where uname='".$benutzer."'"); Vor dieser Zeile wurde keine Datenbankverbindung geöffnet, damit hat $userid false als Inhalt, weil 2. $userid ein Resultat einer abfrage ist, und NICHT die Daten, die du gerne hättest beinhaltet. Lösung: 1. Datenbankverbindung vor dem query öffnen 2. vielleicht mit mysql_num_rows() die anzahl der gefundenen Zeilen zurückgeben lassen (0 währe dann der Flag, der aussagt, dass der Benutzer nicht doppelt ist.) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Amstelchen Geschrieben 27. Juni 2008 Teilen Geschrieben 27. Juni 2008 RTFM. vielleicht liest du einfach mal bei "mysql_query" nach, was es liefert. du machst ein SELECT * - und dann? holst du dir, wenn du 20 million user hättest, für *jeden* login *alle* user? ausserdem ist dein script schlecht konzeptioniert; sieh dir die entsprechenden funktion guter software an. s'Amstel Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Tweetymax Geschrieben 27. Juni 2008 Teilen Geschrieben 27. Juni 2008 RTFM. vielleicht liest du einfach mal bei "mysql_query" nach, was es liefert. du machst ein SELECT * - und dann? holst du dir, wenn du 20 million user hättest, für *jeden* login *alle* user? ausserdem ist dein script schlecht konzeptioniert; sieh dir die entsprechenden funktion guter software an. s'Amstel ich verbessere Dich ja nur ungern... aber das * Sagt nur aus, dass du alle Spalten der Tabelle angezeigt haben möchtest... Er hat ja schon eine WHERE-Bedingung drin, die bei sauberen Daten ja nur einen Datensatz finden dürfte, wobei diese dann natürlich in den 50000000000 Milliarden von Daten gesucht werden würde... Wollte mit dem was ich geschrieben hatte nur verdeutlichen, WARUM sein script nicht funktioniert Mit dem Unique ist auf jeden Fall die bessere Lösung, da man dann nur noch nachsehen muss, ob ein Fehler aufgetreten ist. Trotzdem muss die Datenbank für sich intern nachsehen, ob das kriterium erfüllt ist. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
smarti Geschrieben 27. Juni 2008 Autor Teilen Geschrieben 27. Juni 2008 danke für die antworten hab das problem gefunden war in der datenbank selber war son blöder fehler den man garnet so schnell sieht trotzdem danke für die antworten Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Amstelchen Geschrieben 27. Juni 2008 Teilen Geschrieben 27. Juni 2008 ich verbessere Dich ja nur ungern... aber das * Sagt nur aus, dass du alle Spalten der Tabelle angezeigt haben möchtest... Er hat ja schon eine WHERE-Bedingung drin, die bei sauberen Daten ja nur einen Datensatz finden dürfte, wobei diese dann natürlich in den 50000000000 Milliarden von Daten gesucht werden würde... verzeih, ich hab mich auch etwas missverständlich ausgedrückt; mir ist klar, dass SELECT * mit WHERE-bedingung nicht *alle* DS holt, sondern nur *alle* spalten (was im regelfall auch nicht notwendig ist) der DS, welche den kriterien entsprechen. dass das ganze dennoch bei theoretisch (!) vielen usern unperformant werden *kann*, ist klar, kann aber im zweifelsfalls mittels eines ausführungsplans eruiert werden. s'Amstel Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Tweetymax Geschrieben 30. Juni 2008 Teilen Geschrieben 30. Juni 2008 verzeih, ich hab mich auch etwas missverständlich ausgedrückt; mir ist klar, dass SELECT * mit WHERE-bedingung nicht *alle* DS holt, sondern nur *alle* spalten (was im regelfall auch nicht notwendig ist) der DS, welche den kriterien entsprechen. dass das ganze dennoch bei theoretisch (!) vielen usern unperformant werden *kann*, ist klar, kann aber im zweifelsfalls mittels eines ausführungsplans eruiert werden. s'Amstel Naja... ich glaube nicht, dass es bei vielen Benutzern wirklich performace Einbußen gibt, da das ja eigentlich nur bei der Registrierung, und nicht bei dem aufrechterhalten einer Session oder beim anmelden gebraucht wird. Lasse mich da aber gerne berichtigen, denn man lernt ja nie aus Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SoL_Psycho Geschrieben 1. Juli 2008 Teilen Geschrieben 1. Juli 2008 danke für die antworten hab das problem gefunden war in der datenbank selber war son blöder fehler den man garnet so schnell sieht trotzdem danke für die antworten Hoffe, du liest das noch... Mach dich mal über SQL Injection schlau Oder gib mir die Adresse des Forums und ich droppe dir alle Tables :D:D Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
smarti Geschrieben 1. Juli 2008 Autor Teilen Geschrieben 1. Juli 2008 sql injektion werd ich mir nochmal durchlesen danke, aber das forum haben inerhalb 1ner woche als projekt aufgebaut und hatten nicht gerade viel Zeit um uns um jede kleinigkeit zu kümmern da erstmal alles laufen musste. Bevor wir es Online stellen werden wir das alles nochmal machen aber danke für den hinweis Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SoL_Psycho Geschrieben 1. Juli 2008 Teilen Geschrieben 1. Juli 2008 Ohne dir ans Bein pinkeln zu wollen: Nimm XSS (Cross Site Scripting) gleich dazu Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
smarti Geschrieben 2. Juli 2008 Autor Teilen Geschrieben 2. Juli 2008 ist alles nicht schlimm ich lern den kram ja alles noch ich nehm das alles als konstrucktive kritik danke Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SoL_Psycho Geschrieben 2. Juli 2008 Teilen Geschrieben 2. Juli 2008 ist alles nicht schlimm ich lern den kram ja alles noch ich nehm das alles als konstrucktive kritik danke Juchu! Das freut mich, das machen leider nicht alle so Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.