• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Registrations Code funktioniert nicht

Backfighter

Neues Mitglied
Hallo ich bin noch Anfänger und habe mich mal an eine Registration gesetzt:mrgreen:

Dabei bin ich auf das Problem gestoßen, dass dauernt die Fehler Meldung: Bitte Benutzernamen eingeben!

Hier das Formular:
HTML:
<html xmlns="http://www.w3.org/1999/xhtml">

    <head>
        <meta http-equiv="content-type" 
            content="text/html;charset=utf-8" />
        <title>Jetzt Registrieren! :)</title>
        <link rel="stylesheet" type="text/css" href="Styles/style.css" />
    </head>
    
    <body>
        <form method="post" action="Registration.php">
            <div id="Box">
                <h1>Registrierung</h1>
                <p class="center">    E-mail Adresse:<input class="Registartion" type="text" name="email" maxlength="40">     <br /> <br />
                    Benutzername:<input class="Registartion" type="text" name="username" maxlength="20"> <br /> <br />
                    Passwort:<input class="Registartion" type="password" name="passwort" maxlength="16">         <br /> <br />
                    Passwort ernut eingeben:<input class="Registartion" type="password" name="repeatedpasswort" maxlength="16"> <br /> <br />
                    Ich aktzeptiere die AGB:<input type="checkbox" name="AGB" value="AGB" checked>
                </p>
                <input type="submit" value="Registrieren" class="Button_zentriert">
            </div>
        </form>
    </body>
    
</html>

Hier der Registrations code:
PHP:
<html xmlns="http://www.w3.org/1999/xhtml">

    <head>
        <meta http-equiv="content-type" 
            content="text/html;charset=utf-8" />
        <!-- meta http-equiv="refresh" content="20; URL=http://localhost/Registrationsformular.php"> -->
        <title>Registrierung erfolgt...</title>
        <link rel="stylesheet" type="text/css" href="Styles/style.css" />
    </head>
    
    <body>
        <?php
            mysql_connect("localhost", "******", "*******") or die (mysql_error());
                // Datenbank auswählen
                mysql_select_db("Benutzer") or die(mysql_error());
                    $_username = $_POST['username'];
                    $_passwort = mysql_real_escape_string($_POST["passwort"]);
                    $_email = strtolower($_POST["email"]);
                    
                    $_sql = "SELECT * FROM benutzer WHERE benutzername='$_username'";
                    
                    $_res = mysql_query($_sql);
                    $_anzahl = @mysql_num_rows($_res);
                    
                    $_sql_email = "SELECT * FROM benutzer WHERE email='$_email'";
                    
                    $_res_email = mysql_query($_sql_email);
                    $_anzahl_email = @mysql_num_rows($_res_email);
                    
                    if (!isset($_POST["Submit"])) {
                        if ($_passwort != 0 and $_username !=0 and $_anzahl == 0 and check_email_mx($_email) and $_POST['passwort'] == $_POST['repeatedpasswort'] and $_anzahl_email == 0 and $_POST["AGB"] != 0){
                            echo "<p>Registrirung Erfolgreich :)</p>";
                            $strSQL = "INSERT INTO benutzer(benutzername, passwort, email) VALUES('".$_POST['username']."',  '".$_POST['passwort']."',   '".$_POST['email']."')";
                            mysql_query($strSQL) or die (mysql_error());
                            mysql_close();
                            exit();
                        }
                        if ($_anzahl > 0){
                            echo "<p>Benutzername bereits vorhanden!</p>";
                            include("Registrationsformular.php");
                            mysql_close();
                            exit();
                        }
                        if (!check_email_mx($_email)){
                            echo "<p>Keine gültige E-mail Adresse!</p>";
                            include("Registrationsformular.php");
                            mysql_close();
                            exit();
                        }
                        if ($_POST['passwort'] != $_POST['repeatedpasswort']){
                            echo "<p>Passwörter stimmen nicht über ein!</p>";
                            include("Registrationsformular.php");
                            mysql_close();
                            exit();
                        }
                        if ($_anzahl_email > 0){
                            echo "<p>Email bereits vorhanden!</p>";
                            include("Registrationsformular.php");
                            mysql_close();
                            exit();
                        }
                        if ($_username == 0){
                            echo "<p>Bitte geben sie einen Benutzernamen ein! $_username $_passwort $_email</p>";
                            include("Registrationsformular.php");
                            mysql_close();
                            exit();
                        }
                        if ($_passwort == 0){
                            echo "<p>Bitte geben sie ein Passwort ein!</p>";
                            include("Registrationsformular.php");
                            mysql_close();
                            exit();
                        }
                        if ($_POST["AGB"] == 0){
                            echo "<p>Sie müssen die AGB aktzeptieren!</p>";
                            include("Registrationsformular.php");
                            mysql_close();
                            exit();
                        }
                    }
                // Schließt die Datenbankverbindung
            mysql_close();
        
        ?>
    </body>
    
