Register

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

  • Register

    Hm, hab hier ein kleines "Registirer Script", mag sein das es total dämlich und scheisse geschrieben ist, aber ich hab mal ne Frage...

    PHP-Code:
    <?
    $Nick = $HTTP_POST_VARS["Nick"];
    $Volk = $HTTP_POST_VARS["Volk"];
    $pw = $HTTP_POST_VARS["pw"];
    $pw2 = $HTTP_POST_VARS["pw2"];
    $email = $HTTP_POST_VARS["mail"];
    $pw2_vergleich = "*********";
    $md5_pw = md5($pw);



    if($pw2 == $pw2_vergleich)
    {
    mysql_connect("localhost",
      "bla","bla") or die
      ("Keine Verbindung moeglich");
      mysql_select_db("bla") or die
      ("Die Datenbank existiert nicht");


    $abfrage = "SELECT UserName AS name2 FROM users";
    $ergebnis = mysql_query($abfrage);
     while($row = mysql_fetch_object($ergebnis))
        {
        if($row->name2 == $Nick)
        {
         include ("include/include-reg2.php");

    }
    else
    {

    $eintrag = "INSERT INTO users (UserName, UserPass, UserMail, Volk) VALUES ('$Nick', 

    '$md5_pw', '$email', '$Volk')";
    $eintragen = mysql_query($eintrag);
    include 'include/include_reg-erfolgreich.php';
    }
      }  
    }
    else
    {
    include ("include/include-reg3.php");
      

    }


    ?>

    --------------------------------------------------------
    Nochmal ein edit, genauer Funktionstest:
    Sollte nick nicht vorhanden sein, das reg.pass etc korrekt sein, wird ein Eintrag in der db vorgenommen, die reg-erfolgreich allerdings 4mal ausgegeben.
    Sollte der nick nicht vorhanden sein ( oder auch doch, spielt keine rolle da zuerst das pw geprüft wird und darauf reagiert wird)das reg.pass auch falsch sein, wird ganz normal die file mit dem "pass falsch" ausgegeben, 1mal, also korrekt.
    Sollte Der Nick vorhanden sein, das reg.pass korrekt sein, wird kein Eintrag in der db vorgenommen allerdings 4mal was ausgespuckt, reg-erfolgreich, dann error user schon vorhanden, und danach noch 2 mal reg-erfolgreich.


    Ich hoffe ihr könnt damit was anfangen und mir sagen wo der Fehler liegt.

    Greetz
    Zuletzt geändert von Philbil; 17.02.2005, 03:45.

  • #2
    Salut

    also ganz genau verstehe ich das Problem noch nicht. Aber den Code würde ich anyway ändern.

    Mal eine kleine Verbesserung. Wenn
    PHP-Code:
    if($pw2 == $pw2_vergleich)
    ... 
    false ist, dann machst du mit dem else
    PHP-Code:
    $eintrag "INSERT INTO users (UserName, UserPass, UserMail, Volk) VALUES ('$Nick','$md5_pw', '$email', '$Volk')";
    ... 
    weiter. Du prüfst aber nicht ob die einzelnen Vars vom User eigegeben wurden. Wenn nicht dann trägst du entweder leere Werte ein (wenn die Vars initialisiert wären) oder versuchst auf Vars zuzugreifen, welche nicht definiert sind.

    Bei deiner while Schleife vergleichst du in einer Bedingung mit $Nick. Wobei du aber einleitend wieder nicht prüfst ob $Nick überhaupt gesetzt ist. Wenn die Bedingung false ergibt, weisst du aber nicht ob das daran liegt, dass $Nick falsch ist oder einfach nicht gesetzt.
    Trotzdem versuchst du dann in deinem else einen DB-Eintrag mit $Nick zu machen.

    Tipp: Prüfe alle benötigen Usereingaben und gib einen Fehler aus wenn etwas fehlt (isset ist dein Freund). Dein erstes if würde ich also so schreiben:
    PHP-Code:
    if($pw2 == $pw2_vergleich && isset($Nick)){
    ... 
    Desweiteren mache nicht direkt den else sondern erst noch einen elseif.
    PHP-Code:
    elseif(isset($Nick) && isset($md5_pw) && isset($email) && isset($Volk)){
    $eintrag "INSERT INTO users (UserName, UserPass, UserMail, Volk) VALUES ('$Nick', '$md5_pw', '$email', '$Volk')";
    ... 
    Am Schluss dann noch ein else und ein die. Damit kannst du den User darauf hinweisen, dass er nicht alle Felder ausgefüllt hat.

    Hoffe es hilft was
    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


    • #3
      deine geschweiften Klammern verwirren ???

      PHP-Code:
      if($pw2 == $pw2_vergleich)
      {
      //...

       
      while($row mysql_fetch_object($ergebnis))
          {
          if(
      $row->name2 == $Nick)
          { 
      //Wo machst du denn diese if wieder zu??? ->
           
      include ("include/include-reg2.php");

      }  
      //hier etwa???
      else

      mfg
      marc75

      <Platz für anderes>

      Kommentar


      • #4
        PHP-Code:
        $Nick $HTTP_POST_VARS["Nick"];
        $Volk $HTTP_POST_VARS["Volk"];
        $pw $HTTP_POST_VARS["pw"];
        $pw2 $HTTP_POST_VARS["pw2"];
        $email $HTTP_POST_VARS["mail"];
        $pw2_vergleich "*****";
        $md5_pw md5($pw);


        if(
        $pw2 == $pw2_vergleich && isset($Nick) && isset($md5_pw) && isset($email) && isset($Volk))
        {
         


        $abfrage "SELECT UserName AS name2 FROM users";
        $ergebnis mysql_query($abfrage);
         while(
        $row mysql_fetch_object($ergebnis))
            {
            if(
        $row->name2 == $Nick)
            {
             include (
        "include/include-reg2.php");

        }
        else
        {
        $eintrag "INSERT INTO users (UserName, UserPass, UserMail, Volk) VALUES ('$Nick', '$md5_pw', '$email', '$Volk')";
        $eintragen mysql_query($eintrag);
        $eintrag2 "CREATE TABLE user_$Nick (
        id INT NOT NULL AUTO_INCREMENT ,
         PRIMARY KEY ( id ) ,
        Nick VARCHAR( 30 ) NOT NULL ,
        Volk VARCHAR( 15 ) NOT NULL ,
        Planet VARCHAR( 10 ) NOT NULL ,
        PlanetenArt VARCHAR( 15 ) NOT NULL ,
        Aborasonde VARCHAR( 10 ) NOT NULL ,
        Falcon VARCHAR( 10 ) NOT NULL ,
        Banshee VARCHAR( 10 ) NOT NULL ,
        MintakaA VARCHAR( 10 ) NOT NULL ,
        Alnitak VARCHAR( 10 ) NOT NULL ,
        Barracuda VARCHAR( 10 ) NOT NULL ,
        Dilfim VARCHAR( 10 ) NOT NULL ,
        Kylee VARCHAR( 10 ) NOT NULL ,
        SchwereDrohne VARCHAR( 10 ) NOT NULL ,
        Nieme VARCHAR( 10 ) NOT NULL ,
        CargoX VARCHAR( 10 ) NOT NULL ,
        TransporterAY VARCHAR( 10 ) NOT NULL ,
        TransporterAYZ VARCHAR( 10 ) NOT NULL ,
        CargoI VARCHAR( 10 ) NOT NULL ,
        KreuzerklasseWotan VARCHAR( 10 ) NOT NULL ,
        Taurus VARCHAR( 10 ) NOT NULL ,
        Hawk VARCHAR( 10 ) NOT NULL ,
        Xanthos VARCHAR( 10 ) NOT NULL ,
        Omegabomber VARCHAR( 10 ) NOT NULL ,
        HemeraZerstörer VARCHAR( 10 ) NOT NULL ,
        Ceres VARCHAR( 10 ) NOT NULL ,
        Kerberos VARCHAR( 10 ) NOT NULL ,
        Endurance VARCHAR( 10 ) NOT NULL ,
        M608ADelvon VARCHAR( 10 ) NOT NULL ,
        M1000Delvon VARCHAR( 10 ) NOT NULL ,
        Wyvren VARCHAR( 10 ) NOT NULL ,
        SunFire VARCHAR( 10 ) NOT NULL ,
        Armageddon VARCHAR( 10 ) NOT NULL ,
        Erebos VARCHAR( 10 ) NOT NULL ,
        Chimera VARCHAR( 10 ) NOT NULL ,
        Genesis VARCHAR( 10 ) NOT NULL ,
        TrooperC VARCHAR( 10 ) NOT NULL ,
        TrooperJ VARCHAR( 10 ) NOT NULL ,
        GuardS VARCHAR( 10 ) NOT NULL ,
        RakCargoX VARCHAR( 10 ) NOT NULL);"
        ;
        $eintragen2 mysql_query($eintrag2);
        $eintrag3 "INSERT INTO user_$Nick (Nick, Volk) VALUES ('$Nick', '$Volk')";
        $eintragen3 mysql_query($eintrag3);
        include 
        'include/include_reg-erfolgreich.php';
        }
          }  
        }
        else
        {
        echo 
        "letze else";
        }
        ?> 

        Klappt soweit. Nun hab ich auch das "Problem" gefunden, warum er die Antworten mehrfach ausspuckt, genau das selbe macht er mir mit den einträgen.
        Wenn ich in der db 2 Tabellen habe, und eine neue erstelle, wird die Meldung "register erfolgreich" 3 mal angezeigt, genauso wie der user 3 mal in die tabelle, die zuvor erstellt wurde, eingetragen wird.
        Sollte es 7 Tabellen geben, und eine neue erstellt, trägt er 8 mal das gleiche in die erstelle Tabelle.. und gibt auch 8 mal aus, das register ok war.

        Was ich aber noch nich weiß.. warum bitte!?

        Kommentar


        • #5
          sag mal wieso legst du für jeden User eine neue Tabelle an, ist dir langweilig?
          mfg
          marc75

          <Platz für anderes>

          Kommentar


          • #6
            So könnte man es auch sagen..
            Ich brauchs einfach, weil ich für jeden User massig Infos speichern muss, und das in 1 Tabelle ziemlich unübersichtlich wird, und es Doppeleinträge ohne Ende geben würde, da ich in einigen Spalten mehrere Werte haben muss, so würd dann auch der Name Detlef 3 mal da stehen, in einer neuen Tabelle kann ich eben dies verhindern.

            Aber zurück zum problem, weisst du maybe woran das liegt?

            Kommentar


            • #7
              Ich brauchs einfach, weil ich für jeden User massig Infos speichern muss, und das in 1 Tabelle ziemlich unübersichtlich wird, und es Doppeleinträge ohne Ende geben würde, da ich in einigen Spalten mehrere Werte haben muss, so würd dann auch der Name Detlef 3 mal da stehen, in einer neuen Tabelle kann ich eben dies verhindern.
              Autsch!

              BTW: Wenn du maybe deinen Code mal aufs wesentliche beschränken würdest, könnte man sich den maybe mal ansehen.

              Kommentar


              • #8
                und wieviel user wird es geben 1000 oder 2000?


                Statt über das Problem zu grübeln würde ich mir lieber gedanken machen wie man das anders lösen kann.



                Tip:
                tab_user -> ID | Name | ort
                tab_user_mehrfach -> User_id | spalte | etc
                usw.
                mfg
                marc75

                <Platz für anderes>

                Kommentar


                • #9
                  Schön und gut, aber das mit den Tabellen is nich mein problem. Das problem ist wie beschrieben, je mehr Tabellen vorhanden, desto öfter trägt er was ein und gibt öfter was aus. Das muss doch irghend einen Grund haben, irgend einen Konflikt im Code oder sowas..
                  Es kommt schliesslich auch wenn ich den create table teil weglasse..

                  btw, wären 40 user

                  Kommentar


                  • #10
                    sag mal weisst du überhaupt was dein Code da macht?


                    PHP-Code:

                    //Hier machst du eine Abfrage der Tab user
                    $abfrage "SELECT UserName AS name2 FROM users";
                    $ergebnis mysql_query($abfrage);

                    //Hier benutzt du eine while schleife
                    //weisst du was while schleifen machen???
                     
                    while($row mysql_fetch_object($ergebnis))
                        {
                    //hier dein Code Chaos die zweite
                    //weisst du wann if gültig ist, schon mal versucht zu testen, wohl nicht
                        
                    if($row->name2 == $Nick)
                        {
                         include (
                    "include/include-reg2.php");

                    }
                    else
                    {
                    //hier beginnt der Else Teil der X-mal durchlaufen wird, je nach
                    //ergebnis der abfrage oben, dank deiner while schleife
                    ´
                    //-> hier kommt halt dein Code zum Eintragen. 

                    Im Endeffekt muss man leider sagen, das deine Datenbankstruktur und
                    deine PHP Ablauf Struktur müll sind, sorry ist aber so.
                    mfg
                    marc75

                    <Platz für anderes>

                    Kommentar


                    • #11
                      Danke für deine ehrliche Meinung.. hab mir nochmal das manual ein wenig angeschaut.. hab jetzt was gebastelt was einwandfrei funktioniert, trotzdem würd ich gerne wissen ob das wenigstens so halbwegs in Ordnung ist.

                      PHP-Code:
                      <?php

                      $Nick 
                      $HTTP_POST_VARS["Nick"];
                      $Volk $HTTP_POST_VARS["Volk"];
                      $pw $HTTP_POST_VARS["pw"];
                      $pw2 $HTTP_POST_VARS["pw2"];
                      $email $HTTP_POST_VARS["mail"];
                      $pw2_vergleich "****";
                      $md5_pw md5($pw);

                      mysql_connect("localhost",
                        
                      "**","**") or die
                        (
                      "Keine Verbindung moeglich");
                        
                      mysql_select_db("****") or die
                        (
                      "Die Datenbank existiert nicht");



                      if (
                      $pw2 == $pw2_vergleich
                      {
                      if (!empty (
                      $Nick)) 
                      {
                      if (!empty (
                      $email))
                      {
                      if (!empty (
                      $pw))
                      {
                      $var mysql_query("SELECT Username AS name2 FROM `users` WHERE UserName = '$Nick' limit 1");
                      if(
                      mysql_num_rows($var) == "0"
                      {
                      $eintrag "INSERT INTO users (UserName, UserPass, UserMail, Volk) VALUES ('$Nick', '$md5_pw', '$email', '$Volk')";
                      $eintragen mysql_query($eintrag);
                      } else {
                      echo 
                      "User schon vorhanden";
                      }

                      }

                      else
                      {echo 
                      "Passwort falsch";}

                      }

                      else
                      {echo 
                      "email nicht angegheben";} 

                      }

                      else
                      {echo 
                      "nick nicht angegeben";}

                      }

                      else
                      {echo 
                      "reg pass falsch";}


                      ?>

                      Kommentar

                      Lädt...
                      X