Einbau eines externen Logins - mal wieder

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB 3.0.x oder dem Modifizieren des eigenen Forums auftauchen.
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
d-nono
Mitglied
Beiträge: 4
Registriert: 25.10.2009 15:22

Einbau eines externen Logins - mal wieder

Beitrag von d-nono »

Hallo Communitiy,

ich weiß das viele diesen Beitrag mit dem Gedanken "schon wieder!!" öffnen werden und danke euch dafür, das ihr euch dem trotzdem annehmt.
Ich habe schon "einige" Beiträge zu diesem Thema gelesen und auch einiges umgesetzt, dabei ist folgendes rausgekommen:

Meine phpBB-version ist 3.0.4.
Ich habe eine externe Registrierung, die auch schon wunderbar funktioniert.
Nutzern wird beim Aufruf der Seite mit dem im iframe eingebetteten Forum eine Zeile in der MySQL-Tabelle "phpbbForum_sessions" erstellt.

Problem:
Trotz der Zeile in "phpbbForum_sessions" gilt der Benutzer danach im Forum nicht als eingeloggt.


Was ich will:
Ich habe in eine Site, auf der schon ein Benutzermanagement existiert, das phpBB-Forum per iframe eingebunden.
Damit Nutzer sich nicht zweimal registrieren müssen und sich nicht immer zweimal einloggen müssen, soll dies automatisch gehen.

Mithilfe dieser Funktionen werden Nutzer registriert:

Code: Alles auswählen

<?php
    define('IN_PHPBB', true);
function createSqlDataArray($username, $password, $email)
   {
      $username_clean = strtolower($username);
      if ($username_clean == FALSE)
      	echo 'FALSE';
      $sql_ary = array(
            'username'         => $username,
            'user_regdate'      => time(),
            'username_clean'   => $username_clean,
            'user_password'      => $password,
            'user_passchg'      => time(),
            'user_email'      => strtolower($email),
            'user_email_hash'   => crc32(strtolower($email)) . strlen($email),
            'group_id'         => 2,
            'user_dateformat'   => 'D M d, Y g:i a',
            'user_lang'         => 'de_x_sie',
            'user_style'      => 1,
            'user_form_salt'   => unique_id_own($username, $password, $email),
         );      
         return $sql_ary;
   }   
   
function unique_id_own()
{
	substr(md5($username.time()),4 ,16);
}

function createSQL($sql_ary)
   {
      $sqlString='INSERT INTO  `usr_web802_2`.`phpbbForum_users`
      (
         `group_id`,
         `user_ip`,
         `user_regdate`,
         `username`,
         `username_clean`,
         `user_password`,
         `user_passchg`,
         `user_email`,
         `user_email_hash`,
         `user_lang`,
         `user_style`,
         `user_dateformat`,
         `user_form_salt`
      )
      
      VALUES(
      '.$sql_ary['group_id'].',
      "127.0.0.1",
      "'.$sql_ary['user_regdate'].'",
      "'.$sql_ary['username'].'",
      "'.$sql_ary['username_clean'].'",
      "'.$sql_ary['user_password'].'",
      "'.$sql_ary['user_passchg'].'",
      "'.$sql_ary['user_email'].'",
      "'.$sql_ary['user_email_hash'].'",
      "'.$sql_ary['user_lang'].'",
      "'.$sql_ary['user_style'].'",
      "'.$sql_ary['user_dateformat'].'",
      "'.$sql_ary['user_form_salt'].'"   
      );';
      
      return $sqlString;
}

function getGroupSQL($userId)
{
      return `usr_web802_2`.'INSERT INTO phpbbForum_user_group (group_id, user_id, group_leader, user_pending) VALUES(2, '.$userId.',0,0);';   
}
Und so sollen Nutzer eingeloggt werden:
(Die Variablen $loginName und $pw wurden vorher definiert)

Code: Alles auswählen

define('IN_PHPBB', true);
    $phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : '../forum/phpBB3/';
    $phpEx = substr(strrchr(__FILE__, '.'), 1);
    require('../forum/phpBB3/common.php');

    // Start session management
    $user->session_begin();
    $auth->acl($user->data);
    $user->setup();
    
    // Einloggen
    $password	= $pw;
    $autologin  = true;
    $viewonline = 1;
    $success = ($auth->login($loginName, $password, $autologin, $viewonline));
Eine Zeile in der Session-Tabelle sieht z.B. so aus:
session_id : 29bde85f47501801089d13cbcd80b258
session_user_id : 1
session_forum_id : 0
session_last_visit : 1256310510
session_start : 1256310510
session_time : 1256310510
session_ip : 127.0.0.1
session_browser : Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.4) G...
session_forwarded_for :
session_page : index.php
session_viewonline : 1
session_autologin : 0
session_admin : 0

Ich hoffe ich habe nichts vergessen ;)
Vielen Dank schonmal im Voraus,

d-nono


EDIT: Tut mit leid das ich erst im falschen Forum war. Habe noch etwas bemerkt: phpBB zeigt an, dass ein registrierter Nutzer online ist, nachdem ich mich angemeldet habe. Aber die Funktionen kann ich trotzdem nicht nutzen, und es steht immer noch "Anmelden" / "Registrieren" da.
d-nono
Mitglied
Beiträge: 4
Registriert: 25.10.2009 15:22

Re: Einbau eines externen Logins - mal wieder

Beitrag von d-nono »

Kann es sein, dass es nicht reicht, nach dem vermeintlichen Login einfach per php- header()-Weiterleitung auf das Forum zuzugreifen? Muss ich die Oberfläche vllt. noch irgendwie initialisieren?
d-nono
Mitglied
Beiträge: 4
Registriert: 25.10.2009 15:22

Re: Einbau eines externen Logins - mal wieder

Beitrag von d-nono »

Habe das Problem jetzt folgendermaßen umgangen:

Habe die Funktion:
PHPBB Root Path / includes / functions.php

...so umgeschrieben, dass das Passwort im Forum nun dasselbe ist wie das der Site. Über dem Forum-<iframe> steht jetzt:
Ihr könnt euch mit eurem Benutzernamen und eurem Passwort in das Forum einloggen!

Ist natürlich nicht das Gelbe vom EI, aber wenigstens eine Lösung. Wenn jemand trotzdem eine Ahnung hat wie das alles funktionieren könnte wäre das super!
schumiel
Mitglied
Beiträge: 131
Registriert: 27.10.2009 12:58

Re: Einbau eines externen Logins - mal wieder

Beitrag von schumiel »

Über Google findet man zahlreiche Lösungen. Ich bekomme es damit auch nicht hin. Lediglich wird der Benutzer in "Wer ist online?" angeziegt, aber automatisch eingeloggt wird man nicht. :(

Ich bin ebenso nach wie vor über jede Lösung dankbar.
Antworten

Zurück zu „[3.0.x] Mod Bastelstube“