Ankündigung

Einklappen
Keine Ankündigung bisher.

Daten in Datenbank speichern

Einklappen

Neue Werbung 2019

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

  • Daten in Datenbank speichern

    Hallo zusammen

    ich habe folgendes Problem und zwar versuche ich, dass die daten die der user in der Maske "Registrieren" einträgt, automatisch in meiner Mysql db gespeichert wird.....teste ich das bei mir selber, dann bekomme ich keine fehlermeldung, aber die daten tauchen auch nicht in der db auf und ich verzweifel solangsam :/


    hier mal der php code

    PHP-Code:
    <?php
    //Variablen deklarieren
    $prename $_POST'prename' ];
    $lastname $_POST'lastame' ];
    $email $_POST'mail' ];
    $password $_POST'password' ];

    if ( 
    $prename != "" && $lastname != "" && $email != "" && $password != "" ) {
        
    //überprüfen, ob Passwort und E-Mail Adresse überein stimmen
        
    if ( $email == $_POST'rmail' ] ) {
            if ( 
    $pssword == $_POST'rpassword' ] ) {
                
    //überprüfen ob Namen korrekt
                
    $zeichen "!&$%()/\?=1234567890{}[]<>,;:._^^^^°+-**#";
                
    $pospn strpos$prename$zeichen );
                
    $posln strpos$lasname$zeichen );
                if ( 
    $pospn === false && $posln === false ) {
                    
    //überprüfen ob E-Mail Korrekt
                    
    $posm1 strpos$email"@" );
                    
    $posm2 strpos$email"." );
                    if ( 
    $posm2 != "" && $posm1  != "" ) {
                        
    //Sicherheit
                        
    $prename htmlspecialchars$prename );
                        
    $prename mysql_real_escape_string$prename );
                        
    $prename htmlentities$prename );
                        
    $lastname htmlspecialchars$prename );
                        
    $lastname mysql_real_escape_string$prename );
                        
    $lastname htmlentities$prename );
                        
    $email htmlspecialchars$prename );
                        
    $email mysql_real_escape_string$prename );
                        
    $email htmlentities$prename );
                        
    $password md5$password );
                        
    //Verbindung mit der Datenbank
                        
    mysql_connect"*****""*****""*****" )or die( "Fehler bei der Verbindung mit der Datenbank" );
                        
    mysql_select_db"*****" );
                        
    //überprüfen, ob E-mail schon vorhanden
                        
    $selectEMail mysql_query"SELECT * FROM user WHERE email = '{$email}'" );
                        if ( 
    mysql_num_rows$selectEMail ) == ) {
                            
    $insertData mysql_query ("INSERT INTO user VALUES ('','{$prename}', '{$lastname}','{$email}','{$password}')");
                        } else {
                            
    $output "Diese E-Mail Adresse wurde bereits verwendet.";
                        }

                    }
                    else {
                        
    $output "E-Mail Adresse nicht korrekt";
                    }


                } else {
                    
    $output "Ihr Name kann nicht korrekt sein. Bitte &auml;ndern Sie diesen.";
                }
            }

     else {
        
    $output "Die E-Mail Adressens timmen nicht &uuml;berein";
    }
        }
            else
            {
        
    $output "Bitte F&uuml;llen Sie alle Felder aus.";


    }
    echo(
    $output);

    ?>

    die zugangsdaten der DB habe ich bewusst jetzt mi **** gekennzeichnet, da diese in meinem fall nicht localhost und root sind sondern bei strato sind und ich ungerne die daten hier veröffentlichen möchte

  • #2
    1. Verwende kein mysql mehr, die Erweiterung ist veraltet und in PHP7 entfernt. Verwende mysqli oder PDO.
    2. Du hast teilweise Variablen falsch geschrieben, resp. unterschiedlich. Z.b.
    PHP-Code:
    $password $_POST'password' ]; 
    und
    PHP-Code:
    if ( $pssword == $_POST'rpassword' ] ) { 
    3. mysqli_real_escale_string reicht vollends. Wenn du PDO nutzt übernimmt das sonst PDO für Dich.
    4. strpos gibt eine Zahl oder false zurück, kein leerer String. Einmal verwendest du es richtig, einmal nicht.
    5. Mot Regulären Ausdrücken kannst du die Überprüfung sonst etwas vereinfachen
    6. md5 sollte man nicht mehr verwenden für Passwort-Verschlüsselung. Verwende die php-Funktion password_hash
    7. Setzte in der Datenbank Dein email-Feld auf Unique, dann musst du keine Überprüfung vornehmen.

    Wenn Deine Werte nicht in der Datenbank ankommen kannst du zuerst mal prüfen ob Deine Variablen überhaupt einen Wert haben. Vielleicht lässt du Dir auch die Querys mal ausgeben und probierst sie in der Datenbank direkt aus. Oder du lässt die Datenbank-Erweiterung (mysqli oder PDO) den Fehler ausgeben. Dann solltest du sehen wo der Fehler liegt.

    Kommentar


    • #3
      8. mysql_real_escape_string liefert einen leeren String, wenn noch kein mysql_connect erfolgt ist
      9. Bitte durcharbeiten und anwenden: https://php-de.github.io/jumpto/leitfaden/
      Die Deutsche Rechtschreibung ist Freeware! Du darfst sie kostenlos nutzen, allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

      Kommentar

      Lädt...
      X