</html>

<?php
function check_email_mx($email) {
    if(
        (preg_match('/(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/', $email)) || 
        (preg_match('/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/',$email)) 
    ) {
        $host = array_pop(explode('@', $email));
        if(checkdnsrr($host.'.', 'MX') ) return true;
        if(checkdnsrr($host.'.', 'A') ) return true;
        if(checkdnsrr($host.'.', 'CNAME') ) return true;
    }
    return false;
    return true;
} 
?>

Wie gesagt ich bin noch Anfänger, währe nett, wenn ihr mir helfen könntet da ein bisschen Struktur rein zu bekommen ;-)

mfG Backfighter
 
Zuletzt bearbeitet:
Werbung:
Zuerst einmal solltest du alle Eingaben vom User escapen, nicht nur das Passwort.

Dann solltest du nicht mit if ($_username == 0) prüfen, ob eine Variable nicht gesetzt ist. Benutze hierfür besser empty(). Da Checkboxen nur mitgepostet werden, wenn diese auch gecheckt sind, reicht für die AGB-Abfrage isset() ;)
 
Ah danke :)
Vtl. dumme Frage, aber was ist mit escapen gemeint?
So sieht der Code jetzt aus :
PHP:
<html xmlns="http://www.w3.org/1999/xhtml">

    <head>
        <meta http-equiv="content-type" 
            content="text/html;charset=utf-8" />
        <!-- meta http-equiv="refresh" content="20; URL=http://localhost/Registrationsformular.php"> -->
        <title>Registrierung erfolgt...</title>
        <link rel="stylesheet" type="text/css" href="Styles/style.css" />
    </head>
    
    <body>
        <?php
            mysql_connect("localhost", "root", "R2d2C3pO") or die (mysql_error());
                // Datenbank auswählen
                mysql_select_db("Benutzer") or die(mysql_error());
                    $_username = $_POST['username'];
                    $_passwort = mysql_real_escape_string($_POST["passwort"]);
                    $_email = strtolower($_POST["email"]);
                    
                    $_sql = "SELECT * FROM benutzer WHERE benutzername='$_username'";
                    
                    $_res = mysql_query($_sql);
                    $_anzahl = @mysql_num_rows($_res);
                    
                    $_sql_email = "SELECT * FROM benutzer WHERE email='$_email'";
                    
                    $_res_email = mysql_query($_sql_email);
                    $_anzahl_email = @mysql_num_rows($_res_email);
                    
                    if (!isset($_POST["Submit"])) {
                        if ($_passwort != 0 and $_username !=0 and $_anzahl == 0 and check_email_mx($_email) and $_POST['passwort'] == $_POST['repeatedpasswort'] and $_anzahl_email == 0 and $_POST["AGB"] != 0){
                            echo "<p>Registrirung Erfolgreich :)</p>";
                            $strSQL = "INSERT INTO benutzer(benutzername, passwort, email) VALUES('".$_POST['username']."',  '".$_POST['passwort']."',   '".$_POST['email']."')";
                            mysql_query($strSQL) or die (mysql_error());
                            mysql_close();
                            exit();
                        }
                        if ($_anzahl > 0){
                            echo "<p>Benutzername bereits vorhanden!</p>";
                            include("Registrationsformular.php");
                            mysql_close();
                            exit();
                        }
                        if (!check_email_mx($_email)){
                            echo "<p>Keine gültige E-mail Adresse!</p>";
                            include("Registrationsformular.php");
                            mysql_close();
                            exit();
                        }
                        if ($_POST['passwort'] != $_POST['repeatedpasswort']){
                            echo "<p>Passwörter stimmen nicht über ein!</p>";
                            include("Registrationsformular.php");
                            mysql_close();
                            exit();
                        }
                        if ($_anzahl_email > 0){
                            echo "<p>Email bereits vorhanden!</p>";
                            include("Registrationsformular.php");
                            mysql_close();
                            exit();
                        }
                        if (empty($_username)){
                            echo "<p>Bitte geben sie einen Benutzernamen ein! $_username $_passwort $_email</p>";
                            include("Registrationsformular.php");
                            mysql_close();
                            exit();
                        }
                        if (empty($_passwort)){
                            echo "<p>Bitte geben sie ein Passwort ein!</p>";
                            include("Registrationsformular.php");
                            mysql_close();
                            exit();
                        }
                        if (isset($_POST["AGB"])){
                            echo "<p>Sie müssen die AGB aktzeptieren!</p>";
                            include("Registrationsformular.php");
                            mysql_close();
                            exit();
                        }
                    }
                // Schließt die Datenbankverbindung
            mysql_close();
        
        ?>
    </body>
    
