Du bist nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: DeveloperTalk. Falls dies dein erster Besuch auf dieser Seite ist, lies bitte die Hilfe durch. Dort wird dir die Bedienung dieser Seite näher erläutert. Darüber hinaus solltest du dich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutze das Registrierungsformular, um dich zu registrieren oder informiere dich ausführlich über den Registrierungsvorgang. Falls du dich bereits zu einem früheren Zeitpunkt registriert hast, kannst du dich hier anmelden.

JuKu

Profi

  • »JuKu« ist der Autor dieses Themas

Beiträge: 574

Registrierungsdatum: 29.09.2011

Danksagungen: 48

  • Private Nachricht senden

1

02.02.2013, 11:13

vBulletin: UserID & Namen herausbekommen

Habe mal wieder ne Frage.^^
Diesmal will ich aus einem vBulletin-Forum die UserID + den Namen herausbekommen.
Weiß jemand, ob das als Session gespeichert wird? :)

Hintergrund:
Ich versuche z.Z. ein CMS und vBulletin ein wenig zu vereinen, also miteinander zu verbinden.
Das Entwickeln von Plugins bei vBulletin ist leider so was von schwer, weil es weder ne ordentliche Doku gibt, noch ein deutsches, ordentliches Forum zu solchen Sachen.
Und in den Foren kann ich keine Dateianhänge herunterladen oder Code einsehen, da ich nicht der Lizenz-Inhaber des Boards bin. :thumbdown:
Wäre deßhalb wirklich schön, wenn mir jemand helfen könnte! :)
Wenn euch mein Beitrag weitergeholfen hat, drückt auf "Bedanken"!
Danke! :D

Erik

Profi

Beiträge: 1 274

Registrierungsdatum: 22.06.2011

Wohnort: Deutschland ;)

Danksagungen: 307

  • Private Nachricht senden

2

02.02.2013, 12:06

was genau ist denn DIE UserID und DER Name? (vom angemeldeten user?)
es könnte theoretisch sein, dass soetwas in der session steht, warum nimmst du nicht irgendeine datei, wie index.php, oder so, und schreibst da sowas wie print_r($_SESSION); (so richtig in php? :D) rein, dann weißt du ja, was da alles drinnsteht ;D

btw, an der englischen sprache sollte es beim programmieren eig nicht scheitern :D
Beste Webite im Internet ( ͡° ͜ʖ ͡°)
xinra.de

Simon

Profi

Beiträge: 725

Registrierungsdatum: 14.06.2011

Danksagungen: 210

  • Private Nachricht senden

3

02.02.2013, 12:54

Das wird nicht gehen Erik :/
Wird oft nicht in der Session Variable gespeichert.

@Juku: Du kannst mal in der Datenbank schauen, da müsste eine Tabelle mit Session Informationen sein.
In der steht bestimmt was von wegen UserID und so :)
Dann nimmste dir die ID und guckst ob du dafür nen Cookie findest bei dir :D

Erik

Profi

Beiträge: 1 274

Registrierungsdatum: 22.06.2011

Wohnort: Deutschland ;)

Danksagungen: 307

  • Private Nachricht senden

4

02.02.2013, 14:20

ich meinte ja nur, falls das in der session ist... damit würde man zummindest sehen, ob das so ist :D
ist schon klar, dass es unwahrscheinlich ist :D
Beste Webite im Internet ( ͡° ͜ʖ ͡°)
xinra.de

asdf93

Schüler

Beiträge: 100

Registrierungsdatum: 05.10.2012

Danksagungen: 31

  • Private Nachricht senden

5

04.02.2013, 15:47

Stellt sich mir die Frage, warum vBulletin? Da gibts doch wesentlich günstigere Alternativen... Wenn du nicht Lizenz-Inhaber bist, dann frag doch einfach den Lizenzinhaber, ob du mal in den Code sehen darfst, du machst dir ja auch offensichtlich Arbeit für ihn, dann soll er dir eben entgegenkommen. :)

