Externer Login/Memberbereich |
|
Titel: Externer Login/Memberbereich
Version: 0.1
Beschreibung: Hallo,
ich habe mich jetzt mal hingesetzt und einen externen Login für das WBB 2.3.5 geschrieben.
Mit dem Hack könnt ihr einen externen Mitgliederbereich, sowie Login realisieren.
Ihr müsst nur
- den relativen Pfad zum Forum von der Webseite aus
- den relativen Pfad zur Webseite vom Forum aus
- die MySQL-Verbindungsdaten
- die Boardnr der DB-Tabellen angeben
angeben und schon kann es losgehen!
Besonderheiten
- funktioniert mit und ohne Cookies (über SID)
- allgemeine Prüfung ob Benutzer eingeloggt ist möglich
- nur 2 Foren-Dateien müssen geändert werden
Achtung
Da die früheren Cookies eine Pfadangabe beinhalten sind sie für den Pfad der Page nicht gültig.
Daher gilt: Alle Cookies, die nachdem ihr im ACP die Cookie-Angaben so eingestellt habt, wie in der Install.txt steht, erstellt werden, können auch von dem Script gelesen und ausgewertet werden!
----
weiter zum Download
__________________ Mfg
Niemand Nr.1
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Niemand Nr.1: 16.09.06 21:28.
|
|
16.09.06 17:34 |
E-Mail
Finden
Als Freund hinzufügen
|
|
MastaG
Mitglied
Dabei seit: 05.02.04
Beiträge: 123
|
|
moin,
hab das Ding mal getestet hab mir das anders vorgestellt (ähnlich wie ne newsseite)
folgendes: Wenn man bereits eingeloggt ist kommt folgende fehlermeldung:
Ihnen wird der Zutritt zu dieser Seite verwehrt.
Aus einem der folgenden Gründe fehlt Ihnen die Berechtigung, diese Seite zu betreten:
* Sie sind im Forum nicht angemeldet. Einige Bereiche und Funktionen im Forum sind nur für angemeldete Benutzer zugänglich. Bitte nutzen Sie die Eingabemöglichkeit auf dieser Seite, um sich anzumelden. Falls Sie nicht registriert sind, können Sie dies hier tun.
* Ihr Benutzeraccount könnte gesperrt worden sein. Melden Sie sich gegebenenfalls ab und kontaktieren den zuständigen Administrator.
* Es gibt Bereiche im Forum, die bestimmten Benutzern vorbehalten sind. Sie haben möglicherweise versucht einen solchen Bereich zu betreten.
Angemeldet als: MastaG [abmelden]
---------------
Wenn man nicht eingeloggt ist kommt Vielen dank für ihre anmeldung und man steht wieder beim login... also irgendwas läuft da falsch
__________________
? Du liest wohl gerne Signaturen, oder ?
|
|
16.09.06 18:50 |
E-Mail
Finden
Als Freund hinzufügen
|
|
Niemand Nr.1
Mitglied
Dabei seit: 18.01.04
Beiträge: 13
Themenstarter
|
|
Hi,
zu 1.) wo möchtest du die main.php includen? und wo wird die überprüfung includiert?
probiers mal mit den original Dateien. kommt der fehler dann immernoch?
zu 2.) du musst ganz oben in deinen dateien einen FILENAME definieren: define(FILENAME, 'main.php'); dieser muss immer den namen deiner datei haben.
Wenn deine Datei nun members.php heißt, muss der define also folgendermaßen lauten: define(FILENAME, 'members.php');
__________________ Mfg
Niemand Nr.1
|
|
04.10.06 22:12 |
E-Mail
Finden
Als Freund hinzufügen
|
|
bodehold
Mitglied
Dabei seit: 17.03.04
Beiträge: 6
|
|
Also ich habe folgende Struktur:
Ordner:
forum
lib (da die dateien des hacks)
Dateien:
index.php
main.php
Die main.php wird ganz normal in die index.php includiert. Allerdings kommt der Fehler auch nur dann, wenn ich die include. Gehe ich ganz normal auf die main.php, dann kommt die Fehlermeldung nich.
zu 2.)
Also bestimmt die Datei die ich da eintrage, wohin ich dann weitergeleitet werde?
Vielen Dank für die schnelle Hilfe...
|
|
04.10.06 23:28 |
E-Mail
Finden
Als Freund hinzufügen
|
|
Niemand Nr.1
Mitglied
Dabei seit: 18.01.04
Beiträge: 13
Themenstarter
|
|
Schau mal, ob in der index.php irgendetwas ausgegeben wird!
Wenn nicht, schaue am anfang der index.php, ob dort ein Leerzeichen vor dem <? steht. Das gleiche gilt für das Ende mit ?>: Steht dahinter noch ein leerzeichen oder eine Leerzeile?
Es darf kein HTML-Code oder sonstiges vorher ausgeführt werden.
auch ein
<?php
...
?> ich bin <?php
...
?>
darf nicht sein, denn dann würde das " ich bin " als HTML-Ausgabe ausgegeben werden!
Wohin du nach deinem Login/Logout weitergeleitet wirst, bestimmt der Parameter "pageurl", welcher zusätzlich nochmal base64 encoded ist.
php: |
1:
|
<input type="hidden" name="pageurl" value="' . base64_encode(PAGEURL . '/' . FILENAME) .'" /> |
|
gib innerhalb von base64_encode() ne andere URL an und schon wirst du dorthin weitergeleitet!
__________________ Mfg
Niemand Nr.1
|
|
05.10.06 20:25 |
E-Mail
Finden
Als Freund hinzufügen
|
|
Niemand Nr.1
Mitglied
Dabei seit: 18.01.04
Beiträge: 13
Themenstarter
|
|
Hi,
das geht ganz einfach:
Nehmen wir an, der User registriert sich, loggt sich ein und wird auf deine Startseite weitergeleitet.
Nun soll er anstatt deren Inhalt einen Hinweis sehen, dass er erst freigeschaltet werden muss.
===============
1. Gehe ins ACP des Forums und lass dir die Benutzergruppen anzeigen.
2. Ganz links steht die ID der Benutzergruppe. Die IDs der Benutzergruppen Gäste, Standardgruppe für nicht aktivierte User und Standardgruppe für gesperrte User brauchst du. Bei mir ist das: 5,6,7
3. Füge nun in deine Startseite (bei mir: main.php) eine Überprüfung auf die Benutzergruppe ein. Dazu gibt es ja die Variable $wbbuserdata mit den Benutzergruppen im Array:
php: |
1:
2:
3:
4:
|
if( in_array(5, $wbbuserdata['groupids']) || in_array(6, $wbbuserdata['groupids']) || in_array(7, $wbbuserdata['groupids']) ) {
echo 'Sorry, du musst erst freigeschalten werden oder aber dein Account wurde gesperrt oder: Du bist noch gar nicht registriert!';
exit;
} |
|
Das sollte dann aber nicht nur in der Startseite enthalten sein, sondern in allen Seiten, welche davon betroffen sind.
Hoffe, ich konnte dir weiterhelfen.
__________________ Mfg
Niemand Nr.1
|
|
11.11.06 13:01 |
E-Mail
Finden
Als Freund hinzufügen
|
|
zugo
Mitglied
Dabei seit: 01.11.06
Beiträge: 31
Forenversion: 2.3
|
|
Hallo Niemand Nr.1,
erst mal vielen Dank für die schnelle Antwort,
ich habe es mal mit der Beispielsdatei main.php aus dem Download versucht.
Gebe ich dort aber
code: |
1:
2:
|
if( in_array(5, $wbbuserdata['groupids']) || in_array(6, $wbbuserdata['groupids']) || in_array(7, $wbbuserdata['groupids']) ) { echo 'Sorry, du musst erst freigeschalten werden oder aber dein Account wurde gesperrt oder: Du bist noch gar nicht registriert!'; exit; }
|
|
z.B. in derfolgenden Position ein:
code: |
1:
|
:://Pruefe, ob der Benutzer eingeloggt ist//check.php ist abgewandelte session.phprequire_once('./lib/check.php');if( in_array(5, ($wbbuserdata['groupids'])) || ...............................//Ist benutzer eingeloggt:: |
|
bekomme ich bei Aufruf von
main.php über mein browser folgende Meldungen
Warning: in_array() [function.in-array]: Wrong datatype for second argument in /mnt/cr1/08/546/00000013/htdocs/page/main.php on line 33
Warning: in_array() [function.in-array]: Wrong datatype for second argument in /mnt/cr1/08/546/00000013/htdocs/page/main.php on line 33
Warning: in_array() [function.in-array]: Wrong datatype for second argument in /mnt/cr1/08/546/00000013/htdocs/page/main.php on line 33
Was mache ich falsch?
__________________
|
|
12.11.06 14:03 |
E-Mail
WWW
Finden
Als Freund hinzufügen
|
|
Niemand Nr.1
Mitglied
Dabei seit: 18.01.04
Beiträge: 13
Themenstarter
|
|
Dann ist die Variable $wbbuserdata nicht belegt.
Mach folgendes:
Das aus meinem vorherigen Beitrag änderst du um:
php: |
1:
2:
3:
4:
|
if( in_array(5, $wbbuserdata['groupids']) || in_array(6, $wbbuserdata['groupids']) || in_array(7, $wbbuserdata['groupids']) ) {
echo 'Sorry, du musst erst freigeschalten werden oder aber dein Account wurde gesperrt oder: Du bist noch gar nicht registriert!';
exit;
} |
|
Und zwar in das:
php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
|
//Variable loeschen
unset($isError);
//Pruefen, ob uberhaupt Benutzergruppen angegeben sind. Wenn nicht --> nicht eingeloggt
if( is_array($wbbuserdata['groupids']) ) {
//Pruefe, ob Benutzer Mitglied in einer dieser Gruppen
//Wenn ja, dann setze Variable auf TRUE
if( in_array(5, $wbbuserdata['groupids']) || in_array(6, $wbbuserdata['groupids']) || in_array(7, $wbbuserdata['groupids']) ) {
$isError = true;
}
}
//Keine Benutzergruppen = nicht eingeloggt
else {
$isError = true;
}
//Benutzer ist nicht eingeloggt / Mitglied einer der Benutzergruppen (5,6,7)
if( $isError ) {
echo 'Sorry, du musst erst freigeschalten werden oder aber dein Account wurde gesperrt oder: Du bist noch gar nicht registriert!';
exit;
} |
|
__________________ Mfg
Niemand Nr.1
|
|
12.11.06 16:14 |
E-Mail
Finden
Als Freund hinzufügen
|
|
Kesandal
Mitglied
Dabei seit: 13.04.04
Beiträge: 7
Forenversion: 2.3
|
|
Hallo zusammen,
ansich funktioniert das Login bei mir Problemlos...
Nun wollte ich aber folgendes machen (vereinfacht):
php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
|
include("./include/login.php");
if($wbbuserdata['userid']) {
//JA
echo '<div id="login">Willkommen <span style="font-weight:bold; color: white;">'.$wbbuserdata['username'].'</span>';
// Was angezeigt werden soll wenn User zusätzich noch Admin oder Mod ist....
if($wbbuserdata['a_can_use_acp']==1 && $wbbuserdata['a_acp_or_mcp']==1)
{
echo "Sie sind Administrator!";
}
else
{
echo "Sie sind normales Mitglied! ";
}
echo '</div>';
}
} |
|
Ich wollte es noch so machen, dass wenn der User Mod / Admin ist etwas zusätzlich angezeigt werden soll..
Habe es hier vereinfacht mit nur einem "echo"...
Jedoch wird bei mir obwohl ich Admin bin "sie sind normales mitglied" Angezeigt...
Das müsste doch eigentich klappen oder ?
Gruß,
Kesa
|
|
11.02.07 16:11 |
E-Mail
Finden
Als Freund hinzufügen
|
|
Niemand Nr.1
Mitglied
Dabei seit: 18.01.04
Beiträge: 13
Themenstarter
|
|
Hallo Kesandal,
mach mal bitte in dein Script folgendes rein:
php: |
1:
2:
3:
|
echo '<pre>';
print_r($wbbuserdata);
exit; |
|
Dann siehst du alle Werte, die $wbbuserdata enthält.
Hier sind keine Gruppenrechte enthalten.
Wie die Funktion für das Auslesen der Gruppenrechte heißt, weiß ich grad nicht und kann ich im Moment leider auch nicht nachschauen, da ich auf'm Sprung bin.
Aber du kannst ja selbst mal suchen und ich werd mich später auch nochmal schlau machen.
Auf das der Schnellere es hier Antworte... und LOS!
__________________ Mfg
Niemand Nr.1
|
|
11.02.07 17:55 |
E-Mail
Finden
Als Freund hinzufügen
|
|
Niemand Nr.1
Mitglied
Dabei seit: 18.01.04
Beiträge: 13
Themenstarter
|
|
Hi,
hab deine Mail erhalten und mich eben nochmal hingesetzt.
Hier die Lösung:
Ich hab in der MySQL-Abfrage das Feld gc.data versehentlich rausgenommen und daher wurden die Rechte nicht mehr mitgeliefert und in das Array $wbbuserdata eingespeichert.
Hier nun die neue function getwbbuserdata:
php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
|
function getwbbuserdata($id, $bywhat = 'userid', $issession = 0) {
global $db, $n;
$wbbuserdata = array();
$variables = array();
$groupids = array();
if ($issession == 0) $wbbuserdata = $db->query_first("SELECT uf.*,u.*,gc.groupids,gc.data FROM bb".$n."_users u LEFT JOIN bb".$n."_groupcombinations gc USING(groupcombinationid) LEFT JOIN bb".$n."_userfields uf ON (uf.userid=u.userid) WHERE u.userid='$id'");
else {
$wbbuserdata = $db->query_first("SELECT u.*,gc.groupids, gc.data FROM bb".$n."_users u ".
"LEFT JOIN bb".$n."_groupcombinations gc USING(groupcombinationid) ".
"WHERE u.userid='$id'");
}
$groupids = explode(',', $wbbuserdata['groupids']);
$variables = unserialize($wbbuserdata['data']);
unset($wbbuserdata['data']);
if (is_array($variables) && count($variables)) {
while (list($key, $val) = each($variables)) {
$wbbuserdata[$key] = $val;
}
}
$wbbuserdata['groupids'] = $groupids;
return $wbbuserdata;
} |
|
Sucht in dieser mal das Wort gc.data.
Es kommt 2x vor.
Wenn ihr das zur Abfrage hinzufügt, erhaltet ihr auch die Rechte
__________________ Mfg
Niemand Nr.1
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Niemand Nr.1: 16.02.07 08:40.
|
|
16.02.07 08:40 |
E-Mail
Finden
Als Freund hinzufügen
|
|
Kesandal
Mitglied
Dabei seit: 13.04.04
Beiträge: 7
Forenversion: 2.3
|
|
Hallo,
ich glaube das Script hat irgendwie Probleme mit dem 2.3.6pl1...
Der logt mich nicht immer aus
(
|
|
25.02.07 12:46 |
E-Mail
Finden
Als Freund hinzufügen
|
|
Hallo1
Mitglied
Dabei seit: 26.04.07
Beiträge: 8
|
|
Hallo,
leider werde cih aus der Anleitung ganz und gar nicht schlau. Was kommt in's Forum und vorallem wo, was auf den Space meiner Seite - und was muss ich überhaupt anpassen oO"?
|
|
31.05.07 16:52 |
E-Mail
Finden
Als Freund hinzufügen
|
|
|