Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
(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 ...

Antwort
Alt 28.06.06, 17:53   #1 (permalink)
 
Registriert seit: 25.06.06
0wnZ Leistung: Facit NTK
0wnZ eine Nachricht über ICQ schicken
Likes: 0
Unhappy 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
0wnZ ist offline   Mit Zitat antworten
Alt 28.06.06, 17:58   #2 (permalink)
LX
Moderator
 
Registriert seit: 14.02.06
LX Leistung: Z3
LX eine Nachricht über ICQ schicken LX eine Nachricht über AIM schicken LX eine Nachricht über Yahoo! schicken
Likes: 21
Standard

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
LX ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 28.06.06, 18:15   #3 (permalink)
Themenstarter
 
Registriert seit: 25.06.06
0wnZ Leistung: Facit NTK
0wnZ eine Nachricht über ICQ schicken
Likes: 0
Standard Schönen Dank funktioniert nicht

Danke für die schnelle Hilfe nur Leider bringt es nicht's
0wnZ ist offline   Mit Zitat antworten
Alt 28.06.06, 18:38   #4 (permalink)
 
Benutzerbild von BasicAvid
 
Registriert seit: 17.03.04
BasicAvid Leistung: Facit NTK
Likes: 2
Standard

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! -
BasicAvid ist offline   Mit Zitat antworten
Alt 28.06.06, 19:34   #5 (permalink)
Themenstarter
 
Registriert seit: 25.06.06
0wnZ Leistung: Facit NTK
0wnZ eine Nachricht über ICQ schicken
Likes: 0
Standard

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 &auml;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 &auml;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(); 
0wnZ ist offline   Mit Zitat antworten
Alt 28.06.06, 22:12   #6 (permalink)
LX
Moderator
 
Registriert seit: 14.02.06
LX Leistung: Z3
LX eine Nachricht über ICQ schicken LX eine Nachricht über AIM schicken LX eine Nachricht über Yahoo! schicken
Likes: 21
Standard

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
LX ist offline   Mit Zitat antworten
Alt 28.06.06, 22:24   #7 (permalink)
Themenstarter
 
Registriert seit: 25.06.06
0wnZ Leistung: Facit NTK
0wnZ eine Nachricht über ICQ schicken
Likes: 0
Standard

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&ouml;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 &auml;ndere deine Angaben.";
       if ( 
$line 'EMail' ] == $_POST "$email" ] ) $error "Der eingegebende Username (".$user.") ist bereits vorhanden, bitte &auml;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&uuml;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 &auml;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";                 
 }


?>
0wnZ ist offline   Mit Zitat antworten
Alt 29.06.06, 08:39   #8 (permalink)
 
Benutzerbild von BasicAvid
 
Registriert seit: 17.03.04
BasicAvid Leistung: Facit NTK
Likes: 2
Standard

PHP-Code:
 if   ($line mysql_fetch_assoc($query)) {
      if  ( 
$line 'Name'  ] == $_POST "$user"  ] ) $error "Die eingebegebnde Email Adresse(".$email." )ist bereits vorhanden , bitte &auml;ndere deine Angaben.";
       if ( 
$line 'EMail' ] == $_POST "$email" ] ) $error "Der eingegebende Username (".$user.") ist bereits vorhanden, bitte &auml;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! -
BasicAvid ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Web, Network & Multimedia Palace » (Web-) Design und webbasierte Sprachen » MySQL Fehler trotz if überprüfung
Themen-Optionen
Ansicht

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.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Syntax-Überprüfung Elderan Programmieraufgaben 12 12.07.11 06:28
[LiveHaBo]MySQL Fehler wird angezeigt 0wnZ Hackerboard.de-Feedback 1 28.08.06 15:28
MySQL Datenbank füllen - Wo ist der Fehler? TeeKayo2 (Web-) Design und webbasierte Sprachen 8 21.01.06 08:55
Festplatten überprüfung elite-noob Windows 2 04.01.06 10:13
Pascal: Passwort-Überprüfung Chris Code Kitchen 2 05.10.03 22:44


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