Discord

  • Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

Web XenForo Entwicklung

elrobtossohn

Redstoneengineer
Mitglied seit
8 März 2017
Beiträge
32
Moin,

Ich nutze wie im Titel die Forum Software XenForo und mache dort externe Seiten bspw. Entbannungsantrag stellen für Spieler etc.
Nun ist es bei XenForo so das die Sitzung nach einer Weile immer abläuft und diese erst wieder "gültig" ist wenn man sich neuanmeldet oder auf das Forum direkt geht.
Da ist meine Frage nun, wie könnte man dies mit der PHP API (XF.php) lösen?

Sagt mit bitte nicht das ich mich bei den ins Forum wenden soll da ich das schon gemacht habe und dort auch keine Lösung für das Problem erhalte.

MfG
 

BloodSKreaper

Miner
Osterei Experte
Mitglied seit
12 Oktober 2014
Beiträge
194
Minecraft
BloodSKreaper
Guten Abend,

ich habe jetzt nicht direkt verstanden, was du eigentlich machen willst. Willst du quasi die Session refreshen, oder den Spieler anmelden? Bitte erläutere etwas näher, wie du überhaupt auf die Session zugreifst.

Freundliche Grüße
BloodSKreaper
 

❤️可愛いちゃん️❤️

Threadripper
Osterei Experte
Mitglied seit
19 Mai 2014
Beiträge
1.275
Alter
2
Dass die Session irgendwann abläuft ist ganz normal und kann sogar durch das löschen von Cookies beschleunigt werden. Daran solltest und kannst du gar nichts ändern. Die Frage ist daher warum du das machen willst
 

elrobtossohn

Redstoneengineer
Mitglied seit
8 März 2017
Beiträge
32
Dass die Session irgendwann abläuft ist ganz normal und kann sogar durch das löschen von Cookies beschleunigt werden.
Ich will nicht die Session vom User löschen sondern sie erneuern, da ich den User angemeldet haben möchte wenn er es war und nicht das er erst wieder ins Forum gehen muss damit er angemeldet ist.

Bitte erläutere etwas näher, wie du überhaupt auf die Session zugreifst.
Über die XF.php API von XenForo 2 selber.
 

Kroseida

Schafhirte
Mitglied seit
28 September 2015
Beiträge
103
Alter
21
Minecraft
Kroseida
Das würde ja aber ein Sicherheitsrisiko erschaffen, da du den Nutzer ohne Authentication rein lassen würdest?

Im Endeffekt ist dein Auth-Service an der Stelle XenForo, wenn diese Session abläuft kannst du diese nicht erneuern.
Desweiteren solltest du das vorallem aus Sicherheitsgründen nicht tun.
 

elrobtossohn

Redstoneengineer
Mitglied seit
8 März 2017
Beiträge
32
Als Cookie wird der User auch noch gespeichert, sprich man muss nur die Session erneuern und somit wäre es kein Sicherheitsrisiko.

Bei Gomme funktioniert das ja auch anscheind da sie auch XenForo selber nutzen.
 

KleinDev

Minecrafter
Mitglied seit
15 August 2015
Beiträge
25
Minecraft
KleinDev
Kann es eventuell sein, dass du ein System in PHP schreibst welches die API von Xenforo nutzt um den User anzumelden?
Sprich, wenn der User einen Forum Account hat, so hat er auch dort einen Account?

Oder was genau versuchst du denn eigentlich?
Ich glaub wir haben alle nicht richtig verstanden was du eigentlich vor hast.
Teile uns mit was du damit erreichen willst und vielleicht kennen wir ja andere und bessere Wege für dich ^^
 

elrobtossohn

Redstoneengineer
Mitglied seit
8 März 2017
Beiträge
32
Ich versuche nicht in PHP ein System zu schreiben das sich der User anmeldet sondern um seine Session das er ANGEMELDET bleibt zu erneuern da diese Standard mäßig abläuft und ich muss diese natürlich erneuern um auf seine Daten vom Forum zugreifen zu können.

Ich kann es auch 5000x schreiben das ich seine SITZUNG ERNEUERN möchte und ihn nicht anmelden will.
Schließlich muss es dafür einen Weg geben da die Sitzung sich selber erneurt sobald er auf das Forum wieder geht.
 

Taminoful

Redstoneengineer
Mitglied seit
3 August 2012
Beiträge
31
Alter
22
Minecraft
Taminoful
Ich versuche nicht in PHP ein System zu schreiben das sich der User anmeldet sondern um seine Session das er ANGEMELDET bleibt zu erneuern da diese Standard mäßig abläuft und ich muss diese natürlich erneuern um auf seine Daten vom Forum zugreifen zu können.

