02.05.2014, 10:59
(Dieser Beitrag wurde zuletzt bearbeitet: 02.05.2014, 11:00 von DankoJones.)
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:
Das ist der Login meiner Homepage in den ich den Code von oben mit eingesetzt habe.
2. Codes für den MyBBIntegrator die ich mir zusammen gebastelt habe:
Login:
Registration:
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'], null, true);
my_setcookie("sid", $session->sid, -1, true);
$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') ? 1 : 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;
}
?>