INSERT INTO funktioniert nicht!

sonnySTAR

Erfahrenes Mitglied
Ich habe folgendes Problem. Ich habe eine register.php wo das Formular zum registrieren drin ist. z.B: ein input <input type="text" name="register[username]" size="30">

sobald man auf absenden klickt wird man zur do_register.php weitergeleitet und das ist diehier:
PHP:
<?php

    include 'config.php';
    include 'functions_page.php';

    ### vars ###
    $register = $_POST['register'];
    $errors = array();

    ### umbruch, leerzeichen etc. entfernen ###
    $register['username'] = trim(preg_replace('/(?:\x0A|\x0D\x0A|\x0D|\x0C|0xA0)/', '', $register['username']));
    $_SESSION['username'] = $register['username'];

    ### prüfen verschiedener kausalitäten ###

    $query = "
        SELECT
                1
          FROM
                `".$pref."user`
          WHERE
                `username` = '".mysql_real_escape_string($register['username'])."'
        ";
    if( mysql_num_rows(mysql_query($query, $link)) > 0 ) {
        $errors[] = 'Benutzername bereits vergeben.';
    }

    $query = "
        SELECT
                1
          FROM
                `".$pref."user`
          WHERE
                `useremail` = '".mysql_real_escape_string($register['useremail'])."'
        ";
    if( mysql_num_rows(mysql_query($query, $link)) > 0 ) {
        $errors[] = 'Benutzer mit angegebener Emailadresse ('.$register['useremail'].') bereits registriert.<br>Falls Sie Ihr Passwort vergessen haben, klicken Sie <a href="send_password.php">hier</a> um es sich zuschicken zu lassen.';
    }

    if( strlen($register['username']) > 25) {
        $errors[] = 'Benutzername muss kürzer als 25 Zeichen sein!';
    }

    if( strlen($register['username']) < 2 ) {
        $errors[] = 'Benutzername muss länger als 1 Zeichen sein!';
    }

    if( !preg_match('/\./', $register['useremail']) || !preg_match('/@/', $register['useremail']) || preg_match('/ /', $register['useremail']) ) {
        $errors[] = 'Bitte geben Sie eine gültige E-Mail-Adresse an (Beispiel: host@domain.de)!';
    }

    ### check nach nicht erlaubten zeichen im username ###
    if( preg_match('/[^a-zA-Z0-9 _.\-|()\[\]{}äÄöÖüÜß]/', $register['username']) ) {
        $errors[] = 'Ihr Benutzername enthält ungültige Zeichen!';
    }

    ### ###
    if( count($errors) < 1 ) {

        ### speichern der registrierung ###

        #$register['userpw'] = substr(md5(microtime()), 0, 6);
        $time = time();

        /*
            if( !$register['userpw'] ) {
                textbox('Fehler', 'Bitte geben Sie ein Passwort an');
            }
        */
        $query = "
            INSERT INTO
                    `new_user`
              SET
                    `username`     = '".mysql_real_escape_string($register['username'])."',
                    `uservname`    = '".mysql_real_escape_string($register['uservname'])."',
                    `userpw`       = '".md5($register['userpw'])."',
                    `userbirthday` = '".mysql_real_escape_string($register['userbirthday'])."',
                    `usersex`      = '".mysql_real_escape_string($register['usersex'])."',
                    `userland`     = '".mysql_real_escape_string($register['userland'])."',
                    `usersitz`     = '".mysql_real_escape_string($register['usersitz'])."',
                    `useremail`    = '".mysql_real_escape_string($register['useremail'])."'
            ";
        $result = mysql_query($query, $link);

        $register['userid'] = mysql_insert_id();

        mail($register['useremail'], 'Registrierung bei kasHiroianer.de', "Hi ".$register['username'].",
Du hast Dich auf der kasHiroianer (http://www.kasHiroianer.de) Clanseite erfolgreich regestriert! Hier sind nun deine Logindaten:
username: ".$register['username']."\nemail: ".$register['useremail']."\npassword: ".$register['userpwd'],
'From: pageadmin <planuX@gmx.de>');

        echo 'Deine Registration wurde erfolgreich abgeschlossen, bitte überprüfen sie ihren Posteingang! sie werden in 3 sekunden weitergeleitet';
        echo '<meta http-equiv="refresh" content="3" URL="http://www.e-doggz.de/secret/">';

        $err = 102;

    }

    if( strlen($err) > 0 ) {
        header('Location: index.php?err='.$err.'&registered=1');
    }
    if( count($errors) > 0 ) {
        echo '<ul>';
        echo '<li>'.join('</li><li>', $errors).'</li>';
        echo '</ul>';
        // header('Location: index.php?cont=register&errmsg='.$errmsg);
    }

?>

Aber nachdem ich mich registreire bekomme cih folgende Fehlermessages:

* Der benutzername muss länger als 1 Zeichen sein
* Es muss eine gültige email sein (Beispiel: host@domain.de)

... Erkennt jemand den Fehler ?

Vielen dank im Vorraus
 
Oh ja, Ich entschuldige mich dafür.
Jedoch ist das in diesem Board so, das sobald der letzte post nen tag her ist keiner mehr antwortet. auch Wenn das Thema als "unerledigt" markiert ist. Ausserdem finde ich dass ich es hier klaarer dargestellt habe.

Falls es so schlimm sein sollte, könnt ihr den Thread löschen. Ggf. würde ich auch die Strafe entgegen nehmen :-/
 
Du hättest auch den anderen Beitrag überarbeiten und ggf. pushen können ;)

Aber zurück zu deinem Problem: Versuch doch mal print_R($register);

Vermutung: Hier wird der Username geleert:
PHP:
$register['username'] = trim(preg_replace('/(?:\x0A|\x0D\x0A|\x0D|\x0C|0xA0)/', '', $register['username']));
 
Zuletzt bearbeitet:
danke für deine Antwort.

Aber an dem liegt es auch nicht ... ich habe es mal weggelassen und trotzdem bekomm ich noch die gleichen fehlermeldungen :-/
 
Geb mal den Usernamen direkt am Anfang aus. Bist du dir sicher, dass er überhaupt korrekt dem Script übergeben wird?
PHP:
$register = $_POST['register'];
echo $register['username'];
 
@ _voodoo: Ich bin noch PHP anfänger und weiss somit nicht was du meinst, sry :-/

@ suye: Wenn ich das echo $register['username']; mache, zeigt er auch den nicknamen an den ich eingegeben habe :-/. Also vermittelt er das schon an das Script :-/
 
Also wird in diesem Code-Abschnitt irgendwo $register['username'] geleert.
Das kann m.M. nach auch nur an _voodoo`s Vermutung liegen.
Sonst wird nämlich nirgends eine Zuweisung von $register['username'] vorgenommen, nur in besagter Zeile.
Geb $register['username'] nochmals danach aus.
 
Ich habe es nun nach dem Teil an dem Überprüft wird ob ungültige zeichen vorhanden sind ausgegeben. Er gibt immernoch den richtigen usernamen aus ... also liegt es wohl doch nicht an dem teil ^^
 
Zurück