Vermutlich gibt es ein Cookie, dass auf eine Session verweist, von der aus es einen Verweis auf die User-ID gibt - von da aus hast du ja alles, was du brauchst. Ich bezweifel, dass der Name in der Session selbst mit drin steht (macht ja auch keinen Sinn).

JuKu

Profi

  • »JuKu« ist der Autor dieses Themas

Beiträge: 574

Registrierungsdatum: 29.09.2011

Danksagungen: 48

  • Private Nachricht senden

6

05.02.2013, 19:54

Habe es geschafft! ^^
In den Sessions wird ein Hash gespeichert, denn muss man in der Datenbank suchen, bekommt dabei die UserID und kann damit in der user-Tabelle die User-Daten auslesen. :D

Danke! :)
Wenn euch mein Beitrag weitergeholfen hat, drückt auf "Bedanken"!
Danke! :D

asdf93

Schüler

Beiträge: 100

Registrierungsdatum: 05.10.2012

Danksagungen: 31

  • Private Nachricht senden

7

06.02.2013, 14:31

Sag ich ja. :)

Simon

Profi

Beiträge: 725

Registrierungsdatum: 14.06.2011

Danksagungen: 210

  • Private Nachricht senden

8

06.02.2013, 16:00

Sag ich ja. :)

Ich auch :D *Spam* :P

JuKu

Profi

  • »JuKu« ist der Autor dieses Themas

Beiträge: 574

Registrierungsdatum: 29.09.2011

Danksagungen: 48

  • Private Nachricht senden

9

06.02.2013, 18:47

:P
Wenn euch mein Beitrag weitergeholfen hat, drückt auf "Bedanken"!
Danke! :D

Johannes S.

Fortgeschrittener

Beiträge: 444

Registrierungsdatum: 24.06.2011

Wohnort: Lychen

Danksagungen: 71

  • Private Nachricht senden

10

16.02.2013, 23:58

@JuKu
Falls es dir nichts aus macht, würden noch ein paar weitere Infos gut für den Abschluss sein.
Also z.B. der Key-Name des Session-Eintrags und die Tabelle und das Feld in der Datenbank.

Sonst würde ich das Thema schließen.
Signatur ?

JuKu

Profi

  • »JuKu« ist der Autor dieses Themas

Beiträge: 574

Registrierungsdatum: 29.09.2011

Danksagungen: 48

  • Private Nachricht senden

11

19.02.2013, 13:47

Ok, also hier die Lösung!: :P
Ich habe das Ganze auch als ContentLion-Plugin implemnetiert, wer also ContentLion als CMS nutzt, kann darauf aufbauen. ;)
(--> Anhang. ;) )

Hier der Ganze Code des Plugins:

Spoiler Spoiler


PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
<?php

    /*
     * vBulletin verbinden
    */
    
    //Array initialisieren
    $vb = array();
    
    //Datenbank Initialisieren
    $vb_database = new Plugin_vBulletin_DataBase();
    
    if (isset($_COOKIE['bb_sessionhash']) && !empty($_COOKIE['bb_sessionhash'])) {
    
        $vb['sessionhash'] = DataBase::Current()->EscapeString($_COOKIE['bb_sessionhash']);
        $vb['connected'] = true;
        
        $row Plugin_vBulletin_DataBase::Current()->ReadRow("SELECT * FROM `{'dbprefix'}session` WHERE `sessionhash` = '" $vb['sessionhash'] . "'; ");
        $vb['login'] = false;
        
        if ($row) {
            
            $vb['userid'] = $row->userid;
            $vb['location'] = $row->location;
            
            $vb['session'] = $row;
            
            if ($row->isbot == "0") {
                $vb['isbot'] = false;
            } else {
                $vb['isbot'] = true;
            }
            
            if ($row->loggedin == "0") {
                $vb['loggedin'] = false;
                $vb['login'] = false;
            } else if ($row->loggedin == "2") {
                $vb['loggedin'] = true;
                $vb['login'] = true;
            }
            
            if ($vb['login']) {
                //User ist eingeloggt
                
                if (Cache::contains("plugin_vb_sessions""User_" $vb['userid'])) {
                    
                    $userdata Cache::getData("plugin_vb_sessions""User_" $vb['userid']);
                    
                } else {
                    
                    $userdata Plugin_vBulletin_DataBase::Current()->ReadRow("SELECT * FROM `{'dbprefix'}user` WHERE `userid` = '" $vb['userid'] . "'; ");
                    
                    if ($row) {
                        Cache::setData("plugin_vb_sessions""User_" $vb['userid'], $userdata);
                    } else {
                        //Keine Daten für den User mit dieser UserID in der Datenbank vorhanden.
                        $userdata null;
                        
                        $vb['login'] = false;
                        $vb['loggedin'] = false;
                    }
                    
                }
                
                if ($userdata != null) {
                    $user = new Plugin_vBulletin_User();
                    $user->userid $vb['userid'];
                    $user->name $userdata->username;
                    $user->usergroup $userdata->usergroupid;
                    $user->displaygroupid $userdata->displaygroupid;
                    $user->posts $userdata->posts;
                    $user->usertitle $userdata->usertitle;
                    $user->profilevisits $userdata->profilevisits;
                    
                    $row Plugin_vBulletin_DataBase::Current()->ReadRow("SELECT COUNT(*) as `anzahl` FROM `{'dbprefix'}pm` WHERE `userid` = '" $user->userid "' AND `messageread` = '0'; ");
                    $user->messages $row->anzahl;
                    
                    $vb['user'] = $user;
                    $vb['userdata'] = $userdata;
                }
                
            } else {
                $user = new Plugin_vBulletin_User();
                $user->userid 0;
                $user->name "Gast";  
                $vb['user'] = $user;
            }
            
        } else {
            //Ungültiger Session-Hash
            $vb['userid'] = -1;
        }
        
    } else {
        $vb['connected'] = false;
    }
    
    /*if (isset($_COOKIE['bb_userid']) && !empty($_COOKIE['bb_userid'])) {
        $vb['connected'] = true;
        $vb['userid'] = $_COOKIE['bb_userid'];
        $vb['praefix'] = "vb_";
        $row = DataBase::Current()->ReadRow("SELECT * FROM `" . $vb['praefix'] . "user` WHERE `userid` = '" . $vb['userid'] . "'; ");
        
        if ($row) {
            $vb['username'] = $row->username;
        }
    }*/
    
    $_GLOBALS['vb'] = $vb;
    $_GLOBALS['vbulletin'] = $vb;
    $vbulletin $vb;
    $_SESSION['cl_vbulletin'] = $vb;

?>



Zur Erklärung:
Zuerst muss man den Login-Hash aus dem Cookie auslesen, mit diesem dann die Zeile aus der vBulletin-Tabelle "sessions" auslesen.
Mit der Zeile erhält man auch die User-ID.
Und m.H. der User-ID muss man wiederum die Tabelle user auslesen, sodass man dann die Zeile mit der passenden UserID bekommt.

MySQL-Abfrage(n)

1
SELECT * FROM `{'dbprefix'}user` WHERE `userid` = '<Deine UserID>';

Damit hat man dann alle wichtigen User-Daten wie Benutzername, User-ID, E-Mail usw. ;)
»JuKu« hat folgende Datei angehängt:
  • vbulletin.zip (6,31 kB - 139 mal heruntergeladen - zuletzt: 14.12.2018, 00:58)
Wenn euch mein Beitrag weitergeholfen hat, drückt auf "Bedanken"!
Danke! :D

JuKu

Profi

  • »JuKu« ist der Autor dieses Themas

Beiträge: 574

Registrierungsdatum: 29.09.2011

Danksagungen: 48

  • Private Nachricht senden

12

19.02.2013, 13:49

habe übrigens nicht den ganzen Code angegeben, sondern nur die entsprechenden Zeilen bzw. die entsprechende Datei. ;)
(events/load.php)
Wenn euch mein Beitrag weitergeholfen hat, drückt auf "Bedanken"!
Danke! :D

Ähnliche Themen