Ich kann es auch 5000x schreiben das ich seine SITZUNG ERNEUERN möchte und ihn nicht anmelden will.
Schließlich muss es dafür einen Weg geben da die Sitzung sich selber erneurt sobald er auf das Forum wieder geht.
Das ist eine äußerst bescheidene Idee. Zum einen ist dies technisch nicht möglich, da eine Form der Authentifizierung durch den Nutzer stattfinden muss um jegliche Form einer Session zu erneuern zum anderen, weil es ein absolutes Sicherheitsrisiko ist so was zu versuchen zu implementieren. Machst du hier auch nur den kleinsten Fehler, riskierst du, dass du der Öffentlichkeit alle Nutzerdaten zugänglich machst.

Auch hilft es, wenn man seine Probleme klar und nachvollziehbar artikuliert, das ist in deinen Beiträgen nicht der Fall - da hilft es dann auch nicht, unfreundlich gegenüber den Antwortenden zu werden. Ich bin mir noch immer nicht ganz sicher, was du mit der Erneuerung der XenForo Session auf deiner externen Seite bezwecken möchtest, wenn diese nicht XenForo als Authentificationprovider einsetzt.

Was du suchst, ist, glaube ich eher das hier.
NexusCubeEU - Xenforo Nutzerlogin
 

elrobtossohn

Redstoneengineer
Mitglied seit
8 März 2017
Beiträge
32
Zum einen ist dies technisch nicht möglich, da eine Form der Authentifizierung durch den Nutzer stattfinden muss
Das ist komplett falsch da es bei Gomme genauso wohl funktioniert.

Was du suchst, ist, glaube ich eher das hier.
Nein ich suche sowas nicht da ich sowas bereits habe, aber nach einer Gewissen Zeit nicht mehr an die Informationen heran komme da die Sitzung ungültig ist vom Benutzer und er wieder ins Forum gehen muss damit er wieder erkannt wird.

Ich bin mir noch immer nicht ganz sicher, was du mit der Erneuerung der XenForo Session auf deiner externen Seite bezwecken möchtest
Ich möchte noch immer damit auf die Informationen vom Nutzer zugreifen was nicht möglich ist da die Sitzung vom User ungültig ist bzw eben die XF Session, diese wird als Cookie unter dem Namen "xf_session" gespeichert.
Und da diese ungültig ist kann ich nicht weiter auf die Daten zugreifen, dies ist auch eine Sicherheitsfunktion von XenForo selber, daher muss ich diese wohl erneuern.
 

❤️可愛いちゃん️❤️

Threadripper
Osterei Experte
Mitglied seit
19 Mai 2014
Beiträge
1.275
Alter
2
Du scheinst dir ziemlich sicher zu sein, dass du den richtigen Weg gehst, obwohl du selbst nicht mal den ersten Schritt gemacht hast. Eine abgelaufene Session kann bereits per Definition nicht erneuert werden. Dann wär die Session nicht abgelaufen. Ich vermute viel eher, dass du hier an der offiziellen XenForo API vorbei ein Authentifizierungssystem bauen willst und das wird definitiv nach Hinten losgehen.

Ansonsten kannst du ja nochmal versuchen zu erklären was du bisher mit der API gemacht hast, ich seh nämlich nirgendwo in deinem Thread irgendwelche Hinweise darauf, was du bereits versucht hast.
 

Taminoful

Redstoneengineer
Mitglied seit
3 August 2012
Beiträge
31
Alter
22
Minecraft
Taminoful
Das ist komplett falsch da es bei Gomme genauso wohl funktioniert.
Ganz schwieriges Thema, wenn man jemandem, der weitaus mehr Expertise als man selbst in einem Bereich hat, versucht dies abzusprechen, weil man Systeme die man versucht nachzubauen nicht versteht.

Nein ich suche sowas nicht da ich sowas bereits habe, aber nach einer Gewissen Zeit nicht mehr an die Informationen heran komme da die Sitzung ungültig ist vom Benutzer und er wieder ins Forum gehen muss damit er wieder erkannt wird.
Ich habe mir jetzt mal zwei Minuten Zeit genommen und die betroffene Seite bei der du den ganzen Spaß versuchst rausgesucht. Bei dir scheitert es direkt schon an den Grundlagen der XenForo Administration. Was du da verwendest ist keine "XenForo externe Seite", wie es deine Beschreibung suggeriert, sondern der Node Type Page. Ein XenForo Hausmittel um statischen Content darzustellen - welches du vermutlich mit den hauseigenen Conditionals versucht dynamisch anzureichern, was auch möglich ist.