</html>

<?php
function check_email_mx($email) {
    if(
        (preg_match('/(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/', $email)) || 
        (preg_match('/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/',$email)) 
    ) {
        $host = array_pop(explode('@', $email));
        if(checkdnsrr($host.'.', 'MX') ) return true;
        if(checkdnsrr($host.'.', 'A') ) return true;
        if(checkdnsrr($host.'.', 'CNAME') ) return true;
    }
    return false;
} 
?>

Das Problem bleibt allderding bestehen :?
 
Werbung:
Ah danke :)
Vtl. dumme Frage, aber was ist mit escapen gemeint?

mysql_real_escape_string() ;)

Die Abfrage, ob die AGBs akzeptiert wurden, ist falsch. Mit einem ! (Ausrufezeichen) negierst du eine If-Bedingung:
PHP:
//Beispiel: AGBs nicht gesetzt
if(isset($_POST['AGB'])) //ergibt FALSE, Anweisung wird nicht ausgeführt
if(!isset($_POST['AGB'])) //ergibt TRUE, Anweisung wird ausgeführt

Du willst den Fehler ja nicht zeigen, wenn die AGBs akzeptiert wurden, sondern wenn sie es nicht wurden ;)

Was steht denn in $_POST['username']? Schon überprüft, ob da etwas ankommt?
 
