Erweiterung der Login-Seite
Erweiterung der Login-Seite
Wie füge ich auf der Login-Seite eine Dropdownliste hinzu, sodass man je nach Auswahl beim Login-Klick auf eine andere Seite weitergeleitet wird?
Yo
Yo
- MagMo
- Ehemaliges Teammitglied
- Beiträge: 584
- Registriert: 30.10.2005 16:06
- Wohnort: Köln
- Kontaktdaten:
Hi,
der Forum Startup Page Mod ermöglicht es jedem Mitglied aus einer vom Admin definierten Liste eine Seite auszuwählen, auf die er nach dem Login weitergeleitet wird. Das ist zwar nicht ganz was du wolltest, hilft dir aber vielleicht doch weiter.
Grüße
MagMo
der Forum Startup Page Mod ermöglicht es jedem Mitglied aus einer vom Admin definierten Liste eine Seite auszuwählen, auf die er nach dem Login weitergeleitet wird. Das ist zwar nicht ganz was du wolltest, hilft dir aber vielleicht doch weiter.
Grüße
MagMo
Einfach folgendes auf der login_body.tpl hinzufügen.
Für jedes Seite einfach ein neues option-Element machen.
P.S.: Ich habs nicht getestet.
Code: Alles auswählen
<select name="redirect">
<option value="index.php">Index</option>
<option value="viewforum.php?f=1">Forum 1</option>
</select>
P.S.: Ich habs nicht getestet.
Die 3 größten Feinde eines Programmierers: Sonnenlicht, Frischluft und das unerträgliche Gebrüll der Vögel...
Jede Beseitigung eines Programmfehlers ruft Zwei neue hervor.
Jede Beseitigung eines Programmfehlers ruft Zwei neue hervor.
Funktioniert leider nicht. Ich denke, man müsste hier was ändern:
Yo
Ansonsten redirectet er immer auf index.phpif (!empty($HTTP_POST_VARS['redirect']) || !empty($HTTP_GET_VARS['redirect']))
{
$url = (!empty($HTTP_POST_VARS['redirect'])) ? htmlspecialchars($HTTP_POST_VARS['redirect']) : htmlspecialchars($HTTP_GET_VARS['redirect']);
$url = str_replace('&', '&', $url);
redirect(append_sid($url, true));
}
else
{
redirect(append_sid("index.$phpEx", true));
}
Yo
- MagMo
- Ehemaliges Teammitglied
- Beiträge: 584
- Registriert: 30.10.2005 16:06
- Wohnort: Köln
- Kontaktdaten:
Hi,
Der Code-Part ist fürs LogOut zuständig, hat also nichts mit deinem "Problem" zu tun.
Die Lösung deines Problems:
Füge in die Login-Seite ein DropDown-Menü (Name: zielurl (Beispiel); als Wert wird die URL übergeben, zu der weitergeleitet werden soll) hinzu.
Ändere dazu die Datei templates/subSilver/login_body.tpl nach folgendem Schema:Der obige Beispiel-Code soll nur das Schema verdeutlichen. Eine Optimierung und Anpassung an das Template-System ist möglich und sogar empfehlenswert!
Ändere die Datei templates/subSilver/index_body.tpl nach folgendem Schema:Für diese Änderung gilt das selbe, wie für die vorherige!
In der login.php ändere folgendes:Das ist in einem Blanko-phpBB 2.0.21 getest und funktioniert.
Anmerkung:
Wenn eine Weiterleitung über die Variable redirect erfolgt, dann wird die im DropDown-Menü ausgewählte Weiterleitung ignoriert. Daher wäre es sicher sinnvoll, das DropDown-Menü nur anzuzeigen, wenn keine redirect-Variable in der URL vorhanden ist.
Grüße
MagMo
Nein!YoOoOoOo hat geschrieben:Ich denke, man müsste hier was ändern
...
Der Code-Part ist fürs LogOut zuständig, hat also nichts mit deinem "Problem" zu tun.
Die Lösung deines Problems:
Füge in die Login-Seite ein DropDown-Menü (Name: zielurl (Beispiel); als Wert wird die URL übergeben, zu der weitergeleitet werden soll) hinzu.
Ändere dazu die Datei templates/subSilver/login_body.tpl nach folgendem Schema:
Code: Alles auswählen
#---[ FIND ]---
<!-- BEGIN switch_allow_autologin -->
#---[ BEFORE ADD ]---
<tr>
<td width="45%" align="right"><span class="gen">Zielforum:</span></td>
<td>
<select name="zielurl">
<option value="">Foren-Übersicht</option>
<option value="viewforum.php?f=1">Forum 1</option>
<option value="viewforum.php?f=2">Forum 2</option>
</select>
</td>
</tr>
Ändere die Datei templates/subSilver/index_body.tpl nach folgendem Schema:
Code: Alles auswählen
#---[ FIND ]---
<input type="submit" class="mainoption" name="login" value="{L_LOGIN}" />
</span> </td>
</tr>
#---[ ADD AFTER ]---
<tr>
<td class="row1" align="center" valign="middle" height="28"><span class="gensmall">Zielforum:
<select name="zielurl">
<option value="">Foren-Übersicht</option>
<option value="viewforum.php?f=1">Forum 1</option>
<option value="viewforum.php?f=2">Forum 2</option>
</select>
</span> </td>
</tr>
In der login.php ändere folgendes:
Code: Alles auswählen
#---[ FIND ]---
if( $session_id )
{
$url = ( !empty($HTTP_POST_VARS['redirect']) ) ? str_replace('&', '&', htmlspecialchars($HTTP_POST_VARS['redirect'])) : "index.$phpEx";
redirect(append_sid($url, true));
}
#---[ REPLACE WITH ]---
if( $session_id )
{
$url = ( !empty($HTTP_POST_VARS['redirect']) ) ? str_replace('&', '&', htmlspecialchars($HTTP_POST_VARS['redirect'])) : (( !empty($HTTP_POST_VARS['zielurl']) ) ? str_replace('&', '&', htmlspecialchars($HTTP_POST_VARS['zielurl'])) : "index.$phpEx");
redirect(append_sid($url, true));
}
Anmerkung:
Wenn eine Weiterleitung über die Variable redirect erfolgt, dann wird die im DropDown-Menü ausgewählte Weiterleitung ignoriert. Daher wäre es sicher sinnvoll, das DropDown-Menü nur anzuzeigen, wenn keine redirect-Variable in der URL vorhanden ist.
Grüße
MagMo
Hm vielen Dank erstmal, aber irgendetwas scheine ich noch falsch zu machen.
Ich werde nach dem Einloggen auf eine ERROR404-Seite weitergeleitet ...
Ausschnitt aus login_body.tplAusschnitt aus login.php. Wenn ich aber <option value=""> habe, funktioniert es und er redirectet auf index.phpAber vielleicht hat das auch mit meinen üblichen Login-Problemen zu tun
siehe dazu
>> das hier <<
Ausserdem möchte ich die Dropdownlist ja nur anzeigen lassen, wenn er nicht gerade login.php?redirect=xy redirectet, weil dann bringt es ja nichts. Wo muss ich dazu nen Switch einbauen?
Yo
Ich werde nach dem Einloggen auf eine ERROR404-Seite weitergeleitet ...
Ausschnitt aus login_body.tpl
Code: Alles auswählen
<td>
<select name="zielurl">
<option value="groupcp.php">test gruppen</option>
</select></td>
Code: Alles auswählen
if( $session_id )
{
$url = ( !empty($HTTP_POST_VARS['redirect']) ) ? str_replace('&', '&', htmlspecialchars($HTTP_POST_VARS['redirect'])) : (( !empty($HTTP_POST_VARS['zielurl']) ) ? str_replace('&', '&', htmlspecialchars($HTTP_POST_VARS['zielurl'])) : "index.$phpEx");
redirect(append_sid($url, true));
}
siehe dazu
>> das hier <<
Ausserdem möchte ich die Dropdownlist ja nur anzeigen lassen, wenn er nicht gerade login.php?redirect=xy redirectet, weil dann bringt es ja nichts. Wo muss ich dazu nen Switch einbauen?
Yo
- MagMo
- Ehemaliges Teammitglied
- Beiträge: 584
- Registriert: 30.10.2005 16:06
- Wohnort: Köln
- Kontaktdaten:
Hi,
Das kannst du aber recht einfach ändern, dazu musst du in der Datei include/functions.php einfach die Funktion redirect($url) ändern. Baue einfach eine if-Weiche ein, die dafür sorgt, dass, wenn $url mit http beginnt, deine forendomain+verzeichnis nicht vorne angefügt wird.
Grüße
MagMo
Externe URLs geben eine Fehlermeldung, da die redirect-Funktion vor die angegebene Datei den Domain+Pfad deines Forum setzt. Gibst du anstelle einer Datei eine Url an, dann wird daraus: http:/ /www .deinedomain.tld/phpbb2/http://www.zieldomain.tld/zieldatei.htmlYoOoOoOo hat geschrieben:Aso, jetzt weiss ich, woran es lag. Ich hab eine externe URL verwendet
Wie ist es möglich, dass ich auch externe URLs verwenden kann?
Das kannst du aber recht einfach ändern, dazu musst du in der Datei include/functions.php einfach die Funktion redirect($url) ändern. Baue einfach eine if-Weiche ein, die dafür sorgt, dass, wenn $url mit http beginnt, deine forendomain+verzeichnis nicht vorne angefügt wird.
Grüße
MagMo