Hallo, Gast! (Registrieren)

Wir wünschen allen Besuchern frohe und besinnliche Weihnachten!

Letzte Ankündigung: MyBB 1.8.38 veröffentlicht (30.04.24)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
MyBB Integration class / SSO Integration
#1
Hallo,

ich versuche seit einer Woche meine Website (mit eigenem Login) mit dem Mybb Forum Login zu vereinen.

Nach dem ich geschaut habe was man da so an Möglichkeiten hat bin ich auf zwei Sachen gestoßen.

1. SSO Integration
2. MyBBIntegrator


Leider habe ich leichte Verständnissprobleme eine der beiden Möglichkeiten zum laufen zu bringen.

Zu 1. Ist mir nicht ganz klar ob man den Code einfach so in seinen Login mit schreiben/setzen kann und ob ich unter // Modify below here for your needs: alles richtig gemacht habe.

Zu 2. Ich verstehe nicht in welches Verzeichniss die MyBBIntegrator class gehört, ob man dort auch noch etwas ändern muss und wie oder wo man die Codes die ich mir zusammen gebaut habe einsetzen muss.

Aus Mangel an Kenntnissen weiss ich nun leider nicht weiter und möchte hier nach Hilfe fragen.



1. Mein code für die SSO Integration sieht nun so aus:

PHP-Code:
// !! Use w/ caution this logs a user in without a password
// auth is already done above
// You now have the MyBB username currently stored in $name

define('IN_MYBB'1);
// Modify path here for your needs:
require_once '/Forum/global.php'

$query $db->simple_select("users""uid,username,password,salt,loginkey,email,usergroup""username='$name'", array('limit' => 1));
$user $db->fetch_array($query);
my_setcookie('loginattempts'1);
$db->delete_query("sessions""ip='".$db->escape_string($session->ipaddress)."' AND sid != '".$session->sid."'");
$newsession = array(
"uid" => $user['uid'],
);
$db->update_query("sessions"$newsession"sid='".$session->sid."'");

$db->update_query("users", array("loginattempts" => 1), "uid='{$user['uid']}'");

// Temporarily set the cookie remember option for the login cookies
$mybb->user['remember'] = $user['remember'];

my_setcookie("mybbuser"$user['uid']."_".$user['loginkey'], nulltrue);
my_setcookie("sid"$session->sid, -1true);

$plugins->run_hooks("member_do_login_end");

// Modify below here for your needs:
$user$userdata.username;
header"/Forum/member.php?return=$return&status=hello" ) ; 
header ("Content-Length: 0");

 exit; 


Das ist der Login meiner Homepage in den ich den Code von oben mit eingesetzt habe.

PHP-Code:
<?php

if ($page->isPostBack())
{
    if (!isset(
$_POST["username"]) || !isset($_POST["password"]))
        
$page->smarty->assign('error'"Please enter your username and password.");
    else
    {
        
$page->smarty->assign('username'$_POST["username"]);
        
$users = new Users();
        
$res $users->getByUsername($_POST["username"]);
        
$dis $users->isDisabled($_POST["username"]);
        
        if (!
$res)
            
$res $users->getByEmail($_POST["username"]);
        
        if (
$res)
        {
            if (
$dis)
            {
            
$page->smarty->assign('error'"Your account has been disabled.");
            }
            else if (
$users->checkPassword($_POST["password"], $res["password"]))
            {
                
$rememberMe = (isset($_POST['rememberme']) && $_POST['rememberme'] == 'on') ? 0;
                
$users->login($res["ID"], $_SERVER['REMOTE_ADDR'], $rememberMe);

                if (isset(
$_POST["redirect"]) && $_POST["redirect"] != "")
                    
header("Location: ".$_POST["redirect"]);
                else
                    
header("Location: ".WWW_TOP.$page->site->home_link);
                die();
            }
            else
            {
                
$page->smarty->assign('error'"Incorrect username or password.");
            }
        }
        else
        {
            
$page->smarty->assign('error'"Incorrect username or password.");
        }
    }
}

$page->smarty->assign('redirect', (isset($_GET['redirect'])) ? $_GET['redirect'] : '');
$page->meta_title "Login";
$page->meta_keywords "Login";
$page->meta_description "Login";
$page->content $page->smarty->fetch('login.tpl');
$page->render(); 



2. Codes für den MyBBIntegrator die ich mir zusammen gebastelt habe:

Login:
PHP-Code:
<?php
define
('IN_MYBB'NULL);
global 
$mybb$lang$query$db$cache$plugins$displaygroupfields;
require_once 
'/Forum/global.php';
require_once 
'/MyBBIntegrator.php';
$MyBBI = new MyBBIntegrator($mybb$db$cache$plugins$lang$config);

$login_status $MyBBI->login($_POST['username'], $_POST['password']);
if (
$login_status == true) echo 'Logged in successfully';
else echo 
'The login routine failed';
?>


Registration:
PHP-Code:
<?php
define
('IN_MYBB'NULL);
global 
$mybb$lang$query$db$cache$plugins$displaygroupfields;
require_once 
'/path/to/mybb_forum/global.php';
require_once 
'/path/to/MyBBIntegrator.php';
$MyBBI = new MyBBIntegrator($mybb$db$cache$plugins$lang$config);

$info = array(
    
'username' => $_POST['username'],
    
'password' => $_POST['password'],
    
'password2' => $_POST['password_confirm'],
    
'email' => $_POST['email'],
    
'email2' => $_POST['email'],
    
'hideemail' => 1,
    
'allownotices' => 1,
    
'emailpmnotify' => 1,
    
'invisible' => 0,
    
'receivepms' => 1
);

$register_status $MyBBI->register($info);

// Array means: registering failed
if (is_array($register_status))
{
    echo 
implode('<br />'$register_status);
}
else
{
    echo 
$register_status;
}
?>
Zitieren
#2
Ich kenne beides nicht genau, aber wenn du die global.php des Forum sowieso eingebunden hast, dann ist der MyBBIntegrator nicht nötig. Du kannst ja direkt auf die MyBB-Funktionen zugreifen (dazu am besten die member.php anschauen).
Um konkreter zu helfen wäre es interessant zu wissen, was du genau umsetzen willst. Wink
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#3
Hi

ich wollte das beides nicht zusammen nutzen, wollte nur die beiden Möglichkeiten die ich ausprobiert habe und wie weit ich damit gekommen bin zeigen.

Also ich habe eine Homepage die einen eigenen Login besitzt, nun wollte ich die Homepage gerne durch ein Support Forum (fand Mybb dafür ganz gut) erweitern.

Da ich den Usern aber nicht zumuten möchte, sich auf meiner Homepage und im Mybb einen Account anlegen zu müssen, wollte ich gerne das man sich mit den Daten der Homepage auch im Mybb einloggen kann.

LG
Zitieren