Ja hab ich schon also es kommt der eingegebene Benutzername auch tatsächlich raus :?
Code sieht jetzt so aus :
PHP:
<html xmlns="http://www.w3.org/1999/xhtml">

    <head>
        <meta http-equiv="content-type" 
            content="text/html;charset=utf-8" />
        <!-- meta http-equiv="refresh" content="20; URL=http://localhost/Registrationsformular.php"> -->
        <title>Registrierung erfolgt...</title>
        <link rel="stylesheet" type="text/css" href="Styles/style.css" />
    </head>
    
    <body>
        <?php
            mysql_connect("localhost", "root", "R2d2C3pO") or die (mysql_error());
                // Datenbank auswählen
                mysql_select_db("Benutzer") or die(mysql_error());
                    $_username = $_POST['username'];
                    $_passwort = mysql_real_escape_string($_POST["passwort"]);
                    $_email = strtolower($_POST["email"]);
                    
                    $_sql = "SELECT * FROM benutzer WHERE benutzername='$_username'";
                    
                    $_res = mysql_query($_sql);
                    $_anzahl = @mysql_num_rows($_res);
                    
                    $_sql_email = "SELECT * FROM benutzer WHERE email='$_email'";
                    
                    $_res_email = mysql_query($_sql_email);
                    $_anzahl_email = @mysql_num_rows($_res_email);
                    
                    if (!isset($_POST["Submit"])) {
                        if ($_passwort != 0 and $_username !=0 and $_anzahl == 0 and check_email_mx($_email) and $_POST['passwort'] == $_POST['repeatedpasswort'] and empty($_anzahl_email) and isset($_POST["AGB"])){
                            echo "<p>Registrirung Erfolgreich :)</p>";
                            $strSQL = "INSERT INTO benutzer(benutzername, passwort, email) VALUES('".$_POST['username']."',  '".$_POST['passwort']."',   '".$_POST['email']."')";
                            mysql_query($strSQL) or die (mysql_error());
                            mysql_close();
                            exit();
                        }
                        if ($_anzahl > 0){
                            echo "<p>Benutzername bereits vorhanden!</p>";
                            include("Registrationsformular.php");
                            mysql_close();
                            exit();
                        }
                        if (!check_email_mx($_email)){
                            echo "<p>Keine gültige E-mail Adresse!</p>";
                            include("Registrationsformular.php");
                            mysql_close();
                            exit();
                        }
                        if ($_POST['passwort'] != $_POST['repeatedpasswort']){
                            echo "<p>Passwörter stimmen nicht über ein!</p>";
                            include("Registrationsformular.php");
                            mysql_close();
                            exit();
                        }
                        if ($_anzahl_email > 0){
                            echo "<p>Email bereits vorhanden!</p>";
                            include("Registrationsformular.php");
                            mysql_close();
                            exit();
                        }
                        if (empty($_username)){
                            echo "<p>Bitte geben sie einen Benutzernamen ein! $_username $_passwort $_email</p>";
                            include("Registrationsformular.php");
                            mysql_close();
                            exit();
                        }
                        if (empty($_passwort)){
                            echo "<p>Bitte geben sie ein Passwort ein!</p>";
                            include("Registrationsformular.php");
                            mysql_close();
                            exit();
                        }
                        if (!isset($_POST["AGB"])){
                            echo "<p>Sie müssen die AGB aktzeptieren!</p>";
                            include("Registrationsformular.php");
                            mysql_close();
                            exit();
                        }
                    }
                // Schließt die Datenbankverbindung
            mysql_close();
        
        ?>
    </body>
    
</html>

<?php
function check_email_mx($email) {
    if(
        (preg_match('/(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/', $email)) || 
        (preg_match('/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/',$email)) 
    ) {
        $host = array_pop(explode('@', $email));
        if(checkdnsrr($host.'.', 'MX') ) return true;
        if(checkdnsrr($host.'.', 'A') ) return true;
        if(checkdnsrr($host.'.', 'CNAME') ) return true;
    }
    return false;
} 
?>

Edit: Jetzt funktioniert es(Code aktuell) :D

Es taucht aber immer wieder die Fehler Meldung
Strict Standards: Only variables should be passed by reference in C:\xampp\htdocs\Registration.php on line 97
auf :?

Weißt du woran das liegt ?
 
Was genau befindet sich denn in Zeile 97? Laut meinem Editor müsste das folgendes sein?
PHP:
 if(checkdnsrr($host.'.', 'A') ) return true;

Ich seh darin soweit keinen Fehler...
 
Werbung:
Laut meinem müsste sie :
PHP:
$host = array_pop(explode('@', $email));
sein ;-)
aber ich versteh nicht was da falsch ist :?
 
Laut meinem müsste sie :
PHP:
$host = array_pop(explode('@', $email));
sein ;-)
aber ich versteh nicht was da falsch ist :?

Leg dir am besten einen Editor mit Syntax-Highlighting zu. Ich empfehle Notepad++.

Wenn du dann mal $email doppelklickst, werden alle Vorkommnisse markiert. Spätestens dann sollte dir auffallen, dass $email garnicht existiert und du die ganze Zeit mit $_email gearbeitet hast ;)
 
Ja ich benutze Notpad++ :D

Aber der Grund warum es einaml $_email und einmal $email gibt liegt daran, dass $email einer Function angehört ;-)

Womit das Problem leider weiterhin bestehn :?

Danke das du mir so viel hilfst :)
 
Werbung:
Sorry, war gestern nicht mehr on ;)

Ja, da hab ich wohl bissel gepennt, als ich mir den Code angeschaut hab.

Probiers mal mit
PHP:
$host = substr($email, (strpos($email, '@')+1));

statt
PHP:
$host = array_pop(explode('@', $email));

Übrigens weiß ich nicht, was die erste RegEx Anweisung bringen soll. Wo hast du die denn herkopiert? ^^
 
Zurück
Oben