Ja es geht eben doch: Ein User fordert eine Seite in einem geschützten Bereich an, wird dann automatisch zu einer Seite mit Login Box weitergeleitet. Er meldet sich dort an und gelangt dann zur vorher angeforderten Seite. Hübsch oder?
Hier ein HOWTO wie das ganze geht, auch wenn es ein wenig hacky/tricky ist
Es gibt 2 Varianten das obige zu erreichen, die 2. bietet mehr Möglichkeiten.
Methode A - nur "HTML" http://www.typo3forum.net/forum/faq-...html#post67375
1. Im Install Tool die Eigenschaft
Code:
$TYPO3_CONF_VARS['FE']['pageNotFound_handling'] = 'READFILE:fileadmin/template/main/notFound.html';
so oder ähnlich setzen.
2. Diese Datei erstellen. Der Witz an der Sache ist, das in dieser Datei nun der Marker ###CURRENT_URL### (und auch reason = grund für 404, aber nur auf english) ersetzt werden.
3. Kopiere den HTML Output de in Typo3 erstellten 404 Page mit newloginbox in dieses HTML file.
4. Ändere bei der Newloginbox folgendes (den Marker ###CURRENT_URL### einsetzen)
PHP-Code:
<form action="###CURRENT_URL###" target="_top" method="post" onSubmit="">
5. Fertig
Methode B - PHP Userfunction
1. Im Install Tool die
pageNotFound_handling Option auf sowas setzen:
Code:
$TYPO3_CONF_VARS['FE']['pageNotFound_handling'] = 'USER_FUNCTION:fileadmin/template/main/pageNotFoundHandling.php:user_pageNotFound->pageNotFound';
2. In diesem PHP File eine Klasse und eine Methode erstellen:
PHP-Code:
<?php
class user_pageNotFound {
function pageNotFound($param,$ref){
//code goes here, thats executed on 404
}
}
2. Code einfügen. Ich habe hier einfach mit echo den Webseiten HTML Code ausgegeben:
PHP-Code:
<?php
class user_pageNotFound {
function pageNotFound($param,$ref){
//print out the normal page as HTML
//TODO: Maybe its possible to get the content of a 404Page from the Pagetree?
echo '<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de-CH" lang="de-CH">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<!--
This website is powered by TYPO3 - inspiring people to share!
TYPO3 is a free open source Content Management Framework initially created by Kasper Skaarhoj and licensed under GNU/GPL.
TYPO3 is copyright 1998-2006 of Kasper Skaarhoj. Extensions are copyright of their respective owners.
Information and contribution at http://typo3.com/ and http://typo3.org/
-->
#####SNIP#####
<!-- CONTENT ELEMENT, uid:582/text [begin] -->
<a id="c582"></a>
<!-- Header: [begin] -->
<div class="csc-header csc-header-n1"><h1 class="csc-firstHeader">Die gewählte Seite konnte nicht gefunden werden.</h1></div>
<!-- Header: [end] -->
<!-- Text: [begin] -->
<p class="bodytext">Leider konnte die Seite  "';
echo 'http://'.getenv("SERVER_NAME").$param['currentUrl'];
echo ' " nicht gefunden werden. Falls die URL doch korrekt sein sollte, wenden Sie sich bitte an den Webmaster. Dies können Sie mittels des Formulars unter Kontakt tun.</p>
<!-- Text: [end] -->';
//now check if the requested URL is from the protected area
//works nice in this case because all pages are after /leiterbereich
if (strripos($param['currentUrl'],'leiterseite')){
echo ' <!-- CONTENT ELEMENT, uid:582/text [end] -->
<!--
BEGIN: Content of extension "newloginbox", plugin "tx_newloginbox_pi1"
-->
<div class="tx-newloginbox-pi1">
<br/><br/><br/>
<h3>Login, falls geschützte Seite angefordert wurde</h3>
<form action="';echo $param['currentUrl'];echo '" target="_top" method="post" onSubmit="">
<table>
<tbody>
<tr>
<th><label for="user">Benutzername:</label></th>
<td><input type="text" id="user" name="user" value="" /></td>
</tr>
<tr>
<th><label for="pass">Passwort:</label></th>
<td><input type="password" id="pass" name="pass" value="" /></td>http://www.typo3forum.net/forum/faq-sonstiges/21757-wie-user-weiterleiten-wenn-geschuetzte-seite-angefordert-wird-redirect-nachher.html#post67375
</tr>
<tr>
<th><label for="permalogin">Angemeldet bleiben:</label></th>
<td>
<input name="permalogin" value="0" type="hidden" disabled="disabled" id="permaloginHiddenField">
<input name="permalogin" value="1" type="checkbox" checked="checked" id="permalogin" onclick="document.getElementById(\'permaloginHiddenField\').disabled = this.checked;" />
http://www.typo3forum.net/forum/faq-sonstiges/21757-wie-user-weiterleiten-wenn-geschuetzte-seite-angefordert-wird-redirect-nachher.html#post67375http://www.typo3forum.net/forum/faq-sonstiges/21757-wie-user-weiterleiten-wenn-geschuetzte-seite-angefordert-wird-redirect-nachher.html#post67375
</td>
</tr>
</tbody>
<tfoot>
<tr>
<td></td>
<td>
<input type="submit" name="submit" value="Anmelden" />
</td>
</tr>
</tfoot>
</table>
<input type="hidden" name="logintype" value="login" />
<input type="hidden" name="pid" value="99" />
<input type="hidden" name="redirect_url" value="" />
</form>
<p><a href="leiterseite/?no_cache=1&tx_newloginbox_pi1%5Bforgot%5D=1">Passwort vergessen?</a></p>
</div>
<!-- END: Content of extension "newloginbox", plugin "tx_newloginbox_pi1" -->';
}
//now print out the rest of the page :smile:
echo '
######SNIP#######
';
}
}
?>
Bemerkung: Wie man sieht wird auf meiner Seite die Loginbox nur dann angezeigt, wenn die angeforderte URL in einem geschützten Bereich war. Genau das ist mit der Methode A nicht möglich.
Ergänzung zur Methode B: Man könnte den Inhalt einer Typo3 404 Seite mit folgendem Code auslesen. Somit wäre sichergestellt, dass bei Designänderungen auch die 404 Seite gleichbleibt. Im Weiteren kann man dann einfach konfortabel eine typo3 Seite verwalten. Der Marker setzt man einfach mit einem passenden str_replace denke ich.
PHP-Code:
$file = fopen ("http://mydomain.com/index.php?id=206", "r"); //link zur Typo3 404 Page
if (!$file) {
echo "<p>Keine 404 Page gefunden.</p>\n";
exit;
}
$tmp = fread ($file,99999);
$tmp = str_replace('action="leiterseite/"','action="'.$param['currentUrl'],$tmp); //achtung diese Zeile ist noch nicht getestet...
echo $tmp;
fclose($file);
Vielleicht ist das ja sogar verständlich.

Richtig cool wäre es natürlich, wenn man mit ein wenig php den Seiteninhalt einer in Typo3 erstellten 404 Page holen könnte. Vielleicht kann das ja mal jemand machen.