Ankündigung

Einklappen
Keine Ankündigung bisher.

(MySQL) Prüfen ob Einträge schon vorhanden ist

Einklappen

Neue Werbung 2019

Einklappen
Dieses Thema ist geschlossen.
X
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • (MySQL) Prüfen ob Einträge schon vorhanden ist

    Huhu
    Ich habe ein Problem und zwar habe ich ein Registrierformular erstellt ^^
    Dort wird ein Username, eine E-Mail und ein Passwort zum registrieren benötig.
    (Naja ist klar ) Das ganze sieht so aus :

    PHP-Code:
    <?php 
    $connect_id 
    mysql_connect("localhost""aufsicht" ,"PASSWORD") or die ("Keine Verbindung moeglich");  
    mysql_select_db("aufsicht") or die ("Die Datenbank existiert nicht"); 


    // Dient nur zur Sicherheit... auch bei $_GET anwendbar...
    if( get_magic_quotes_gpc() )
    {
        foreach(
    $_POST as $key => $value)
        {
            
    $_POST[$key] = mysql_real_escape_string(stripslashes($value), $connect_id);
        }
    }
    else
    {
        foreach(
    $_POST as $key => $value)
        {
            
    $_POST[$key] = mysql_real_escape_string($value$connect_id);
        }    
    }
    // Ende der Sicherheit        

    $test mysql_query("SELECT * FROM archiv_login WHERE _username='" mysql_real_escape_string($_POST['username']) . "'");
    if(
    mysql_num_rows($test) != 0)
        {
            echo 
    '<font color="#FF0000">Dieser Username ist leider schon vergeben! Bitte wähle einen anderen!<br><br></font>';

    } else if( 
    $abschicken == ($_POST['username'] !="") ) {
        echo
    "";
    }
    else {    

    $_username $_POST['username']; 
    $_passwort $_POST['passwort'];
    $_email $_POST['email'];
    if( isset(
    $_POST['submit']) && !empty($_username) && !empty($_passwort) && !empty($_email) )
    {
        
    $sql "INSERT INTO archiv_login (_username, _passwort, _email) VALUES ('".$_username."', '"md5($_passwort)."', '".$_email."') "
        if( !
    mysql_query($sql$connect_id) )
        {
            die(
    "<b>SQL-Fehler!</b><br /><br />"mysql_errno() . " : " mysql_error() . "<br /><br /><i>" $sql "</i>");
        }

    $body="Es hat sich ein User auf WEBSITE.de registriert:
    Benutzername: 
    $_username
    E-Mail: 
    $_email

    Automatisch generierte E-Mail

    "
    ;
       
    $headers "From: sheeke@muenster.de \r\n";
    $headers.= "Content-Type: text/html; charset=ISO-8859-1 ";
    $headers .= "MIME-Version: 1.0 ";
    /*notice there aren't any \r\n after the second two header additions. This is what made this version work correctly*/
    mail("sheeke@muenster.de""Anmeldung auf WEBSITE.de"$body$headers);

        
    $echo '<font color="#FF0000">Du bist jetzt registriert und kannst dich mit deinem Usernamen auf WEBSITE.de einloggen.<br><br></font><br>';
    }
    else if( isset(
    $_POST['submit']) )
    {
        
    $echo '<br /><font color="#FF0000">Das Formular wurde nicht korrekt ausgefüllt bitte &uuml;berpr&uuml;fe die angegebenen Daten!<br><br></font><br />';
         
    }

    }
    ?>


    <html> 
    <head> 

    </head> 



    <br><br><br><br><br><center><h1>Smilie-Grube.de Registrierung</h1>
    <form action="<?=$_SERVER['PHP_SELF']?>" method="post">  
    <?=$echo?>
    <TABLE>
     <TD>Gew&uuml;nschter Benutzername:  </TD> 
     <TD><input type="text" name="username" size="30" /> </TD> 
    </TR> 
    <TR> 
     <TD>Passwort:  </TD> 
     <TD><input type="password" name="passwort" size="30" /> </TD> 
    </TR>
    <TR> 
    <TR> 
     <TD>E-Mail:  </TD> 
     <TD><input type="text" name="email" size="30" /> </TD> 
    </TR>

    </TABLE><br> 

    <input type="submit" name="submit" value="Registrieren" /> </form></center>

    </body> 
    </html>
    Naja funktioniert auch
    Jetzt hab ich nur noch eine Frage:
    Wie krieg ich es hin das nicht nur geprüft wird ob _username schon vorhanden ist sondern auch ob _email schon vorhanden ist ???
    Versuch es schon seit 1 Tag ^^

    Wär um jede Hilfe Dankbar


  • #2
    In dem du das gleiche nochmal mit anderen Variablen machst?

    Kommentar


    • #3
      Hmm, wenn man dir woanders nicht mehr helfen will, weil du nichts wirklich selbst macht, gehts dann aufs nächste Forum weiter ?
      robo47.net - Blog, Codeschnipsel und mehr
      | Caching-Klassen und Opcode Caches in php | Robo47 Components - PHP Library extending Zend Framework

      Kommentar


      • #4
        @robo47: link plz

        Kommentar


        • #5
          Deine jetzige Lösung besteht aus zwei getrennten Abfragen. Dadurch ist sie anfällig für race conditions. Unter ungünstigen Umständen kann die SELECT * FROM archiv_login WHERE _username=... Abfrage von zwei Instanzen Deines Skripts parallel ausgeführt werden und darauf hin der gleiche Wert zwei Mal parallel eingefügt werden.
          Wenn Du in der Datenbank für die Felder jeweils einen unique index anlegst, lässt MySQL keine doppelten Einträge mit den gleichen Werten zu. Bei einem INSERT mit bereits vorhandenen Daten bekommst Du einen entsprechenden Fehlerstatus zurück, den Du abtesten kannst.

          Kommentar


          • #6
            Zitat von cycap Beitrag anzeigen
            @robo47: link plz
            register.php bei Sessionbares LoginSystem von Ben - Developer's Guide
            robo47.net - Blog, Codeschnipsel und mehr
            | Caching-Klassen und Opcode Caches in php | Robo47 Components - PHP Library extending Zend Framework

            Kommentar


            • #7
              Alles klar, ich seh das genau so wie unsere Freunde bei developers-guide.net, nur das ich hier Mittel und Wege habe um dich zu bremsen.

              Deshalb: Thread closed mit Verweis auf: http://www.php.de/php-einsteiger/489...rundlagen.html

              Kommentar

              Lädt...
              X