Register Script will nicht so wie ich das will!!

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Register Script will nicht so wie ich das will!!

    Erstmal guten Abend!
    Ich hoffe ihr könnt mir weiter helfen. Und zwar habe ich mir aus einigen Seiten dises Script zusammengetüddelt. Es soll ein Registrierungscript sein. Das Eintragen in die Datenbank funktioniert bisher wunderbar, aber dann wollte ich noch das überprüft wird ob der eingegeben Benutzername schon vorhanden ist und dabei stoße ich schon auf den Fehle. Ich habe eine kleine if schleife eingebaut. Es wird mir zwar im Dokument gesagt das der Benutzer schon existieren, aber wenn ich dann in die Datenbak schaue dann ist diser trotzdem eingetragen. Wäre wirklich nett wenn ihr ma einen Blick da darauf werft...
    Also ich habe noch nicht so sehr viel Ahnung von der Materie, denn ich bin ein " Learning bei doing" Typ. ALso bitte nicht mich mit so vielen Fachbegriffen zuballern. Einfach einen Vorschlag geben was ich ersetzen muss oder so...
    DANKE!!

    PHP-Code:
    <? 
    // Aufbau der Datenbankverbindung  
    $connectionid  = mysql_connect ("**SERVER**", "**USER**", "**PW**");  
    if (!mysql_select_db ("**DATENBANK**", $connectionid))  
    {  
      die ("Keine Verbindung zur Datenbank");  

    $benutzer=$_POST['benutzer'];
    $mail=$_POST['mail'];
    $name=$_POST['name'];
    $passwort=$_POST['passwort'];
    $passwort=md5($passwort);


     
    {  

    $abfrage1 = mysql_query("SELECT * FROM benutzerdaten");
     while ($row = mysql_fetch_object ($abfrage1)) {
        if    ($row->benutzer==$benutzer) {
        echo "Dieser Benutzer existiert schon!";
        exit;
        }
        else
        {
      // SQL-Anweisung erstellen  
      mysql_query ("INSERT INTO ". 
        "benutzerdaten (benutzer, passwort, name, mail) ". 
      "VALUES ('$benutzer', '$passwort', '$name', '$mail')");  
     

    } }} 
    ?>

  • #2
    wenn du die meldung, dass der benutzer schon existiert bekommst, dann wird dein script sofort abgebrochen und alle andere actionen sind ausgeschlossen.
    vermutlich hast du einfach in deiner tabelle schon vorher 2 gleiche benutzernamen.
    ein Tip
    wenn du mysql_query machst, dann brauchst du einfach mit dem mysql_num_rows anschauen, ob du mehr als 0 datemsätze hast und das ist schon ausreichend um festzustellen ob du den benutzer mit gleichem namen in tabelle hast.
    also weg mit der schleife und fetch_object
    Slava
    bituniverse.com

    Kommentar


    • #3
      danke schonmal für die antwort...könntest du das evtl in meinem code ändern?
      wäre sehr nett von dir
      edit:

      In der tabelle sind nicht vorher 2 gleiche benutzer gewesen. Ich konnte auch mit der überprüfung keinen ersten benutzer erstellen...ich musste zunächst die überprüfung rausnehmen und dann konnte ich einen mit dem script erstellen.
      den benutzer den ich dann erstellt habe konnte ich dann auch nicht ein 2. mal erstellen sondern nur die die ich dann mit der üprüfung erstelellt habe
      Zuletzt geändert von NONO; 05.01.2007, 11:53.

      Kommentar


      • #4
        könntest du das evtl in meinem code ändern?
        na komm, du hast es ja nichtmal versucht.

        Lies bitte auch mal unsere Regeln, besonders, was da im Hinblick auf mysql_error() steht. Danke.

        Kommentar


        • #5
          PHP-Code:
          $abfrage1 mysql_query("SELECT * FROM benutzerdaten WHERE benutzer='".mysql_real_escape_string($_POST['benutzer'])."'");
           if(
          mysql_num_rows($abfrage1) > 0){
              echo 
          'Benutzer bereits vorhanden';
              exit;
            }else{
              
          //für alle Usereingaben noch mysql_real_escape_string() machen --> SQL Injections
              
          mysql_query ("INSERT INTO "
              
          "benutzerdaten (benutzer, passwort, name, mail) "
            
          "VALUES ('$benutzer', '$passwort', '$name', '$mail')") OR die(mysql_error());
            } 
          Gruss

          tobi
          Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

          [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
          Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

          Kommentar


          • #6
            PHP-Code:
            $abfrage1 mysql_query("SELECT * FROM benutzerdaten WHERE benutzer='".mysql_real_escape_string($_POST['benutzer'])."'");
             if(
            mysql_num_rows($abfrage1) > 0)
               die(
            'Benutzer bereits vorhanden');

                
            //für alle Usereingaben noch mysql_real_escape_string() machen --> SQL Injections
                
            mysql_query(... 

            Kommentar


            • #7
              Also müsste ich das dann so fortlaufend machen mit allen eingaben?
              Funktionieren tut es.

              PHP-Code:
              $abfrage1 mysql_query("SELECT * FROM benutzerdaten WHERE benutzer='".mysql_real_escape_string($_POST['benutzer'])."'");
              if(
              mysql_num_rows($abfrage1) > 0){
                  echo 
              'Benutzer bereits vorhanden';
                  exit;
                }
                
              $abfrage2 mysql_query("SELECT * FROM benutzerdaten WHERE mail='".mysql_real_escape_string($_POST['mail'])."'");
              if(
              mysql_num_rows($abfrage2) > 0){
                  echo 
              'E-Mail Adresse schon vorhanden ';
                  exit;
                } 

              Kommentar


              • #8
                Also müsste ich das dann so fortlaufend machen mit allen eingaben?
                Funktionieren tut es.
                Wenn du willst, dass alle Eingaben einzigartig sind, dann wohl schon. Du kannst aber auch der DB beibringen, dass Felder UNIQUE sein müssen. Dann gibt's bei einem versuchten INSERT mit doppelten Werten einen Fehler, den du abfangen kannst.

                Gruss

                tobi
                Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                Kommentar


                • #9
                  Wenn du willst, dass alle Eingaben einzigartig sind, dann wohl schon.
                  NEIN, bloß nicht.

                  dafür gibts WHERE name == $name OR email == $email ...
                  ggf. muss man dann das erste ergebnis auswerten, dürfte aber besser gehen als 10 SQL-Abfragen.

                  Kommentar


                  • #10
                    also viele felder sollten es ja dann nicht sein die einzigartig sind...evtl komme ich auf 4 oder 5...

                    Also das mit dem "where" habe ich bisher noch nicht gefunden....

                    Kommentar


                    • #11
                      Doch, guck mal in dein SQL-Statement.

                      Kommentar


                      • #12
                        ja okay habe es dann eben auch gesehen...

                        aber ich glaube ich werde es so lassen wie ich es jetzt habe denn so schlecht wird es ja wohl nicht sein...

                        habe jetzt nur diese 2 felder die nicht übereinstimmen dürfen

                        noch 2 kleine fragen...wie realisiere ich das der user bestimmte felder ausfüllen muss um sich zu registrieren und wie mache ich das wenn das echo ausgegeben wurde das er wieder zum reg formular weitergeleitet wird?
                        Zuletzt geändert von NONO; 05.01.2007, 12:58.

                        Kommentar


                        • #13
                          grundlagen lernen:
                          schattenbaum.net peterkropff.de

                          empty()

                          Kommentar


                          • #14
                            Sorry, aber nachdem ich alles soweit geändert habe funktioniert etwas weiteres nicht und zwar der login....
                            Ich hoffe ihr könnt mir weiteres mal helfen.Wäre echt super nett
                            Folgende Fehlermeldung kommt zustande:

                            Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/www/***/html/hpage/login/login.php on line 23

                            Warning: Cannot modify header information - headers already sent by (output started at /home/www/ncd392/html/hpage/login/login.php:23) in /home/www/***/html/hpage/login/login.php on line 31

                            So sieht der Reg-Code im moment aus:
                            PHP-Code:
                            $vorname=$_POST['vorname'];
                            $nachname=$_POST['nachname'];
                            $geb_t=$_POST['geb_t'];
                            $geb_m=$_POST['geb_m'];
                            $geb_y=$_POST['geb_y'];
                            $ort=$_POST['ort'];
                            $benutzer=$_POST['benutzer'];
                            $passwort=$_POST['passwort'];
                            $passwort=md5($passwort);
                            $amail=$_POST['mail'];



                            $abfrage1 mysql_query("SELECT * FROM benutzerdaten WHERE benutzer='".mysql_real_escape_string($_POST['benutzer'])."'");
                            $abfrage2 mysql_query("SELECT * FROM benutzerdaten WHERE mail='".mysql_real_escape_string($_POST['mail'])."'");
                            if(
                            mysql_num_rows($abfrage1) > 0){
                                echo 
                            '<h3 align=center>Benutzer bereits vorhanden</h3>',
                                exit;
                                }
                            if(
                            mysql_num_rows($abfrage2) > 0){
                                echo 
                            '<h3 align=center>E-Mail Adresse schon vorhanden </h3>';
                                exit;
                              }    if (
                            $benutzer=="" OR $passwort=="" OR $vorname=="" or $mail==""or $geb_t==""or $geb_m==""or $geb_y=="") {
                                echo 
                            "Sie haben mindestens ein Feld nicht ausgefüllt!";
                                }
                              else{
                              
                            mysql_query=("INSERT INTO "
                                
                            "benutzerdaten (vorname, nachname, geb_t, geb_m, geb_y, ort, benutzer, passwort, mail) "
                              
                            "VALUES ('$vorname', '$nachname', '$geb_t', '$geb_m', '$geb_y', '$ort', '$benutzer', '$passwort', '$mail')");
                              

                              }

                            ?> 
                            Der Login-Code:
                            PHP-Code:
                            <?php  
                            // Session starten 
                            session_start (); 

                            // Datenbankverbindung aufbauen  
                            $connectionid mysql_connect ("*SERVER""*BENUTZERNAME""*PASSWORT*");  
                            if (!
                            mysql_select_db ("*DATENBANK"$connectionid))  
                            {  
                              die (
                            "Keine Verbindung zur Datenbank");  
                            }  

                            $sql "SELECT ".  
                                
                            "Id, benutzer, mail".  
                              
                            "FROM ".  
                                
                            "benutzerdaten ".  
                              
                            "WHERE ".  
                                
                            "(benutzer like '".$_REQUEST["benutzer"]."') AND ".  
                                
                            "(passwort = '".md5 ($_REQUEST["passwort"])."')";  
                            $result mysql_query ($sql);  

                            {  
                              
                            // Benutzerdaten in ein Array auslesen.  
                              
                            $data mysql_fetch_array ($result);  

                              
                            // Sessionvariablen erstellen und registrieren  
                              
                            $_SESSION["user_id"] = $data["Id"];  
                              
                            $_SESSION["user_benutzer"] = $data["benutzer"];  
                              
                            $_SESSION["user_mail"] = $data["mail"];  
                             

                              
                            header ("Location: index.php");  
                            }   
                            ?>
                            Der Logincode lautet:
                            <form action="login.php" method="post">
                            Name: <input type="text" name="benutzer" size="15"><br>
                            Kennwort: <input type="password" name="passwort" size="15"><br>
                            <input type="submit" value="Login">
                            </form>

                            Kommentar


                            • #15
                              Auch du liest bitte erstmal die regeln und guckst, was da genau mit mysql_error() drin steht. Danach bitte entsprechend verwenden und Fehlermeldung samt Query hier posten. Danke.

                              der zweite Fehler ist wohl nur ein folgefehler.

                              und poste doch bitte nur die betreffende stelle, alles andere interessiert nicht.

                              Kommentar

                              Lädt...
                              X