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

Check nach bereits vergebenem Username (Anmeldung)

DarkDragon-1993

Neues Mitglied
Ich wollte eine Anmeldung errichten, da ich an einer Homepage für eine Gilde in einem Spiel arbeite. (Dieses Projekt ist zwar mitlerweile leider nicht mehr als annerkannte zukünftige Site zu betrachten, aber damit kann ich auch gut lernen und habe für das nächste Praktikum einen handfesten Beweis.) Damit ich nicht alle Mitglieder per Hand eingeben muss (sollte sich jemand dort anmelden wollen), erstellte ich eine Anmeldung. Ich überprüfe als erstes das Passwort auf Gleichheit mit der Wiederholung, dann überprüfe ich die Datenbank nach dem Username, dann folgt die eigentliche Anmeldung. Allerdings sagt mir MySQL schon beim Username jedesmal, dass zwar für mysql_fetch_assoc( ) der übergebene Parameter keine gültige MySQL-Recource-ID ist, aber ich will überprüfen, ob überhaupt darin etwas steckt. Sollte darin eine valide ID stecken, soll die Anmeldung abbrechen, aber sie wird weiter ausgeführt. Hier der Code (ich bin in diesem Gebiet noch neu, also bitte nachsichtig sein und Verbesserungsvorschläge nehme ich gerne!):

Code:
if( isset( $_POST[ "username" ] ) or isset( $_POST[ "pw" ] ) or isset( $_POST[ "email" ] ) )
    {
        if( $_POST[ "pw" ] == $_POST[ "pwrepeat" ] )
        {
            $sql = "
                SELECT FROM
                    user
                WHERE
                    name = \"" . $_POST[ "username" ] . "\";";
            $result = mysql_query( $sql );
            if( $row = @mysql_fetch_assoc( $result ) )
            {
                echo "
                    <p>
                        Username ist bereits vergeben!
                    </p>";
            } else {
                $sql = "
                    INSERT INTO
                        user
                        (
                            name,
                            pw,
                            email,
                            homepage,
                            birthday,
                            rank,
                            firstname,
                            lastname
                        )
                    VALUES
                    (
                        \"" . $_POST[ "username" ] . "\",
                        \"" . $_POST[ "pw" ] . "\",
                        \"" . $_POST[ "email" ] . "\",
                        \"" . $_POST[ "hp" ] . "\",
                        \"" . $_POST[ "bday" ] . "\",
                        \"User\",
                        \"" . $_POST[ "prename" ] . "\",
                        \"" . $_POST[ "lastname" ] . "\"
                    )";
                $result = mysql_query( $sql );
                if( !$result )
                {
                    echo "
                        <p>
                            Bei der Anmeldung ist ein Fehler aufgetreten!<br />
                            Versuche es erneut oder kontaktiere in &quot;Skype&quot; &quot;LightDragoon&quot;, das bin ich.<br />
                            " . mysql_error( ) . "
                        </p>";
                }
            }
        } else {
            echo "
                <p>
                    Das Passwort ist entweder nicht eingegeben oder stimmt mit der Wiederholung nicht &uuml;berein!
                </p>";
        }
    }
 
Werbung:
Wenn das keine gültige Ressource ist, dann hat der vorhergegangene mysql_query() einen Fehler gemacht. Den kannst Du Dir mit mysql_error() abfragen, z.B. so:

PHP:
mysql_query(...) or die("Fehler: ".mysql_error());

Dann wird Dir ausgegeben werden, dass Du einen Fehler in Deiner SQL-Syntax bei "SELECT FROM" hast. Und da fehlt die Angabe, was Du selektieren willst.
Code:
select spaltenname from tabelle ...
Wahlweise auch "*" als Spaltenname, dann werden alle Spalten der Tabelle selektiert.

Ich gehe mal davon aus, dass das Verbinden mit der DB vorher noch irgendwo geschieht, denn in diesem Code fehlt das auch noch.
 
Werbung:
Wenn das keine gültige Ressource ist, dann hat der vorhergegangene mysql_query() einen Fehler gemacht. Den kannst Du Dir mit mysql_error() abfragen, z.B. so:

PHP:
mysql_query(...) or die("Fehler: ".mysql_error());

Dann wird Dir ausgegeben werden, dass Du einen Fehler in Deiner SQL-Syntax bei "SELECT FROM" hast. Und da fehlt die Angabe, was Du selektieren willst.
Code:
select spaltenname from tabelle ...
Wahlweise auch "*" als Spaltenname, dann werden alle Spalten der Tabelle selektiert.
=o Wie gesagt, ich bin noch neu auf diesem Gebiet, konnte mir wohl nicht die ganze Struktur merken :) aber ich wollte ja eigentlich, dass keine richtige Resource ID rauskommt...
Naja, ich werde mir alles mal anguggen (das mit dem Perfekten Login).

Ich gehe mal davon aus, dass das Verbinden mit der DB vorher noch irgendwo geschieht, denn in diesem Code fehlt das auch noch.
Ja, das konnte ich mir merken, ansonsten klappt ja garnichts in dieser Richtung :)
 
Auch wenn Du keinen Datensatz triffst (es ist noch kein User mit dem Namen angelegt) erhältst Du eine gültige Ressourcen-ID. Das Query wurde ja korrekt ausgeführt.

Die Anzahl der gefundenen Datensätze erhältst Du mit der mysql_num_rows()-Funktion.

Gruß thuemmy
 
Auch wenn Du keinen Datensatz triffst (es ist noch kein User mit dem Namen angelegt) erhältst Du eine gültige Ressourcen-ID. Das Query wurde ja korrekt ausgeführt.

Die Anzahl der gefundenen Datensätze erhältst Du mit der mysql_num_rows()-Funktion.

Gruß thuemmy

Ah, sehr gut, danke.

Danke an alle die mir geholfen haben! Ihr werdet wahrscheinlich bald noch mehr Fragen von mir lesen! :razz:
 
Werbung:
Zurück
Oben