Anmeldeformular verwenden

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB 3.0.x oder dem Modifizieren des eigenen Forums auftauchen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Benutzeravatar
gamexover
Mitglied
Beiträge: 30
Registriert: 20.01.2010 21:03

Anmeldeformular verwenden

Beitrag von gamexover »

Hallo!

Ich würde gerne das Anmeldeformular für die Seiten meiner Homepage verwenden. Den entsprechenden KB-Beitrag habe ich bereits durchgelesen, jedoch funktioniert das nur in Verbindung mit dem Einbinden der Seiten in phpBB. Ich würde aber anstatt dieser variabeln php-Seiten lieber statische (X)HTML Seiten erstellen und php nur dort verwenden, wo es unbedingt notwendig ist (z.B. für das Anmeldeformular).

Ich stelle mir das so vor: Mein Forum leigt im Pfad "example.com/Forum/phpBB3". Die von mir erstellten Seiten liegen auf der Hauptdomain. Die Seiten sind Passwortgeschützt und beim öffnen der "index.html" sowie bei allen anderen Seiten sollte ein Anmeldeformular erscheinen. Die einzugebenden Daten, sollten mit den Benutzerkonten des Boards übereinstimmen (d.h. selbes PW und selber Benutzername) und es wäre gut, wenn man sich nicht noch einmal beim Board einloggen müsste, wenn man sich schon bei der Hauptseite eingeloggt hat. Außerdem sollte das Anmeldeformular alle Eigenschaften des originalen Formulars haben, wie z.B. CAPTCHA bei fehlgeschlagenen Loginversuchen.

Kann mir da vielleicht jemand eine kleine Hilfestellung geben, damit ich weiß wie ich das anstellen muss? Ich kenne mich in php nicht wirklich aus, also würde ich gerne sowenig php wie möglich verwenden.

Ich freue mich über jede Hilfe!

Lg
gamexover
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Re: Anmeldeformular verwenden

Beitrag von Pyramide »

gamexover hat geschrieben:Ich würde aber anstatt dieser variabeln php-Seiten lieber statische (X)HTML Seiten erstellen und php nur dort verwenden, wo es unbedingt notwendig ist (z.B. für das Anmeldeformular).

(...)

Die Seiten sind Passwortgeschützt und beim öffnen der "index.html" sowie bei allen anderen Seiten sollte ein Anmeldeformular erscheinen.
Mit statischen HTML-Seiten kannst du aber nicht prüfen, ob der Benutzer eingelogt ist und bei Bedarf auf die Login-Seite weiterleiten. Du wirst also nicht drumherum kommen, die Seiten als .php anzulegen und zumindest folgenden Minimal-Code einzubinden:

Code: Alles auswählen

<?php

define('IN_PHPBB', true);
// Specify the path to you phpBB3 installation directory.
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './forum/';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
// The common.php file is required.
include($phpbb_root_path . 'common.' . $phpEx);

// Start session management
$user->session_begin();
$auth->acl($user->data);

$user->setup();


//your PHP and/or HTML code goes here

?>
KB:knigge
Benutzeravatar
gamexover
Mitglied
Beiträge: 30
Registriert: 20.01.2010 21:03

Re: Anmeldeformular verwenden

Beitrag von gamexover »

Hallo!

Leider habe ich mich in letzter Zeit mit anderen Dingen beschäftigen müssen und habe daher hier nicht weiterarbeiten können.

Ich habe jetzt die Seite erstellt und das mit der Verwendung des Anmeldeformulars funktioniert auch schon gut. Nur komme ich nach der Anmeldung nicht mehr auf meine Seite zurück.

Meine Seite "example.php" befindet sichim Hauptverzeichnis, das Forum im Unterverzeichnis "./Forum/phpBB3". Wenn ich jetzt die Seite "example.php" aufrufe, erscheint das Anmeldeformular. Nach der Anmeldung werde ich auf "./Forum/phpBB3/ucp.php?mode=login" weitergeleitet, wo mir mitgeteilt wird, dass ich erfolgreich angemeldet worden bin. Dann versucht phpBB mich wieder auf die vorherige Seite zu schicken, was allerdings nicht funktioniert. Es wird die Seite "./Forum/phpBB3/example.php?&sid=5a7cc684375627462d78f83ed1d97109" geöffnet, die es natürlich nicht gibt, da die originnale Seite im Hauptverzeichnis liegt.
Was muss ich tun, damit ich auf die richtige Seite geleitet werde?

Hier ist der Quellcode der Seite "example.php":

Code: Alles auswählen

 <?php
     //Das ist der normale, bereits oben erwähnte, Code
   
    define('IN_PHPBB', true);
    $phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './Forum/phpBB3/';
    $phpEx = substr(strrchr(__FILE__, '.'), 1);
    include($phpbb_root_path . 'common.' . $phpEx);

    $user->session_begin();
    $auth->acl($user->data);
    $user->setup();


//Hier der von mir hinzugefügte Code
    if ($user->data['user_id'] == ANONYMOUS)
{
    login_box();
}
else
{ 
echo <<<END 
<html>
Meine Seite
</html>
END;
}
  ?>
Das Syntax-Highlighting scheint das "END;" nicht zu erkennen, die php-datei funktioniert trotzdem ;-)

Ich bin um jede Hilfe dankbar!

Lg gamexover
Benutzeravatar
tas2580
Ehemaliges Teammitglied
Beiträge: 3029
Registriert: 01.07.2004 05:42
Wohnort: /home/tas2580
Kontaktdaten:

