[PHP] Daten anlegen... wo ist der Fehler?

Dieses Thema im Forum "Webentwicklung" wurde erstellt von smo_0chy, 22. November 2008 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 22. November 2008
    Daten anlegen... wo ist der Fehler?

    Seid gegrüßt

    Ich bitte euch mir zu helfen meinen Fehler ausfindig zu machen. Hab das mehr oder weniger eins zu eins von verschiedenen Vorlagen und V2B Clips übernommen, aber aus irgenteinem Grund möchte er die Daten nicht in die Datenbank eintragen...Hoffe ihr könnt mir helfen; bewerte euch selbstverständlich!

    PHP:
    if (isset( $_POST [ 'login_x' ]) && isset( $_POST [ 'login_y' ])) {
                                if (
    $_SESSION [ 'security_code' ] ==  $_POST [ 'security_code' ] && !empty( $_SESSION [ 'security_code' ])) {
                                    if (!empty(
    $_POST [ "user" ]) or !empty( $_POST [ "pw" ]) or !empty( $_POST [ "pw2" ]) or !empty( $_POST [ "first" ]) or !empty( $_POST [ "second" ]) or !empty( $_POST [ "mail" ]) or !empty( $_POST [ "sex" ])) {
                                        if (
    $_POST [ "pw2" ] ==  $_POST [ "pw" ]) {
                                            
                                        
                                        
    $connectionid   mysql_connect  ( "localhost" "*****" "*****" );
                                        if (!
    mysql_select_db  ( "obpe" $connectionid )) {  
                                              die (
    "Keine Verbindung zur Datenbank!" );
                                        }
                                        
                                        
    mysql_query  ( "DELETE FROM ecuser" );
                                        
                                            
    $user  $_POST [ "user" ];
                                            
    $pw  md5  ( $_POST [ "pw" ]);
                                            
    $first  $_POST [ "first" ];
                                            
    $second  $_POST [ "second" ];
                                            
    $sex  $_POST [ "sex" ];
                                            
    $mail  $_POST [ "mail" ];
                                            
    $bd  $_POST [ "byear" ]. "-" . $_POST [ "bmonth" ]. "-" . $_POST [ "bday" ];
                                            
    $erstellt  date ( "Y-m-d H:i:s" );
                                            
    $aktivierungscode  rand ( 1 99999999 );
        
                                        
    mysql_query  ( "INSERT INTO ecuser (Nickname, Kennwort, Vorname, Nachname, Geschlecht, E-Mail, Geburtsdatum, Aktivierungscode, Erstellt, Aktiviert) VALUES (' $user ', ' $pw ', ' $first ', ' $second ', ' $sex ', ' $mail ', ' $bd ', ' $aktivierungscode ', ' $erstellt ', 'nein')" $connectionid );

                                            if (
    mysql_affected_rows  ( $connectionid ) >  0 ) {
                                                echo 
    "<b>Die Daten wurden erfolgreich gespeichert!</b><br />Eine E-Mail zum aktivieren des Accounts wurde an <b>" . htmlspecialchars ( stripslashes ( $_POST [ "mail" ])). "</b> gesendet!" ;
                                            } else {  
                                                echo 
    "<span class='error'>Fehler beim Anlegen der Daten!</span><br />(<a href='registrieren.php'>Nochmal versuchen!</a>)" ;  
    {bild-down: http://img145.imageshack.us/img145/6319/screenmg4.jpg}


    Vielen Dank
     
  2. 22. November 2008
    AW: Daten anlegen... wo ist der Fehler?

    print mysql_error();
     
  3. 22. November 2008
    AW: Daten anlegen... wo ist der Fehler?

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-Mail, Geburtsdatum, Aktivierungscode, Erstellt, Aktiviert) VALUES ('awfeaef', '' at line 1

    EDIT: Ok, vielen Dank Telefonzelle... war der bindestrich im Wort "E-Mail"... oh man :\
     
  4. 22. November 2008
    AW: Daten anlegen... wo ist der Fehler?

    Daher benutze ich immer folgende Syntax
    PHP:
    mysql_query (...) or die( mysql_error ());
     
  5. 22. November 2008
    AW: Daten anlegen... wo ist der Fehler?

    Super.. und wenn du mal n MySQL Fehler hast sieht der User genau wie dein Query aussieht und was da alles falsch ist, bzw. wie er ggf. am Besten an Daten / Informationen rankommt, UND das Script "bricht ab" und der User steht mit 'ner konfusen Fehlermeldung dar und ohne Informationen was genau falschgelaufen ist und was er machen soll. Oo Fang die MySQL Fehler ab und zeig dann je nachdem ne Fehlerseite, die MySQL Fehlermeldungen kannste dir ja inkl. $_POST + $_GET Array (oder anderen, je nachdem welche du brauchst) per Mail schicken oder in eine schöne error.log eintragen, welche du im Admin Panel oder sonstwo auswerten kannst.
     
  6. 22. November 2008
    AW: Daten anlegen... wo ist der Fehler?

    Ich wollte nur auf die Syntax aufmerksam machen

    Du kannst genau so gut
    PHP:
    mysql_query (...) or  logError ( mysql_error ());
    schreiben.
     
  7. 22. November 2008
    AW: Daten anlegen... wo ist der Fehler?

    die funktion logError gibt es laut php.net leider nicht
    ich würde auch empfehlen das nicht dauerthaft einzubauen
     
  8. 22. November 2008
    AW: Daten anlegen... wo ist der Fehler?

    logError gibts auch ned, aber error_log =)

    PHP:
    mysql_query ( '' ) || exit( mysql_error ());
    is in der entwicklung gut, aber später hast du da ne schwachstelle, denn jeder sieht wo der fehler is. ne injection dauert dann meißt nimmer lang. nagut, wenn dein script mysql-aktionen überhaupt ned prüft kann man auch blind mit nem benchmark injecten.
     
  9. 22. November 2008
    AW: Daten anlegen... wo ist der Fehler?

    Deshalb hatte ich es in meinem ersten Post nicht erwähnt Ich kann mir nämlich sehr gut eine Funktion namens "logError" selbst erstellen und diese so aufrufen.
     
  10. 22. November 2008
    AW: Daten anlegen... wo ist der Fehler?

    Ich find deine Postings übrigens immer sehr komisch.. du schreibst immer son komischen Kram... Oo
    _

    - Warum leerst du eigtl die ganze Tabelle bevor du was einträgst?
     
  11. 23. November 2008
    AW: Daten anlegen... wo ist der Fehler?

    Schätze mal das war an mich gerichtet...
    PHP:
    mysql_query  ( "DELETE FROM ecuser" );
    Hab ich total übersehen. Hat sich wohl durch einen codeschnipsel mit eingeschlichen =)
    Aber bereits verbessert, danke
     
  12. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.