| (Web-) Design und webbasierte Sprachen Tipps & Tricks, Designabgleich, HTML & Javascript, Flash, ASP, PHP, Perl/CGI... |
MySQL Fehler trotz if überprüfung
Diskussion: MySQL Fehler trotz if überprüfung im Forum (Web-) Design und webbasierte Sprachen, in der Kategorie Web, Network & Multimedia Palace; Anzeige
Hallo ,
ich arbeite zur Zeit an einem Registrieungs-script .
Leider hab ich ein Problem mit MySQL , da ...
 |
28.06.06, 17:53
|
#1 (permalink)
|
Registriert seit: 25.06.06 Likes: 0 | MySQL Fehler trotz if überprüfung Anzeige Hallo ,
ich arbeite zur Zeit an einem Registrieungs-script .
Leider hab ich ein Problem mit MySQL , da ich obwohl ich mit einer if-abfrage geprüft habe ob es schon einen Eintrag in der DB vorhanden ist , wird bei einem doppeleintrag bei der DB nur ein MySQL Fehler ausgegebn und NICHT meine if-abfrage .
Hier der relevante Teil des Scriptes. PHP-Code: $querymail = "SELECT EMail FROM users Where Email == 'mysql_escape_string($email)'"; $resultmail = mysql_query($querymail); if (mysql_num_rows($resultmail) != 0) {echo "Die eingebegebnde Email Adresse(".$email." )ist bereits vorhanden , bitte ändere deine Angaben."; $queryname = "SELECT Name From users Where Name =='mysql_escape_string($user)'"; $resultname = mysql_query($queryname); if (mysql_num_rows$resultname) != 0) {echo ' Der eingegebende Username ('.$user.') ist bereits vorhanden, bitte ändere deine Angaben.'; } } } } else { $eintrag = "INSERT INTO users (ID, Name, EMail, Password) VALUES ('', '$user', '$email', '$hashpass')"; $eintragen = mysql_query($eintrag) or DIE ("MySQL-Fehler: ". mysql_error()); echo "<div align =\"center\">Registrierung erfolgreich!\n<br /></div>"; echo "<div align =\"center\">Dir wird nun eine E-Mail mit deinen Zugangsdaten gesendet,\n<br /></div>"; echo "<div align =\"center\">Du kannst dich dann mit deinem Passwort und deinem Benutzernamen Einloggen\n<br /></div>"; echo "<a href='http://maofem.ma.ohost.de/login_script.php'>Login</a>"; } exit(); mysql_close();
Freue mich auf eine schnelle Antwort.
Mit freundlichen Grüßen 0wnZ |
| |
28.06.06, 17:58
|
#2 (permalink)
| | Moderator
Registriert seit: 14.02.06 Likes: 21 | Wenn du "mysql_escape_string($email)" in einen String schreibst, wird nur $email durch dessen Wert ersetzt, nicht aber die Funktion mysql_escape_string() ausgeführt.
Korrekt wäre es in der Form
$querymail = "SELECT EMail FROM users Where Email = '" . mysql_escape_string($email) ."'";
Vergleiche in MySQL übrigens auch nur mit einfachem Gleichheitszeichen.
__________________ "Ever tried. Ever failed. No matter.
Try again. Fail again. Fail better." - Samuel Beckett JS BB LX UP |
| | | |
| | HaBOT
| - Anzeige - |
| |
28.06.06, 18:15
|
#3 (permalink)
| Themenstarter
Registriert seit: 25.06.06 Likes: 0 | Schönen Dank funktioniert nicht Danke für die schnelle Hilfe nur Leider bringt es nicht's |
| |
28.06.06, 18:38
|
#4 (permalink)
|
Registriert seit: 17.03.04 Likes: 2 | Also falls Du den Code benutzt den Du da gepostet hast, wäre es kein Wunder wenn es nicht geht! Schau Dir Deinen Code nochmal genau an!
__________________ Mfg Basic Avid
- Use it or be used! - |
| |
28.06.06, 19:34
|
#5 (permalink)
| Themenstarter
Registriert seit: 25.06.06 Likes: 0 | ich vermute das das mit dem !=0 in verbindung steht , weil da ein nummerischer wert übergebn wird und diesmal nich 0=false und 1= true is. (oder so ähnlich?)
oda ist es so weil ich mysql_num_rows($querymail) machen müsste denn in dem script is die anfrage vor der überpfrüng gesendet worden (oda seh ich da fehler wo keine sind??)
ich probier ma rum ^^
trotzdem *hilfe annahme stelle 24h am tag geöffnet*
edit: edit gestrichen wegen unerhöhrter dummheit
edit der dritte: die zweite vermutung ist auch für die Tonne !! (sry heut irgendwie nicht mein Tag)
edit zum 4.:
ich krichs nit ich habs ma anders probiert aba irgendwie wird die if abfrage übergangen argh
hier des script PHP-Code: if ($_POST["Name"]== "") { $error = "Bitte gebe einen Benutzernamen ein."; if ($_POST["EMail"]=="") { $error = "Bitte gebe deine E-Mail Adresse ein."; $query = @mysql_query("SELECT EMail FROM users WHERE EMail = '".$_POST['EMail']."'"); $result = @mysql_fetch_array($query); if($_POST['EMail'] == $result['EMail']) {echo "Die eingebegebnde Email Adresse(".$email." )ist bereits vorhanden , bitte ändere deine Angaben.";
$query = @mysql_query("SELECT Name FROM users WHERE Name = '".$_POST['Name']."'"); $result = @mysql_fetch_array($query); if($_POST['Name'] == $result['Name']) { echo "Der eingegebende Username (".$user.") ist bereits vorhanden, bitte ändere deine Angaben."; } } } } else { $eintrag = "INSERT INTO users (ID, Name, EMail, Password) VALUES ('', '$user', '$email', '$hashpass')"; $eintragen = mysql_query($eintrag) or DIE ("MySQL-Fehler: ". mysql_error()); echo "<div align =\"center\">Registrierung erfolgreich!\n<br /></div>"; echo "<div align =\"center\">Dir wird nun eine E-Mail mit deinen Zugangsdaten gesendet,\n<br /></div>"; echo "<div align =\"center\">Du kannst dich dann mit deinem Passwort und deinem Benutzernamen Einloggen\n<br /></div>"; echo "<a href='http://maofem.ma.ohost.de/login_script.php'>Login</a>"; } exit(); mysql_close();
|
| |
28.06.06, 22:12
|
#6 (permalink)
| | Moderator
Registriert seit: 14.02.06 Likes: 21 | Deine Klammerei ist ein heilloses Durcheinander. Geh's doch ganz einfach an: PHP-Code: <?php
// DB-Verbindungskram
if ( empty ( $_POST [ 'email' ] ) ) $error = 'E-Mail eingeben'; if ( empty ( $_POST [ 'user' ] ) ) $error = 'Username eingeben';
if ( empty ( $error ) ) { $blubb = mysql_query ( 'SELECT name, email FROM users WHERE name="' . $_POST [ 'user' ] . '" OR email="' . $_POST [ 'email' ] . '"' ); if ( $line = mysql_fetch_assoc ( $blubb ) ) { if ( $line [ 'name' ] == $_POST [ 'user' ] ) $error = 'Name schon weg'; if ( $line [ 'email' ] == $_POST [ 'email' ] ) $error = 'Mail schon weg'; }
if ( empty ( $error ) ) { mysql_query ( 'INSERT INTO users...' ); } } ?>
__________________ "Ever tried. Ever failed. No matter.
Try again. Fail again. Fail better." - Samuel Beckett JS BB LX UP |
| |
28.06.06, 22:24
|
#7 (permalink)
| Themenstarter
Registriert seit: 25.06.06 Likes: 0 | du bist gut
klau ich mir ma ^^
edit: da tritt ein logischer fehler auf argh. Ich guck nochma durch aber falls wer langeweile hat : PHP-Code: <?php //Registrierung.php error_reporting(E_ALL); session_start(); include "config.php"; //config variabeln einbinden mysql_connect("$db_host","$db_user","$db_pass") or DIE ("Keine Verbindung zur Datenbank möglich"); mysql_select_db("$db_name") or DIE ("Die Datenbank existiert nicht"); $user = $_POST["Name"];//Username definieren $email = $_POST["EMail"];//E-mail Adresse definieren srand(microtime()*100000000);//passwort erzeugen $password = rand(154263,10848756);//passwort begrenzung $hashpass = md5($password);
if (empty ($_POST ["$email"])) $error = 'Bitte gebe deine E-Mail Adresse ein.'; if (empty ($_POST ["$user"])) $error = 'Bitte gebe einen Benutzernamen ein.'; if (empty ($error)) { $query = mysql_query ( 'SELECT Name, EMail FROM users WHERE Name="'.$_POST["$user"].'" OR EMail="'.$_POST["$email"].'"'); if ($line = mysql_fetch_assoc($query)) { if ( $line [ 'Name' ] == $_POST [ "$user" ] ) $error = "Die eingebegebnde Email Adresse(".$email." )ist bereits vorhanden , bitte ändere deine Angaben."; if ( $line [ 'EMail' ] == $_POST [ "$email" ] ) $error = "Der eingegebende Username (".$user.") ist bereits vorhanden, bitte ändere deine Angaben."; }
if (empty($error)) { $eintrag = "INSERT INTO users (ID, Name, EMail, Password) VALUES ('', '$user', '$email', '$hashpass')"; $eintragen = mysql_query($eintrag) or DIE ("MySQL-Fehler: ". mysql_error()); echo "<div align =\"center\">Registrierung erfolgreich!\n<br /></div>"; echo "<div align =\"center\">Dir wird nun eine E-Mail mit deinen Zugangsdaten gesendet,\n<br /></div>"; echo "<div align =\"center\">Du kannst dich dann mit deinem Passwort und deinem Benutzernamen Einloggen\n<br /></div>"; echo "<a href='http://maofem.ma.ohost.de/login_script.php'>Login</a>"; } } exit(); mysql_close(); $empfaenger = "$email"; $betreff ='Master of Empires Registrierung'; $nachricht ="Hallo,\n<br /> deine Benutzerdaten sind folgende:\n<br />";
echo "Username : '.$user.'\n<br />"; echo "Passwort : '.$passwort'.\n<br />";
echo "Vielen Dank für die Registrierung auf Master of Empires.de!\n<br />"; echo "Du kannst dich nun mit den oben genannten Daten einloggen.\n<br />"; echo "Das Passwort kannst du im Spiel ändern.\n<br /><br /><br />";
echo "Bitte antworte nicht auf diese Mail!\n<br />"; echo "Diese Mail wurde autmatisch generiert."; $header = "From: noreply@XX.de\r\n<br /> Reply-To: rider_on_the_storm@hotmail.de\r\n"; $geklappt = mail($empfaenger, $betreff, $nachricht, $header); if (!$geklappt) {echo "Fehler!! E-Mail konnte nich versandt werden"; }
?> |
| |
29.06.06, 08:39
|
#8 (permalink)
|
Registriert seit: 17.03.04 Likes: 2 | PHP-Code: if ($line = mysql_fetch_assoc($query)) { if ( $line [ 'Name' ] == $_POST [ "$user" ] ) $error = "Die eingebegebnde Email Adresse(".$email." )ist bereits vorhanden , bitte ändere deine Angaben."; if ( $line [ 'EMail' ] == $_POST [ "$email" ] ) $error = "Der eingegebende Username (".$user.") ist bereits vorhanden, bitte ändere deine Angaben."; }
if (empty($error)) { $eintrag = "INSERT INTO users (ID, Name, EMail, Password) VALUES ('', '$user', '$email', '$hashpass')"; $eintragen = mysql_query($eintrag) or DIE ("MySQL-Fehler: ". mysql_error()); echo "<div align =\"center\">Registrierung erfolgreich!\n<br /></div>"; echo "<div align =\"center\">Dir wird nun eine E-Mail mit deinen Zugangsdaten gesendet,\n<br /></div>"; echo "<div align =\"center\">Du kannst dich dann mit deinem Passwort und deinem Benutzernamen Einloggen\n<br /></div>"; echo "<a href='http://maofem.ma.ohost.de/login_script.php'>Login</a>"; } } exit(); // Du beendest das Script, hast aber die Email nicht abgeschickt!?? //Besser gesagt, Dein Script bricht ab komme was wolle!! //Falls die Variable nicht leer ist, würde er ja trotzdem eine Email bekommen!!
Ich habe den Code mal kommentiert!
Und noch ein paar Anmerkungen:
1) Ich würde niemals übergebene Werte gleich in ein MySQL Statement schreiben. Böses Foul!!
2) Ich persönlich prüfe immer erst die Fehler ab.
3) Bei Deiner Email stimmt auch was nicht, aber das müsste Dir eigentlich auffallen.
4) Falls eine if Abfrage nicht das macht was Sie machen soll, gib halt davor einfach mal die Variablen aus um zu sehen welchen Wert Sie haben!
So das wars!
__________________ Mfg Basic Avid
- Use it or be used! - |
| |  | | |
| | | - Anzeige - |
| | [HaBo]
» Web, Network & Multimedia Palace
» (Web-) Design und webbasierte Sprachen
»
MySQL Fehler trotz if überprüfung
| Themen-Optionen | | | | Ansicht | Linear-Darstellung |
Forumregeln
| Es ist Ihnen nicht erlaubt, neue Themen zu verfassen. Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten. Es ist Ihnen nicht erlaubt, Anhänge hochzuladen. Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten. HTML-Code ist aus. | | |
|