Ergebnis 1 bis 9 von 9

Quakenet Loginscript / Anzeige des Formulars

Das ist eine Diskussion über Quakenet Loginscript / Anzeige des Formulars im Ich suche ... Forum; Hallo, Ich habe mich für das Tutorial entschieden und versuche es momentan zu bauen bzw. ein wenig für mich abzuändern: ...

  1. #1
    Neu hier
    Registriert seit
    22.12.2010
    Beiträge
    4

    Standard Quakenet Loginscript / Anzeige des Formulars

    Hallo,

    Ich habe mich für das Tutorial entschieden und versuche es momentan zu bauen bzw. ein wenig für mich abzuändern: Quakenet/#php Tutorial - de - Loginskript

    Datenbankanbindung funktioniert aber hier hab ich ein Problem.

    PHP-Code:
    //register. php
    $ret = array() ;
    $ret['filename']  = 'register.tpl';
    $ret['data'] = array() ;
    if ( 
    'POST' == $_SERVER 'REQUEST_METHOD' ] )  {
        if (!isset (
    $_POST 'vorname' ], $_POST 'nachname' ], $_POST 'strasse' ], $_POST 'plz' ],
                     
    $_POST 'ort' ], $_POST 'username' ], $_POST 'passwort' ], $_POST 'email' ],
                     
    $_POST 'antwort' ], $_POST 'formaction' ] ) )  {
            return 
    INVALID_FORM;
        }
    // [...] 
    Mir wird nur eine leere Seite angezeigt jedoch keine Tabelle wie in dem Tutorial beschrieben und somit können die ganzen Abfragen ja auch nicht in Kraft treten.


    So sieht meine register.tpl aus:
    Code:
    <form id="registrierung"  action="index.
    
    
    	php 
    	
    
    
    ?section=register" method="post">
        <fieldset>
            <legend>Registrierung</legend>
             <label>Vorname: <input id="vorname" type="text"  name="vorname" value="" size="20" maxlength="30" /></label>
             <label>Nachname: <input id="nachname" type="text"  name="nachname" value="" size="20" maxlength="30" /></label>
             <label>Straße: <input id="strasse" type="text"  name="strasse" value="" size="40" maxlength="100" /></label>
            <label>Plz: <input id="plz" type="int" name="plz" value="" size="5" maxlength="5" /></label>
            <label>Ort: <input id="ort" type="text" name="ort" value="" size="20" maxlength="30" /></label>
             <label>Benutzername: <input id="username" type="text"  name="username" value="" size="20" maxlength="30" /></label>
             <label>Passwort: <input id="passwort" type="password"  name="passwort[]" value="" size="20" maxlength="20" /></label>
             <label>Bestätigung: <input id="bestätigung"  type="Password" name="passwort[]" value="" size="20" maxlength="20"  /></label>
            <label>E-
    
    
    	mail 
    	
    
    
    : <input id="email"  type="text" name="email" value="" size="40" maxlength="100"  /></label>
            <label>{Frage}: <input type="text" name="antwort" /></label>
            <input type="submit" name="formaction" value="Registrieren" />
        </fieldset>
    </form>
    ?>
    Ich hab schon eine Ewigkeit gegoogelt, jedoch keine Lösung gefunden. Bin am verzweifeln. Hoffe das mir einer helfen kann.

    Gruß Torga

  2. #2
    Administrator Avatar von Chronos
    Registriert seit
    08.01.2009
    Ort
    127.0.0.1
    Beiträge
    1.909

    Standard

    damit ich da ganz mitkomme

    erscheint die leere seite nur wenn du das Formular abschickst oder sobald du die seite aufrufst?
    wenn 2. wird das template überhaupt eingebunden? also
    PHP-Code:
    $ret['filename']  = 'register.tpl'
    ansonsten, lass mal bitte die leerzeichen weg die du bei den eckigen klammern hast also [ 'name sondern ['name
    Ich höre 10 Stimmen in meinem Kopf, 9 sagen ich sei nicht verrückt, die 10. summt die Melodie von Tetris
    Join us - Starter_Forum@Twitter or join me brokenlinkAT@Twitter
    Kein Support per PN
    brokenlink.at - coming soon

  3. #3
    Neu hier
    Registriert seit
    22.12.2010
    Beiträge
    4
    Themenstarter

    Standard

    Also meine Standard Seite ist:

    index. php

    PHP-Code:
    error_reporting (E_ALL);
    ini_set ('display_errors');

    include 
    'constants. php
    ;
    include 
    'functions. php ;

    $db = new MySQLi 'localhost''Benutzername''Passwort''Tabellenname' );
    $ret 1//Speichert den Rückgabewert von include, Standartwert ist 1
    if (mysqli_connect_errno() )  {
        
    $ret 'Konnte keine Verbindung zur Datenbank aufbauen, MySQL meldete: '  .mysqli_connect_error() ;

    }  else  {

    $section = array();
    $section 'register' ] = 'register. php ';

    include 
    'header. html ';  //kompletter Header
    echo "    <body>\n";

    if ( isset( 
    $_GET'section' ], $section[$_GET['section' ]] )) {
        include 
    $section [$_GET'section' ]];
    }     else {
            include 
    $section 'register' ];
    }
    }

    echo 
    "    </body>\n";
    echo 
    "</html>\n";
    ?> 
    Von dort aus wird direkt die Seite register. php aufgerufen. Mal mein kompletter Code von register. php . Jedoch noch nicht ganz fertig.

    PHP-Code:
    $ret = array() ;
    $ret['filename']  = 'register.tpl';
    $ret['data'] = array() ;
    if ( 
    'POST' == $_SERVER 'REQUEST_METHOD' ] )  {
        if (!isset (
    $_POST 'vorname' ], $_POST 'nachname' ], $_POST 'strasse' ], $_POST 'plz' ],
                     
    $_POST 'ort' ], $_POST 'username' ], $_POST 'passwort' ], $_POST 'email' ],
                     
    $_POST 'antwort' ], $_POST 'formaction' ] ) )  {
            return 
    INVALID_FORM;
        }
        
    //Überprüfung der Passwortfelder
        
    if (!is_array ($_POST 'passwort' ]) OR count ($_POST 'passwort' ]) != 2)  {
        return 
    INVALID_FORM;
        }
        if (
    $_POST 'passwort' ] [0] != $_POST 'passwort' ] [1] )  {
            return 
    'Bitte geben Sie das gleiche Passwort ein.' ;
        }
        
    //Überprüfung ob das Formular vollständig ausgefüllt wurde
        
    if (($vorname trim($_POST 'vorname' ] ) ) == '' OR
                    (
    $nachname trim ($_POST 'nachname' ] ) ) == '' OR
                    (
    $strasse = ($_POST 'strasse' ] ) ) == '' OR
                    (
    $plz trim ($_POST 'plz' ] ) ) == '' OR
                    (
    $ort trim ($_POST 'ort' ] ) ) == '' OR
                    (
    $username trim ($_POST 'username' ] ) ) == '' OR
                    (
    $passwort trim ($_POST 'passwort' ] [0] ) ) == '' OR
                    (
    $email trim ($_POST 'email' ] ) ) == '' OR
                    (
    $antwort trim ($_POST 'antwort' ] ) ) == ''  ) {
                    return 
    EMPTY_FORM;
        }
        
    //Überprüfung der Antwort
        
    if ('' != $antwort)  {
            return 
    'Bitte geben Sie die richtige Antwort an.' ;
        }
        
    //Überprüfung ob der Benutzername den Anforderungen entspricht
        
    if (!preg_match('~\A\S{3,30}\z~' $username) )  {
            return 
    'Der Benutzername darf nur aus 3 bis 30 Buchstaben bestehen und ' 
                     
    'keine Leerzeichen enthalten. ';
        }
        
    //Überprüfung ob der Benutzername schon vorhanden ist
        
    $sql 'SELECT
                            ID
                    FROM
                            register
                    WHERE
                            username = ?
                    LIMIT
                            1' 
    ;
        
    $stmt $db->prepare($sql);
        if (!
    $stmt)  {
            return 
    $db->error ;
        }
        
    $stmt->bind_param ('s' $username ) ;
        
    $stmt->execute () ;
        
    $stmt->store_result () ;
        if (
    $stmt->num_rows)  {
            return 
    'Der Username wird bereits verwendet.' ;
        
    $stmt->close() ;
        
    //Benutzeraccount anlegen
        
    $sql 'INSERT INTO
                        register (username, email) 
                    VALUES (?, ?) ' 
    ;
        
    $stmt $db->prepare($sql) ;
        if (!
    $stmt)  {
            return 
    $db->error ;
        }
        
    $stmt->bind_param 'ss' $username$email);
        if (!
    $stmt->execute())  {
                return 
    $stmt->error ;
        }
        
    $UserID $stmt->insert_id;
        
    $sql 'UPDATE
                        Register
                   SET
                        passwort = ?
                    WHERE
                        ID = ?' 
    ;
        
    $stmt $db->prepare($sql) ;
        if (!
    $stmt)  {
            return 
    $db->error ;
        }
        
    $Hash md5(md5($UserID) .$passwort) ;
        
    $stmt->bind_param 'st' $Hash UserID) ;
        if (!
    $stmt->execute())  {
            return 
    $stmt->error ;
        }
        return 
    showInfo 'Erfolgreich! Sie können sich nun anmelden.' ) ;
        }    
        }
    return 
    $ret;

    ?> 
    Dazu habe ich noch constants. php

    PHP-Code:
    define 'INVALID_FORM' 'Benutzen Sie nur Formulare von der Homepage.' );
    define 'EMPTY_FORM' 'Bitte füllen Sie das Formular vollständig aus.' ); 
    functions. php
    PHP-Code:
    /**
     * Erzeugt ein Array für das Infomessage-Template.
     *
     * Diese Funktion erzeugt eine Array für unsere Templateengine die dann
     * die Infomessage-Template-Datei "info.tpl" läd. Der Parameter gibt
     * dabei die Nachricht an die angezeigt werden soll.
     *
     * @param msg Die Nachricht die angezeigt werden soll.
     * @return Das Array für unsere Templateengine.
     */
    function showInfo($msg) {
        
    $ret = array();
        
    $ret['filename'] = 'info.tpl';
        
    $ret['data'] = array();
        
    $ret['data']['msg'] = $msg;
        return 
    $ret;

    info.tpl

    Code:
    <p class = "info" >
        <?php echo htmlspecialchars ($data[ 'msg' ] ) ; ?>
    </p>
    So das mal zum Überblick.

    Jetzt steht in dem Tutorial:

    Zuerst müssen wir dem Benutzer ein Formular anzeigen welches den Benutzer nach den nötigen Daten wie Username und Password fragt. Daher zeigen wir als erstes das Formular an.

    und dann drunter
    PHP-Code:
    $ret = array();
    $ret['filename'] = 'register.tpl';
    $ret['data'] = array();
    if (
    'POST' == $_SERVER['REQUEST_METHOD']) {
        
    // formular verarbeiten
    }
    return 
    $ret
    bei mir wird jedoch mein Formular nicht angezeigt und geprüft.

    Ich hoffe die zusätzlichen Informationen helfen dir weiter um mir zu helfen.

    Gruß Torga

  4. #4
    Administrator Avatar von Chronos
    Registriert seit
    08.01.2009
    Ort
    127.0.0.1
    Beiträge
    1.909

    Standard

    ich hab es oben editiert. was mir auffällt:

    lass mal bitte die leerzeichen weg die du bei den eckigen klammern hast also [ 'name' ] sondern ['name']

    wie sieht den hier der Link aus den du aufrufst?
    index. php ?section=register denk ich sollt er sein oder damit überhaupt deine register. php included wird

    PHP-Code:
    if ( isset( $_GET'section' ], $section[$_GET['section' ]] )) {
        include 
    $section [$_GET'section' ]];
    }     else {
            include 
    $section 'register' ];
    }

    ich schaus mir morgen nochmal genauer an, sorry muss früh raus
    Ich höre 10 Stimmen in meinem Kopf, 9 sagen ich sei nicht verrückt, die 10. summt die Melodie von Tetris
    Join us - Starter_Forum@Twitter or join me brokenlinkAT@Twitter
    Kein Support per PN
    brokenlink.at - coming soon

  5. #5
    Neu hier
    Registriert seit
    22.12.2010
    Beiträge
    4
    Themenstarter

    Standard

    Hab die Leerzeichen mal entfernt. Kann es aber hier nicht ändern bekomm nämlich die Meldung:

    Forbidden

    You don't have permission to access /editpost. php on this server.


    Zu dem Aufruf. Das:
    PHP-Code:
    include $section ['register']; 
    bezieht sich ja auf:

    PHP-Code:
    $section ['register'] = 'register. php '
    Das heißt das register. php eigentlich schon included sein müsste.

    Gute Nacht. Bis morgen.

  6. #6
    Administrator Avatar von Chronos
    Registriert seit
    08.01.2009
    Ort
    127.0.0.1
    Beiträge
    1.909

    Standard

    ok was einem so alles auffällt wenn man mal wieder bissl schlaf bekommt

    mir fehlt überhaupt das includen des register.tpl file. Du hast zwar am ende ein
    PHP-Code:
    return $ret 
    eingebaut aber was soll es dir zurück geben? in deinem fall gibt es ja das komplette Array $ret zurück, gibt man dieses mal mit nem print_r aus sieht man folgendes

    PHP-Code:
    Array (     [filename] => register.tpl     [data] => Array         (         )  ) 
    Ersetze also einfach mal die letzte Zeile deines register. php mit folgendes
    Suche nach:
    PHP-Code:
    return $ret
    ersetzten durch:
    PHP-Code:
    else{
            include 
    $ret['filename'];
        }
    //return $ret; 
    was haben wir geänder?
    wir erweitern deine IF-Abfrage um ein einfaches Else-Element.
    Aktuell sieht es so aus:
    PHP-Code:
    if ( 'POST' == $_SERVER 'REQUEST_METHOD' ] ) 
    wenn eine POST abgesendet wird erfolg die verarbeitung der in dem Request enthaltenen Variablen. Durch die else-Erweiterung wird wenn dies nicht stattfindet das Template eingebunden damit man überhaupt die Post-Abfrage starten kann.

    Kurz in Worten:
    Wenn (if) POST-Request Dann Abarbeiten der Daten, Ansonsten (else) Anzeige des Template
    Ich höre 10 Stimmen in meinem Kopf, 9 sagen ich sei nicht verrückt, die 10. summt die Melodie von Tetris
    Join us - Starter_Forum@Twitter or join me brokenlinkAT@Twitter
    Kein Support per PN
    brokenlink.at - coming soon

  7. #7
    Neu hier
    Registriert seit
    22.12.2010
    Beiträge
    4
    Themenstarter

    Standard

    Vielen Dank. Jetzt zeigt es mir zumindest das Template an, aber wenn ich etwas eingebe und es abschicke wird nichts in die Datenbank eingetragen bzw. auch gar nichts geprüft es erscheint einfach eine leere weiße Seite. Die Fehlermeldung wie hier:

    PHP-Code:
        //Überprüfung ob das Formular vollständig ausgefüllt wurde
        
    if (($vorname trim($_POST ['vorname'] ) ) == '' OR
                    (
    $nachname trim ($_POST ['nachname'] ) ) == '' OR
                    (
    $strasse = ($_POST ['strasse'] ) ) == '' OR
                    (
    $plz trim ($_POST ['plz'] ) ) == '' OR
                    (
    $ort trim ($_POST ['ort'] ) ) == '' OR
                    (
    $username trim ($_POST ['username'] ) ) == '' OR
                    (
    $passwort trim ($_POST ['passwort'] [0] ) ) == '' OR
                    (
    $email trim ($_POST ['email'] ) ) == '' OR
                    (
    $antwort trim ($_POST ['antwort'] ) ) == ''  ) {
                    return 
    EMPTY_FORM
    die hier definiert ist:

    constants. php

    PHP-Code:
    define 'EMPTY_FORM' 'Bitte füllen Sie das Formular vollständig aus.' ); 
    und auch wie man oben sieht im index. php eingebunden ist. Aber trotz alldem wird mir nur eine weiße Seite angezeigt.

  8. #8
    fox
    fox ist offline
    Administrator Avatar von fox
    Registriert seit
    12.08.2008
    Ort
    In einer Wohnung
    Beiträge
    3.599

    Standard

    Zitat Zitat von Torga Beitrag anzeigen
    Hab die Leerzeichen mal entfernt. Kann es aber hier nicht ändern bekomm nämlich die Meldung:

    Forbidden

    You don't have permission to access /editpost. php on this server.
    Lag an der Firewall des Servers und wurde geändert!
    Du bist zufrieden mit unserer Hilfe? --> Dann setz einen Link zu uns auf deine Seite: Link uns!

  9. #9
    Administrator Avatar von Chronos
    Registriert seit
    08.01.2009
    Ort
    127.0.0.1
    Beiträge
    1.909

    Standard

    pff...ist jetzt schwer zu sagen woran es liegt ohne es genau zu testen
    du könntest sonst auch die überprüfung wie folgt veruschen:

    PHP-Code:
    if(empty(trim($_POST['vorname'])) || empty(trim($_POST['nachname'])).... 
    Ich höre 10 Stimmen in meinem Kopf, 9 sagen ich sei nicht verrückt, die 10. summt die Melodie von Tetris
    Join us - Starter_Forum@Twitter or join me brokenlinkAT@Twitter
    Kein Support per PN
    brokenlink.at - coming soon

Ähnliche Themen

  1. Suche ein PHP Loginscript mit Registrieroption?
    Von Vernichter im Forum Hilfe gesucht!
    Antworten: 21
    Letzter Beitrag: 12.08.2010, 19:55
  2. Sicherer Loginscript mit Ajax?
    Von Ghostrider im Forum Hilfe gesucht!
    Antworten: 10
    Letzter Beitrag: 21.01.2010, 07:30

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •