MyBB.de Forum

Normale Version: Benutzerregistrierung von MyBB einbinden
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo ich hab die Benutzerregistrierung von MyBB in meine Homepage für den Mitgliederbereich (in dem sich das Forum befindet) eingebaut.
Dabei hab ich folgenden Aufbau für meine login.php :
PHP-Code:
<?php
include('inc/config.php');
chdir('mitglieder/forum'); // path to MyBB
require './global.php';

if(
$mybb->user['uid']){
  
// hier steht was passiert wenn der Benutzer angemeldet ist
}
else{
  
// hier folgt was passiert wenn der Benutzer sich anmelden muss
  
include('../../inc/header.php');
  echo 
"<body bgcolor=\"$hintergrund2\">\n";
  echo 
"<center>\n";
  echo 
"<table width=\"400\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n";
  echo 
"<tr>\n";
  echo 
"<td>\n";
  echo 
"<br/><br/><center><h1>Zugang zum Mitgliederbereich der Rotenh&auml;ne</h1></center><br/><br/>\n";
  echo 
"<h2>Passworteingabe:</h2><br/>\n";
  echo 
"</td>\n";
  echo 
"</tr>\n";
  echo 
"</table>\n";
  echo 
"<table width=\"400\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n";
  echo 
"<tr>\n";
  echo 
"<td valign=\"top\" width=\"75\">\n";
  
// Eingabe der Benutzerdaten
  
echo "<form action='mitglieder/forum/member.php' method='post'>\n";
  echo 
"Username:\n";
  echo 
"</td>\n";
  echo 
"<td valign=\"top\">\n";
  echo 
"<input type='text' name='username' size='25' maxlength='30' /><br /><br/>\n";
  echo 
"</td>\n";
  echo 
"</tr>\n";
  echo 
"</table>\n";
  echo 
"<table width=\"400\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n";
  echo 
"<tr>\n";
  echo 
"<td valign=\"top\" width=\"75\">\n";
  echo 
"Passwort:\n";
  echo 
"</td>\n";
  echo 
"<td valign=\"top\">\n";
  echo 
"<input type='password' name='password' size='25' />\n";
  echo 
"</td>\n";
  echo 
"</tr>\n";
  echo 
"</table>\n";
  echo 
"<table width=\"400\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n";
  echo 
"<tr>\n";
  echo 
"<td align=\"center\">\n";
  echo 
"<br/>\n";
  echo 
"<input type='hidden' name='action' value='do_login'>\n";
  echo 
"<input type='hidden' name='url' value='../../login.php".$screen."' />\n";
  echo 
"<input type='submit' class='submit' name='submit' value='Login' /></form><br /><br/><br/>\n";
  echo 
"</td>\n";
  echo 
"</tr>\n";
  echo 
"</table>\n";
  echo 
"<table width=\"400\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n";
  echo 
"<tr>\n";
  echo 
"<td>\n";
  echo 
"<center><h2>Username und Passwort des Forums verwenden!</h2><br/>\n";
  echo 
"<a href=\"register.php$screen\">Registrieren - NUR F&Uuml;R ROTENH&Auml;NE</a>\n";
  echo 
"</center>\n";
  echo 
"</td>\n";
  echo 
"</tr>\n";
  echo 
"</table>\n";
  echo 
"</center>\n";  
  echo 
"</body>\n";
  echo 
"</html>\n";  
};
?>
Das funktioniert auch soweit und sieht so aus:
[attachment=566]
Aber nur wenn die Gruppe "Gast" das Recht besitzt die Foren anzusehen, was ich natürlich nicht will, da das Forum nur für die Mitglieder ist (Wenn man sich mit einem falschen Benutzernamen oder Passwort anmeldet kann man die Beiträge sehen).
Wenn die Gruppe Gast dieses Recht nicht besitzt, dann kommt das:
[attachment=565]
Kann ich das irgendwie umgehen - die Abfrage ob ein Benutzer (indem Fall der Gast) die Foren sehen darf bzw. was passiert wenn nicht? Oder wie kann ich $mybb->input['action'] = "login" setzen , da so ja das nopermissions(); umgangen wird?
Durch eine kleine Änderung in der global.php kannst du das Problem umgehen.

Öffne die Datei global.php und suche nach:
PHP-Code:
if($mybb->usergroup['canview'] != "yes" && $mybb->input['action'] != "register" && $mybb->input['action'] != "do_register" && $mybb->input['action'] != "login" && $mybb->input['action'] != "do_login" && $mybb->input['action'] != "logout" && $mybb->input['action'] != "regimage")
{
    
nopermission();

Ersetzen durch:
PHP-Code:
if(basename($_SERVER['PHP_SELF']) != "login.php") {
    if(
$mybb->usergroup['canview'] != "yes")
    {
    
nopermission();
    }
}

if(
$mybb->input['action'] != "register" && $mybb->input['action'] != "do_register" && $mybb->input['action'] != "login" && $mybb->input['action'] != "do_login" && $mybb->input['action'] != "logout" && $mybb->input['action'] != "regimage")
{
    
nopermission();

Danke.
Allerdings musste ich die ganze if-Abfrage in die neue einbinden, da sonst genau das gleiche wie davor passierte.
PHP-Code:
if(basename($_SERVER['PHP_SELF']) != "login.php") {
    if(
$mybb->usergroup['canview'] != "yes" && $mybb->input['action'] != "register" && $mybb->input['action'] != "do_register" && $mybb->input['action'] != "login" && $mybb->input['action'] != "do_login" && $mybb->input['action'] != "logout" && $mybb->input['action'] != "regimage")
{
    
nopermission();
}

Kann man den Wert $mybb->input['action'] nicht von ausserhalb setzen? Das wäre auf jedenfall eine elegantere Lösung...
Es sollte per GET gehen, also über die URL: login.php?action=x.