1. #1
    Avatar von aquastar
    Registriert seit
    08.11.2011
    Beiträge
    1.024
    Thanked 1.110 Times in 580 Posts

    Standard [PHP] Registrierungsscript

    Hallo!

    Da Comu mir ja derzeit PHP/MySQL beibringt, wollte ich hier mal meine ersten Erfolge posten. Nach einem dreistündigen Lernpart, hab ich es tatsächlich geschafft, ein Registrierungssystem auf die Beine zu stellen.

    Das ganze System schickt anschließend an die Email des registrierten Accounts eine Mail, die einen Bestätigungslink enthält, womit der Account quasi verifiziert wird.

    Das System ist in drei Datein aufgeteilt:
    -index.php
    -register.php
    -activation.php

    index.php
    PHP-Code:
    <html>
        <
    head>
            <
    title>
                
            </
    title>
        </
    head>
        <
    body>
            <
    form action 'register.php' method 'post'>
                
    Name: </br><input type 'text' name 'user'></br>
                
    Passwort: </br><input type 'password' name 'pass'></br>
                
    Email: </br><input type 'text' name 'email'></br>
                <
    input type 'submit' value 'Registrieren'>
        </
    body>
    </
    html
    register.php
    PHP-Code:
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        </head>
        <body>
            <?php
        $host 
    'host'// Euren host
        
    $user 'user'// Euren Usernamen
        
    $password 'password'// Euer Passwort von eurem Account
        
    $db 'db'// Die Datenbank, zu der ihr verbinden wollt
        
        
    mysql_connect($host$user$password) or die(mysql_error());
        
    mysql_select_db($db) or die(mysql_error());
        
        
    $random rand(1000099999);
        
        
    $name strip_tags($_POST['user']);
        
    $password md5(strip_tags($_POST['pass']));
        
    $email strip_tags($_POST['email']);
        
        
    $query mysql_query("INSERT INTO `Accounts` SET `name` = '".$name."', `password` = '".$password."', `email` = '".$email."', `randomkey` = '".$random."' ");
        
        if(
    $query)
        {
            echo 
    "Herzlichen Glückwunsch, deine Registrierung war erfolgreich!";
            echo 
    "Zur Bestätigung deines Accounts wurde dir soeben an dich eine E-Mail versand.";
            
    mail($email"Deine Aktivierung""Bitte aktiviere deinen Account. Dein Aktivierungslink: http://******.bplaced.net/activation.php?name=".$name."&key=".$random); // URL müsst ihr dementsprechend anpassen, wo ihr hostet und wie euer Pfad ist zur activation.php ist
        
    }
        else 
        {
            echo 
    mysql_error();
        }    
        
    ?>
        </body>
    </html>
    activation.php
    PHP-Code:
    <?php
        
        $name 
    strip_tags($_GET['name']);
        
    $rkey strip_tags($_GET['key']);
        
        
    $host 'host'// Euren host
        
    $user 'user'// Euren Usernamen
        
    $password 'password'// Euer Passwort von eurem Account
        
    $db 'db'// Die Datenbank, zu der ihr verbinden wollt
        
        
    mysql_connect($host$user$password) or die(mysql_error());
        
    mysql_select_db($db) or die(mysql_error());
        
        
    $bestaetigung =  mysql_query("UPDATE `Accounts` SET `activation` = '1' WHERE `name` = '".$name."' AND `randomkey` = '".$rkey."' ");
        
        if(
    $bestaetigung)
        {
            echo 
    "Deine Bestaetigung war erfolgreich";
        }
        else 
        {
            echo 
    mysql_error();
        }
    ?>
    Leute, die damit etwas anfangen können, wissen, was zutun ist, wer nicht, der kann gerne fragen, ich supporte dieses Skript und helfe, falls jemand Probleme damit hat.
    Noch zu sagen ist, dass eine Tabelle in eurer Datenbank angelegt werden muss. Mit 'name', 'password', 'email', 'randomkey' und 'activation'.

    Hierbei nochmal ein riesen Danke an Comu, der mit so viel Nerv und Fleiß mir das beigebracht hat. Danke an dich, Fabi. <3
    Das ganze System ist noch im Anfangslevel und wird wohl noch weiterentwickelt. Verbesserungsvorschläge sind gern gesehen! (:

    Falls ihr Fragen zum Code habt, dann fragt nur, hab jetzt nichts auskommentiert und auch keine config.php verwendet, deshalb müssen die Daten in beide Datein eingetragen werden.

    Schöne Nacht noch. (:

  2. The Following 2 Users Say Thank You to aquastar For This Useful Post:

    Comu (05.07.2012), Festplatte (12.04.2015)

  3. #2

    Registriert seit
    21.02.2012
    Beiträge
    44
    Thanked 10 Times in 10 Posts

    Standard AW: [PHP] Registrierungsscript

    Darf ich dir einige Tipps geben?

    Formular:
    Arbeite mit HTML valide. Sprich, arbeite nach dem HTML-Schema.
    Tags sind folgendermaßen aufgebaut:

    PHP-Code:
    // richtig
    <tag attribut="wert"></tag>

    // Talsch
    <tag attribut 'Wert'></tag
    MySQL-Connections
    Wenn du eine Connection aufbaust, solltest du diese am besten wieder beenden, wenn du diese nicht benötigst (mysql_close()). Dies geschieht meist am ende des Scripts.

    Auch wenn PHP mittlerweile zur endlaufzeit die Verbindung selbst schließt, ist es sinnvoll die Connection zu beenden. Sonst hast du nachher Probleme (Wenn beispielsweise ein Script endlos läuft), dass die verfügbaren MySQL-Connections schnell voll sind.

    POST oder GET variablen nicht nur mit strip_tags bearbeiten, sondern auch mit mysql_real_escape_string.

    MySQL-Statements
    Ist meist von vielen der Fehler. Nutze wirklich nur die Daten, die du wirklich benötigst.
    Dies fängt beim SELECT an:

    PHP-Code:
    // Falsch
    mysql_query("SELECT * FROM `accounts`");

    // Richtig
    mysql_query("SELECT `feld1`, `feld2` FROM `accounts`"); 
    und hört bei der Limiterung auf:
    PHP-Code:
    // Falsch
    mysql_query("UPDATE `accounts` SET `feld`='Wert' WHERE `id`='1'");

    // Richtig
    mysql_query("UPDATE `accounts` SET `feld`='Wert' WHERE `id`='1' LIMIT 1"); 
    Geändert von Badboy12 (05.07.2012 um 01:48 Uhr)

  4. The Following User Says Thank You to Badboy12 For This Useful Post:

    rVs14 (05.07.2012)

  5. #3
    Avatar von Festplatte
    Registriert seit
    25.11.2011
    Beiträge
    167
    Thanked 41 Times in 23 Posts

    Standard AW: [PHP] Registrierungsscript

    Bin früher per Google auf dieses Thread gestoßen und hab nun ein paar Tipps u.a. für den Tippgeber:
    - mysql api ist veraltet man sollte echt mysqli benutzen auch Ende 2012 war das schon so
    - Ihr habt da Sql Injections drin, VP hat zwar strip_tags aber das ist nicht ausreichend, man sollte mysql_real_escape_string benutzen! Noch besser Platzhalter ("Prepared Statements", geht aber erst mit mysqli)
    - Pws speichert man nie direkt, niemals! Immer einen Hash generieren und den speichern, sonst haben alle angemeldeten die Arschkarte wenn die Db gehackt wird
    - Die ` bei den Table-Namen sind unnötig lasst sie weg! Für bessere Lesbarkeit Zeilenumbrüche nehmen
    - Überall gebt ihr die Fehlermeldungen aus, das ist zum testen gut aber für eine öffentliche Seite nicht so grade mit den Sql Injections die können dann noch einfacher genutzt werden... lieber so machen:

    PHP-Code:
    define('SHOWERRORS'true);
    $mysql_connection mysqli_connect($host,$user,$pw);
    if(!
    $mysql_connection){
        if(
    SHOWERRORS)
            echo 
    mysql_error();
        die(
    "Ein Fehler ist aufgetreten");

    - Benutze Konstanten für konstante Werte also Datenbanknutzer, Pw etc.

    /e Und eigentlich ist das unvollständig, man kann sich registrieren und anmelden aber nicht einloggen? Da wäre eine kleine Einführung in Sessions toll gewesen, ich habs mir mit der Anleitung von Php erarbeitet: http://php.net/manual/de/book.session.php
    Geändert von Festplatte (12.04.2015 um 09:58 Uhr)

Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.