Seite 1 von 1

Erweiterung der Login-Seite

Verfasst: 21.06.2006 09:48
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

Verfasst: 21.06.2006 12:13
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

Verfasst: 21.06.2006 14:31
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.

Verfasst: 21.06.2006 15:34
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

Verfasst: 21.06.2006 16:26
von Patrik
Hast du auch die entsprechende Seite unter den value-Attribut geändert?

Verfasst: 16.07.2006 08:55
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

Verfasst: 16.07.2006 10:06
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

Verfasst: 16.07.2006 12:01
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

Verfasst: 17.07.2006 09:10
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

Verfasst: 19.07.2006 12:01
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