Externe Registrierung

Fragen zur Bedienung von phpBB 3.0.x, Probleme bei der Benutzung und alle weiteren Fragen inkl. Update auf die neuste phpBB 3.0.14 Version
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
honkman16
Mitglied
Beiträge: 5
Registriert: 10.11.2006 16:03

Externe Registrierung

Beitrag von honkman16 »

Ich möchte User selber direkt in der DB anlegen. Dies deshalb, da sich die User bei meiner Website registrieren. Der Lösungsansatz PHPBB als Userverwaltung und zur Registrierung zu verwenden geht bei mir leider nicht.

Meine Überlegung war, einfach die entsprechenden Einträge in der MSSQL Datenbank zu erstellen. Allerdings sind mir ein paar Felder nicht ganz klar. Diese sind: user_permissions, user_regdate (Datum ist klar, aber worauf bezieht sich der Zahlenwert), user_password (kann ich hier das kennwort auch clean reinschreiben oder muss ich es verschlüsseln? Wenn ja, wie?).

Gibt es irgendeine sinnvollere Methode einen neuen User von extern anzulegen?

Danke
Honkman
Benutzeravatar
bantu
Server-Team
Beiträge: 7311
Registriert: 25.04.2006 16:12
Wohnort: Karlsruhe

Beitrag von bantu »

phpBB hält bereits Funktionen bereit für derartige Zwecke.

http://area51.phpbb.com/docs/code/
http://olympuswiki.naderman.de/
Powered by Coffee
honkman16
Mitglied
Beiträge: 5
Registriert: 10.11.2006 16:03

Beitrag von honkman16 »

Danke fürs Feedback. Ich habe die Funktion add_user in der doku gefunden. Leider kann ich mit dem Parameter $user_row nicht viel anfangen.

Hättest Du dafür ev. eine Hilfe bzw. einen Hinweis wo ich mehr Informationen dazu finde?

Danke
honkman16
Mitglied
Beiträge: 5
Registriert: 10.11.2006 16:03

Beitrag von honkman16 »

Order anders gefragt: Kann ich das Kennwort unverschlüsselt in die DB schreiben?

Mein Probem ist, dass ich die Applikation auf einem anderen Server habe. Meine Lösungsansatz wäre der, auf dem Server wo das Forum läuft ein Webservice laufen zu lassen, an das ich die Daten des neuen Users übergebe. Das Webservice (SOAP) macht dann nichts anderes als einfach einen neuen Eintrag in der User Tabelle zu erstellen.
honkman16
Mitglied
Beiträge: 5
Registriert: 10.11.2006 16:03

Beitrag von honkman16 »

Meine Lösung:

Ich habe folgenden Beitrag bei php.com gefunden: http://www.phpbb.com/community/viewtopi ... &p=4447455

Dort hat jemand netterweise eine einfache PHP Seite gepostet, mit der man User registrieren kann (einfaches Form). Ich rufe jetzt einfach von meiner WebApp (läuft mit ASP) im Hintergrund dieses Form auf und übergebe die Benutzerdaten. User wird erstellt. Problem gelöst.

Ähnlich werde ich es auch mit dem Ändern der Kennwörter lösen.

Der Code der PHP Seite sieht wie folgt aus:

Code: Alles auswählen

    <?php
    define('IN_PHPBB',true);
    $phpbb_root_path = "./phpBB3/";
    $phpEx = substr(strrchr(__FILE__, '.'), 1);
    require_once( $phpbb_root_path . "common." . $phpEx );
    include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
    include_once($phpbb_root_path . 'includes/functions_user.' . $phpEx);
     
    // Start session management
    $user->session_begin();
    $auth->acl($user->data);
    $user->setup('ucp');
     
    if($user->data['is_registered'])
    {
            meta_refresh(3, append_sid("{$phpbb_root_path}index.$phpEx"));
            trigger_error("You are already registered!");
    }
     
    $submit = request_var('submit', '');
    if($submit)
    {
            // Retrieve default group ID
            $sql = 'SELECT group_id
                    FROM ' . GROUPS_TABLE . "
                    WHERE group_name = '" . $db->sql_escape('REGISTERED') . "'
                            AND group_type = " . GROUP_SPECIAL;
            $result = $db->sql_query($sql);
            $row = $db->sql_fetchrow($result);
            $db->sql_freeresult($result);
     
            if (!$row)
            {
                    trigger_error('NO_GROUP');
            }
            $group_id = $row['group_id'];
            
     
            $data = array(
                    'username'                      => utf8_normalize_nfc(request_var('username', '', true)),
                    'user_password'         => phpbb_hash(request_var('password', '', true)),
                    'user_email'            => strtolower(request_var('email', '')),
                    'group_id'                      => (int) $group_id,
                    'user_type'                     => USER_NORMAL,
                    'user_ip'                       => $user->ip,
            );
            
            $user_id = user_add($data);
     
            if ($user_id === false)
            {
                    trigger_error('NO_USER', E_USER_ERROR);
            }
     
            //Set up welcome message
            if ($config['require_activation'] == USER_ACTIVATION_SELF && $config['email_enable'])
            {
                    $message = $user->lang['ACCOUNT_INACTIVE'];
                    $email_template = 'user_welcome_inactive';
            }
            else if ($config['require_activation'] == USER_ACTIVATION_ADMIN && $config['email_enable'])
            {
                    $message = $user->lang['ACCOUNT_INACTIVE_ADMIN'];
                    $email_template = 'admin_welcome_inactive';
            }
            else
            {
                    $message = $user->lang['ACCOUNT_ADDED'];
                    $email_template = 'user_welcome';
            }
            
            //Display message
            $message = $message . '<br /><br />' . sprintf($user->lang['RETURN_INDEX'], '<a href="' . append_sid("{$phpbb_root_path}index.$phpEx") . '">', '</a>');
            trigger_error($message);
    }
    else
    {
            echo '<form action="./register.php" method="post">
                            Username: <input type="text" name="username" /><br />
                            E-mail address: <input type="text" name="email" size="25" maxlength="100" /><br />
                            Password: <input type="password" name="password" size="25" /><br />
                            <input type="submit" name="submit" value="Submit" />
                            </form>';
    }
    ?>
Einfach die Stellen ändern die man möchte.
honkman16
Mitglied
Beiträge: 5
Registriert: 10.11.2006 16:03

Beitrag von honkman16 »

gefunden hab ichs natürlich bei phpbb.com und nicht bei php.com ... kleiner Tippfehler.
Antworten

Zurück zu „[3.0.x] Administration, Benutzung und Betrieb“