Re: Anmeldeformular verwenden

Beitrag von tas2580 »

Hallo,
versuch es mal mit

Code: Alles auswählen

login_box('../../example.php'); 
Gruß Tobi
Heute ist ein guter Tag um dein Forum zu testen.
Ehemaliger Benutzername: [BTK] Tobi
Benutzeravatar
gamexover
Mitglied
Beiträge: 30
Registriert: 20.01.2010 21:03

Re: Anmeldeformular verwenden

Beitrag von gamexover »

Hallo,

es funktioniert leider nicht.

Ich kenne mich mit PHP nicht gut aus, aber vielleicht könnte man ja die "ucp.php" von phpBB so ändern, dass der gewünschte Effekt erreicht wird. Also wenn ich von meiner Seite "example.php" komme, dann werde ich auch wieder auf "../../example.php" weitergeleitet.
Vielleicht gibt es auch noch andere Möglichkeiten, aber so könnte es funktionieren.
Leider weiß ich nicht, wie ich das Codetechnisch anstelle.

Gruß gamexover
Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 17473
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Re: Anmeldeformular verwenden

Beitrag von Dr.Death »

Hallo,

schau mal bitte auf diese Wiki Seite: http://wiki.phpbb.com/Function.login_box

und teste das mal:

Code: Alles auswählen

login_box('http://www.url-zu-deiner-seite.de', $user->lang['LOGIN']);
Die angegebene feste Url ist die "Redirect" URL, die nach einem erfolgreichen Login aufgerufen wird.
Benutzeravatar
gamexover
Mitglied
Beiträge: 30
Registriert: 20.01.2010 21:03

Re: Anmeldeformular verwenden

Beitrag von gamexover »

Hallo!

Es hat leider nicht funktioniert, aber trotzdem Danke!

Ich habe einen Lösungsansatz gefunden, der vielleicht funktionieren könnte, nur habe ich es nicht geschafft das ganze codetechnisch umzusetzen. Hoffentlich kann mir dabei jemand helfen.

Bei einem normalen Login wird man ja auf die ucp.php?mode=login geleitet. Im Quellcode der ucp.php steht folgendes:

Code: Alles auswählen

case 'login':
        if ($user->data['is_registered'])
        {
            redirect(append_sid("{$phpbb_root_path}index.$phpEx"));
        }

        login_box(request_var('redirect', "index.$phpEx"));
    break; 
Meine Idee wäre es jetzt einen weiteren Case zu erstellen, der so aussehen könnte:

Code: Alles auswählen

case 'login_external':
    if ($user->data['is_registered'])
    {
      redirect(append_sid("../../index.$phpEx"));
    }
    
    login_box(request_var('redirect', "index.$phpEx"));
    break; 
Dadurch dürfte man bei Aufruf der ucp.php?mode=login_external auf die im Hauptverzeichnis liegende Datei weitergeleitet werden. Nun muss ich nur dafür sorgen, dass beim Login über meine example.php ?mode=login_external und nicht ?mode=login verwendet wird.

Diese Unterscheidung habe ich in der functions.php gefunden und die Datei folgendermaßen geändert:

Code: Alles auswählen

//Das war schon da
if ($user->data['user_id'] != ANONYMOUS)
    {
        $u_login_logout = append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=logout', true, $user->session_id);
        $l_login_logout = sprintf($user->lang['LOGOUT_USER'], $user->data['username']);
    }
    else
    {
        $u_login_logout = append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=login');
        $l_login_logout = $user->lang['LOGIN'];
    }

//NEU
  $_referer = $_SERVER["HTTP_REFERER"];
  if ($user->data['user_id'] != ANONYMOUS && $_referer == 'http://domain.net/example.php')
{
        $u_login_logout = append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=login_external');
        $l_login_logout = $user->lang['LOGIN'];
} 
Damit sollte der Referrer ausgelesen werden und bei übereinstimmenden Referrer ?mode=login_external verwendet werden, sonst ?mode=login.
Leider hat es so nicht funktioniert und mein Board hat es dabei zerschossen; erst nach einer Wiederherstellung der functions.php ging es wieder.

Vielleicht habe ich hier Ideen geliefert, wie man das Problem lösen kann und hoffentlich kann mir auch jemand dabei helfen.

Gruß, gamexover
Benutzeravatar
gamexover
Mitglied
Beiträge: 30
Registriert: 20.01.2010 21:03

Re: Anmeldeformular verwenden

Beitrag von gamexover »

Weiß denn keiner weiter? :(
Benutzeravatar
gamexover
Mitglied
Beiträge: 30
Registriert: 20.01.2010 21:03

Re: Anmeldeformular verwenden

Beitrag von gamexover »

Kann denn keiner helfen?

Irgendwie muss das doch möglich sein. http://phpbb.de hat ja auch externe Seiten, auf denen man sich anmelden kann oder täusche ich mich? :-? Man kann sich ja bereits auf der Startseite anmelden, ohne in die Community gehen zu müssen.

Eigentlich müsste so etwas ja ganz simpel gehen, wenn man weiß wie...
Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 17473
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Re: Anmeldeformular verwenden

Beitrag von Dr.Death »

Moin,

Du könntest auch einen Blick hierhin werfen:

[Snippet] Externer Login / Logout für phpBB3
Antworten

Zurück zu „[3.0.x] Mod Bastelstube“