Hallo, Gast! (Registrieren)

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


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
Benutzerregistrierung von MyBB einbinden
#1
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:
   
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:
   
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?
Eine Homepage ist nie fertig, man hört nur auf an ihr zu arbeiten - Unbekannter Verfasser
#2
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();


Gruß,
Michael
[Bild: banner.png]
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
#3
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...
Eine Homepage ist nie fertig, man hört nur auf an ihr zu arbeiten - Unbekannter Verfasser
#4
Es sollte per GET gehen, also über die URL: login.php?action=x.

Gruß,
Michael
[Bild: banner.png]
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.