Bei deiner Vorlage wird hier der Node Type Link forums / redirects verwendet, welches man auch schön aus der URL ablesen kann, am Ende läuft das ganze nämlich über eine komplett andere Subdomain. Hier wird XenForo, wie bereits mehrfach in diesem Thread erwähnt, als Authentificationprovider in einer eigens entwickelten Plattform verwendet - auch hier wird der Nutzer wieder abgemeldet, wenn seine Session ausläuft. Das ganze hier über den Session Cookie zu authentifizieren ist außerdem höchst fragwürdig.

Meine Empfehlung lautet, dass du dir zum einen mal die Grundlagen von XenForo gibst, dann feststellst, dass die Conditionals dafür zwar in der Theorie nutzbar wären, aber einfach nicht praktisch sind und es auf eine komplette Eigenentwicklung hinausläuft oder man sich für eine andere Vorgehensweise entscheidet. Ach, wo ich gerade dabei bin, ihr solltet mal eure veraltete XenForo Version updaten - Version 2.1.1 ist im März 2019 erschienen und bereits seit Ende April obsolet.
 

elrobtossohn

Redstoneengineer
Mitglied seit
8 März 2017
Beiträge
32
Ich vermute viel eher, dass du hier an der offiziellen XenForo API vorbei ein Authentifizierungssystem bauen willst und das wird definitiv nach Hinten losgehen.
Ich brauche kein Auth System bauen wenn ich sowas nicht benötigte, wäre ja wohl dumm wenn ich keine Daten hätte oder?

Ansonsten kannst du ja nochmal versuchen zu erklären was du bisher mit der API gemacht hast, ich seh nämlich nirgendwo in deinem Thread irgendwelche Hinweise darauf, was du bereits versucht hast.
Das einzige was ich bisher gemacht habe ist auf die Daten vom User zuzugreifen und eben auch überprüft ob dieser Angemeldet ist über die genannte Session und das wie folgt:

PHP:
require('forum/src/XF.php');
\XF::start('/hc');
$app = \XF::setupApp('XF\Pub\App');
$s = $app->session();
$uid = $s->get('userId');
if ($uid){
    $finder = \XF::finder('XF:User');
    $user = $finder->where('user_id', $uid)->fetchOne();
   
    $array = $user;
    $username = $array['username'];
} else {
    //aktion falls keine session gefunden wurde bzw userid
}
Nun ist das Problem das der User ja noch angemeldet ist und seine Sitzung ist ja in dem Falle nicht mehr gültig:
Da frage ich mich natürlich auch wie man das ganze lösen kann ohne das Forum selber aufzurufen, da ich keine möglichkeit so sehe es sonst zu tun.

Ach, wo ich gerade dabei bin, ihr solltet mal eure veraltete XenForo Version updaten - Version 2.1.1 ist im März 2019 erschienen und bereits seit Ende April obsolet.
Soweit ich weiss nutzen wir die neuste, aber eine Frage so nebenbei, woher möchtest du denn die Seite von mir kennen?

//Edit:

Bei dir scheitert es direkt schon an den Grundlagen der XenForo Administration.
Wie soll es an den Grundlagen vom ACP scheitern wenn ich meine externe Seite selber mit der PHP API entwickeln tue?
 
Zuletzt bearbeitet:

Taminoful

Redstoneengineer
Mitglied seit
3 August 2012
Beiträge
31
Alter
22
Minecraft
Taminoful
Soweit ich weiss nutzen wir die neuste, aber eine Frage so nebenbei, woher möchtest du denn die Seite von mir kennen?
Ich bin fähig eine Suchmaschine meines Vertrauens zu bedienen und eine einfache Wahrscheinlichkeitsanalyse durchzuführen. ¯\_(ツ)_/¯

Wie soll es an den Grundlagen vom ACP scheitern wenn ich meine externe Seite selber mit der PHP API entwickeln tue?
Bei genauerer Betrachtung fällt auf, dass hier doch ein Node Type Link forums / redirects verwendet wird. Ist dann besonders peinlich, wenn man sich da einfach das generierte HTML von XenForo rein zieht statt das ganze anständig zu implementieren.
Der Ansatz, den du da fährst ist ein vollkommen falscher. Was du eigentlich möchtest, ist XenForo als SSO bzw. als oAuth Provider nutzen. Das geht out-of-the-box nicht und erfordert Eigenentwicklung, am besten als XenForo Addon. Das kannst du dann als Ausgangspunkt für dein anderes System nehmen. Vorher würde ich allerdings eine Nutzwertanalyse in betracht ziehen und mich eher nach fertigen Lösungen oder anderen Ansätzen umsehen.
 
Zuletzt bearbeitet:

elrobtossohn

Redstoneengineer
Mitglied seit
8 März 2017
Beiträge
32
Was du eigentlich möchtest, ist XenForo als SSO bzw. als oAuth Provider nutzen
Ich frage mich bei dir gerade, verstehst du überhaupt was ich vor habe oder willst du nur Kritik äußern?

