irgendetwas stimmt nicht, er überprüft mir nicht den User bzw. die Emailadresse gleichzeitig!
Möchte wenn sich ein user neu anmeldet neu registriert möchte ich das die datenbank abgefragt wird ob der user bzw. die Emailadresse schon vorhanden ist.
register.php (teil davon)
if ($form == 1) {
include ("config.php");
$user_result = mysql_query("SELECT * FROM $user_tabelle WHERE name = '$reg_name' OR '$reg_mail'", $mysql_ce);
if (mysql_affected_rows($mysql_ce) > 0){
$fehlen = $fehlen."<LI>Benutzername odrer Mailadresse vorhanden";
echo'<div align="center"><font color="#FF0000" size="2" face="Arial, Helvetica, sans-serif">Der angegeben Benutzername oder mailadresse ist leider schon vorhanden</font></div>';
}
FEHLER FEHLER FEHLER FEHLERFEHLER FEHLER !!!
Wenn ich aber diesen code verwende funktioniert aber nur die USER abfrage aber nicht ob die Mail vorhanden ist:
if ($form == 1) {
include ("config.php");
$user_result = mysql_query("SELECT * FROM $user_tabelle WHERE name = '$reg_name'", $mysql_ce);
if (mysql_affected_rows($mysql_ce) > 0){
$fehlen = $fehlen."<LI>Benutzername vorhanden";
echo'<div align="center"><font color="#FF0000" size="2" face="Arial, Helvetica, sans-serif">Der angegeben Benutzername ist leider schon vorhanden</font></div>';
}
also mache ich noch was Falsch mit der ‘$reg_name’ OR ‘$reg_mail’", $mysql_ce
Fehlermeldungen nicht unterschlagen. Diese gibt es nicht um dich zu ärgern, sondern um dir Mitzuteilen wo was falsch gelaufen ist. Also diese bitte mitposten
[QUOTE=mitch24]also mache ich noch was Falsch mit der ‘$reg_name’ OR ‘$reg_mail’", $mysql_ce
aber was ???[/QUOTE]
Statt
"SELECT * FROM $user_tabelle WHERE name = '$reg_name' OR '$reg_mail'"
sollte es sein
"SELECT * FROM $user_tabelle WHERE name = '$reg_name' OR **[U]mail[/U]** = '$reg_mail'"
oder statt “mail” dann eben der entsprechende Spaltenname analog zu “name” beim Usernamen.
*** Edit ***
Wobei es für den User natürlich nicht so elegant ist, wenn er als Hinweis bekommt, dass Name ODER Adresse schon vergeben sind. Ich würde die Abfragen wohl getrennt machen.
Und bitte die Variablen escapen! Aktuell teilst du SQL nicht einmal mit das es sich um Strings handelt.
Ausgehend von deinen Variablen wäre nachfolgendes korrekt in der Annahme, dass deine Variablen vorher sanitized wurden.
$queryString = "SELECT * FROM {$user_tabelle} where `name` = '{$reg_name}' or `mail` = '{$reg_mail}'";
Falls dein Benutzername eine eMail sein kann, müsstest du die Abfrage wie folgt abändern.
$queryString = "SELECT * FROM {$user_tabelle} where `name` = '{$reg_name}' or `name` = '{$reg_mail}'";
Welche Schreibweise du für die Variablen nutzt ist natürlich dir überlassen. Auch ob du noch die veraltete MySQL Extension verwendest. Diese wird mit voraussichtlich PHP 5.6 nicht mehr funktionieren. Seit 5.5 ist sie bereits deprecated.
Schön wäre eine Verwendung von mysqli oder sogar PDO.
Wenn du Prepared Statements verwendest, brauchst du dir keine Gedanken über das Escapen machen, da die Parameter unabhängig von der eigentlichen Query an den Server gesendet werden. http://php.net/manual/de/book.pdo.php
Ansonsten, du benutzt das li-Tag, aber keine ul? Du schließt li auch noch nicht einmal.
Was mir noch einfällt:
Speichere deine config.php bitte nicht im gleichen Ordner, sondern aus Sicherheitsgründen in einem Ordner, der nicht über die URL ereichbar ist. @TheDarkRose , mach doch auch Vorschläge für Frameworks.
Damit habe ich auch schon gute Ergebnisse erzielt.
Als O/R-M Lösung nutze ich gerne Doctrine, welches auch gut in Symfony2 integriert ist.
Für die View benutze ich twig.