Erweiterung der Login-Seite

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
YoOoOoOo
Mitglied
Beiträge: 71
Registriert: 01.05.2006 16:34
Wohnort: YoOoOoOoOo
Kontaktdaten:

Erweiterung der Login-Seite

Beitrag von YoOoOoOo »

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
Benutzeravatar
MagMo
Ehemaliges Teammitglied
Beiträge: 584
Registriert: 30.10.2005 16:06
Wohnort: Köln
Kontaktdaten:

Beitrag von MagMo »

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
Patrik
Mitglied
Beiträge: 208
Registriert: 23.04.2005 13:30
Wohnort: Hallein

Beitrag von Patrik »

Einfach folgendes auf der login_body.tpl hinzufügen.

Code: Alles auswählen

    <select name="redirect">
      <option value="index.php">Index</option>
      <option value="viewforum.php?f=1">Forum 1</option>
    </select>
Für jedes Seite einfach ein neues option-Element machen.

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.
YoOoOoOo
Mitglied
Beiträge: 71
Registriert: 01.05.2006 16:34
Wohnort: YoOoOoOoOo
Kontaktdaten:

Beitrag von YoOoOoOo »

funktioniert leider noch nicht ganz es wird weiterhin auf index.php redirectet, egal was ich auswähle.
liegt aber wohl an dem redirect in der login.php ... :(

Yo
Patrik
Mitglied
Beiträge: 208
Registriert: 23.04.2005 13:30
Wohnort: Hallein

Beitrag von Patrik »

Hast du auch die entsprechende Seite unter den value-Attribut geändert?
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.
YoOoOoOo
Mitglied
Beiträge: 71
Registriert: 01.05.2006 16:34
Wohnort: YoOoOoOoOo
Kontaktdaten:

Beitrag von YoOoOoOo »

Funktioniert leider nicht. Ich denke, man müsste hier was ändern:
if (!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));
}
Ansonsten redirectet er immer auf index.php :-?

Yo
Benutzeravatar
MagMo
Ehemaliges Teammitglied
Beiträge: 584
Registriert: 30.10.2005 16:06
Wohnort: Köln
Kontaktdaten:

Beitrag von MagMo »

Hi,
YoOoOoOo hat geschrieben:Ich denke, man müsste hier was ändern
...
Nein!
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>
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:

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>
Für diese Änderung gilt das selbe, wie für die vorherige!

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));
					}
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
YoOoOoOo
Mitglied
Beiträge: 71
Registriert: 01.05.2006 16:34
Wohnort: YoOoOoOoOo
Kontaktdaten:

Beitrag von YoOoOoOo »

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.tpl

Code: Alles auswählen

			<td>  
<select name="zielurl"> 
      <option value="groupcp.php">test gruppen</option> 
    </select></td>
Ausschnitt aus login.php. Wenn ich aber <option value=""> habe, funktioniert es und er redirectet auf index.php

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)); 
               }
Aber 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
YoOoOoOo
Mitglied
Beiträge: 71
Registriert: 01.05.2006 16:34
Wohnort: YoOoOoOoOo
Kontaktdaten:

Beitrag von YoOoOoOo »

Aso, jetzt weiss ich, woran es lag. Ich hab eine externe URL verwendet :wink:
Wie ist es möglich, dass ich auch externe URLs verwenden kann?

Yo
Benutzeravatar
MagMo
Ehemaliges Teammitglied
Beiträge: 584
Registriert: 30.10.2005 16:06
Wohnort: Köln
Kontaktdaten:

Beitrag von MagMo »

Hi,
YoOoOoOo hat geschrieben:Aso, jetzt weiss ich, woran es lag. Ich hab eine externe URL verwendet :wink:
Wie ist es möglich, dass ich auch externe URLs verwenden kann?
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.html :D

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
Antworten

Zurück zu „Coding & Technik“