Vorher würde ich allerdings eine Nutzwertanalyse in betracht ziehen und mich eher nach fertigen Lösungen oder anderen Ansätzen umsehen.
Ich bin hier nicht um Tipps von dir zu erhalten sondern um Hilfe bei einem Problem zu erhalten was du hier anscheind nicht mit angehst, daher ergibt das keinen Sinn das du mir mit irgendwelchen Implementierungen kommst.

Ich bin hier wohl nicht um Kritik wegen etwas zu erhalten sondern um ein Problem zu lösen welches existiert und das bleibt bis jetzt noch immer die Session mit XenForo.
 

Taminoful

Redstoneengineer
Mitglied seit
3 August 2012
Beiträge
31
Alter
22
Minecraft
Taminoful
Ich frage mich bei dir gerade, verstehst du überhaupt was ich vor habe oder willst du nur Kritik äußern?
Ich bin hier nicht um Tipps von dir zu erhalten sondern um Hilfe bei einem Problem zu erhalten was du hier anscheind nicht mit angehst, daher ergibt das keinen Sinn das du mir mit irgendwelchen Implementierungen kommst.

Ich bin hier wohl nicht um Kritik wegen etwas zu erhalten sondern um ein Problem zu lösen welches existiert und das bleibt bis jetzt noch immer die Session mit XenForo.
Deine Antworten zeigen einfach, dass du dein eigenes Problem nicht verstanden hast, da dir fundamentales Wissen dazu fehlt, wie Sessions und Benutzerauthentifizierungen funktionieren und ablaufen. Solange du dir dieses Wissen nicht aneignest, können wir dir hier noch so viele Lösungsansätze für dein Problem reinschreiben.

Du wolltest wissen, wie man eine XenForo Session erneuert, wir sagten dir mehrfach, dass dies nicht möglich ist. Du bringst das Argument, dass dies andere ebenfalls machen, wir erklären dir, wie die anderen dies vermutlich lösen und dann sagst du, dass wir dein Problem nicht lösen. Wir drehen uns im Kreis, merkst du selbst, oder?
 

elrobtossohn

Redstoneengineer
Mitglied seit
8 März 2017
Beiträge
32
Du wolltest wissen, wie man eine XenForo Session erneuert, wir sagten dir mehrfach, dass dies nicht möglich ist. Du bringst das Argument, dass dies andere ebenfalls machen, wir erklären dir, wie die anderen dies vermutlich lösen und dann sagst du, dass wir dein Problem nicht lösen. Wir drehen uns im Kreis, merkst du selbst, oder?
Dann sag mir doch mal warum dies dann über XenForo selber möglich ist, selbst wenn du "Angemeldet bleiben" anklickst bringt es dir nichts da die Sitzung abläuft da diese sich erneuert.
Du verstehst anscheind das Problem und vorallem die XenForo API nicht.
 

Malfrador

Workaholic
Osterei Experte
Mitglied seit
16 Juni 2013
Beiträge
894
Minecraft
Malfrador
Dann sag mir doch mal warum dies dann über XenForo selber möglich ist, selbst wenn du "Angemeldet bleiben" anklickst bringt es dir nichts da die Sitzung abläuft da diese sich erneuert.
Entweder mithilfe einem Cookie, der einen Key enthält um deine Session (die in einem anderen Cookie gespeichert ist) dem Server gegenüber zu authentifizieren. Nach kurzem Blick auf dieses Forum würde ich denken, das XenForo diese Methode nutzt, da drei Cookies gesetzt werden (xf_user, xf_session und xf_csrf). Die Session wird dabei aber nicht "erneuert", nur einfach nicht beendet.
Oder via Token-Authentication, was ähnlich ist wie z.B. auch die Anmeldung im Minecraft-Launcher funktioniert (https://wiki.vg/Authentication). Hat einige Vorteile wie das der Server nicht die Sessions aufrechterhalten muss, ist aber in Foren eher unüblich.
 

elrobtossohn

Redstoneengineer
Mitglied seit
8 März 2017
Beiträge
32
Nach kurzem Blick auf dieses Forum würde ich denken, das XenForo diese Methode nutzt, da drei Cookies gesetzt werden (xf_user, xf_session und xf_csrf). Die Session wird dabei aber nicht "erneuert", nur einfach nicht beendet.
Eben es werden 3 Cookies gesetzt, aber es muss irgendwie möglich sein das der xf_session Cookie wieder "neu" ist, also das ich die Session so auch weiter abrufen kann, das kann ich eben aber nicht da die Session ja nicht mehr gültig ist, wäre ja sonst auch ein Sicherheitsrisiko so. Deswegen suche ich eine möglichkeit diese aufrechtzuerhalten bzw. einen neuen Session Code zu erhalten
 
Oben