Seite 1 von 1

Externe Registrierung

Verfasst: 01.03.2008 18:48
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

Verfasst: 01.03.2008 18:58
von bantu
phpBB hält bereits Funktionen bereit für derartige Zwecke.

http://area51.phpbb.com/docs/code/
http://olympuswiki.naderman.de/

Verfasst: 01.03.2008 22:04
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

Verfasst: 01.03.2008 22:14
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.

Verfasst: 02.03.2008 17:56
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.

Verfasst: 02.03.2008 17:57
von honkman16
gefunden hab ichs natürlich bei phpbb.com und nicht bei php.com ... kleiner Tippfehler.