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
[HowTo]Von HP auf Forum Daten zugreifen
#1
Diesmal ein Tutorial, wie man von seiner Homepage auf die Daten des Forums zugreift, um z.B. eine eigene Loginmaske oder ein Usermenü zu erstellen.


  1. Foren Daten einbinden
    1. Wer ist online Liste
  2. $mybb
  3. Beispiel Usermaske
  4. Hinweise
    1. Sicherheit
    2. Wartungsmodus
  5. Fehler




1. Foren Daten einbinden
Mit folgendem Code werden die wichtigsten Methoden und Variablen von MyBB eingebunden, dazu diesen einfach an den Anfang der Datei einfügen:

PHP-Code:
chdir('./forum/'); //Der Pfad zu deinem Forum
define("IN_MYBB"1);
require_once 
'/forum/global.php'//Die wichtigste Datei von MyBB einbinden 


1.1. Wer ist Online Liste
Eine Möglichkeit wie man das Problem lösen kann findet sich hier, allerdings funktioniert dies nich bei allen Seiten



2. $mybb
Die wohl wichtigste Variable, die eingebunden wird, ist $mybb, da in dieser sowohl Daten über das Forum(Version...) und den User(ID, Name...) enthalten sind.
Um eine Auflistung aller gespeicherten Daten in dem Array zu erhalten einfach folgenden Code in die Datei kopieren:

PHP-Code:
echo '<pre>';
var_dump($mybb);
echo 
'</pre>'

Und nicht wundern wenn die Seite plötzlich sehr lang ist, es sind halt sehr viele Dateien vohanden.



3. Beispiel Usermaske
Um mal ein kleines Beispiel zu zeigen, was man mit $mybb machen kann, wird hier eine Usermaske entwickelt, welche entweder ein Loginformular zeigt oder Links zu UCP, MCP, ACP etc.

Zuerst brauchen wir eine unterscheidung, ob der User eingeloggt ist oder nicht:

PHP-Code:
if($mybb->user['uid'])  
{
   
//User ist eingellogt
} else {
   
//User ist nicht eingellogt


Nun kommt ein einfaches Formular hinzu, dass angezeigt wird, wenn der User nicht eingellogt ist:

PHP-Code:
    $site pathinfo($_SERVER['REQUEST_URI'], PATHINFO_BASENAME); //Aktuelle Seite auslesen 
?>
<form action="./forum/member.php" method="post"> <!-- Formular soll beim Absenden an die Datei member.php von dem Forum gesendet werden -->
                <table border="0">
                    <tr>
                        <td>Username:</td>
                        <td><input type="text" name="username" size="10" maxlength="30"></td>
                    </tr>
                    <tr>
                        <td>Password:</td>
                        <td><input type="password" name="password" size="10"></td>
                    </tr>
                    <tr>
                           <td><input type="checkbox" id="quick_login_remember" name="quick_remember" value="yes">Merken?</td>
                          <td><input type="submit" class="submit" name="submit" value="Login"></td>
                        <td><input type="hidden" name="action" value="do_login"></td>
                        <td><input type="hidden" name="url" value="../<?php echo $site?>"></td> <!-- Auf die eben ausgelesene Datei soll wieder zurückgeleitet werden. Achtung: in diesem Fall liegt die Datei einen Ordner über dem Forum -->
                    </tr>
                </table>
            </form>
            <a href="./forum/member.php?action=register">Registrieren</a> <!-- Einfacher Link auf die Registrieren Seite --> 

Falls der User bereits eingellogt ist einfach die Links, die eigentlich in der Willkommensbox stehen ausgeben:

PHP-Code:
$titel $mybb->user['usertitle']; //Den Titel des Users auslesen
if ($titel == '') {
    if (
$mybb->user['usergroup'] == '2') {
        
$titel 'Registriert'//Falls keiner gesetzt ist und er Registriert ist, nehmen wir einfach einen (es gibt auch eine Möglichkeit seinen Anzeigetitel auszulesen)
    
}
}
echo 
'<a href="./forum/member.php?action=profile&uid='.$mybb->user['uid'].'">'.$mybb->user['username'].'['.$titel.']</a><br />'//Seinen Namen auf sein Profil verlinken
echo '<a href="./forum/usercp.php">Benutzer-CP</a><br />';  //Den Link zum UCP
if(is_moderator())
    echo 
'<a href="./forum/modcp.php">Moderator-CP</a><br />'//Falls Moderator den Link zum MCP
if($mybb->usergroup['cancp'] == 1)
    echo 
'<a href="./forum/admin/index.php">Admin-CP</a><br />'//Falls Admin den Link zum ACP
echo '<a href="./forum/member.php?action=logout&logoutkey='.$mybb->user['logoutkey'].'">Abmelden</a>'//Den Logoutkey an die entsprechende Datei übergeben
echo '<hr>';
echo 
'<a href="./forum/search.php?action=getnew">Neue Beitr&auml;ge</a><br />';
echo 
'<a href="./forum/search.php?action=getdaily">Heutige Beitr&auml;ge</a><br />';  //Links zur Suche
echo '<a href="./forum/private.php">PN\'s('.$mybb->user['unreadpms'].'/'.$mybb->user['totalpms'].')</a><br />';  //Anzeigen ungelesene/gesamte PN's 



4. Hinweise


4.1. Sicherheit
-Alle Codes sind nur Beispielcodes und haben keinerlei Sicherheitsüberprüfungen implementiert!!!


4.2. Wartungsmeldung
Alle so eingebundenen Dateien zeigen automatisch die Wartungsmeldung des Forums an, falls dieses gesperrt ist. Es gibt eine Möglichkeit dieses zu umgehen, allerdings geht das über dieses Tutorial hinaus



5. Fehler
Mögliche Fehler:
-Datei liegt ausserhalb des Cookie Pfades des Forums (im ACP einstellbar)



Bei Fragen & Problemen stehe ich natürlich gerne zur Verfügung
Zitieren
#2
Also, ich hab das hier schon vor etwas längerer Zeit mal einsetzen wollen allerdings gab es immer wieder Probleme mit den Cookies und den Variablen.

Zum Cookie Problem:
Also lasse ich den Cookiepfad, wie er nach der Installation ist(/community/) kann man sich auf der Seite nicht einloggen(logisch. xD), aber stelle ich ihn auf den Pfad der Homepage(also /) um, kann man sich Forum nicht mehr einloggen bzw. ausloggen, falls man schon eingeloggt ist.
Gäbe es da ne richtige Einstellung für?

Wegen den Variablen:
Ich bekomme immer nur eine 1 als Ausgabe egal welcher Nutzer ich bin, nur Dinge wie "$settings[bburl]" werden richtig umgewandelt.
Kann mir wer sagen, was ich genau falsch mach?
Zitieren
#3
Versuche mal bei solchen Cookie-Änderungen auch ein neues Cookie-Prefix zu verwenden. Meistens schwirren sonst noch irgendwo alte Cookies rum die aufgrund unterschiedlicher Pfade dann auch nicht aktualisiert/gelöscht werden und das führt dann zu Login/Logout-Problemen.

Mit einem neuen Prefix sind die alten Cookies zwar auch immer noch da, werden dann aber ignoriert...
Zitieren
#4
Oder einfach die cookies löschen (sollte immer gemacht werden nachdem in den cookie einstellungen etwas geändert wurde).

An sich gibt es 2 einstellungen für die cookies, wie ich selber die geändert habe weiß ich aus dem kopf jetzt nicht müsste ich heute abend nachgucken.
Zitieren