TYPO3 404 Handling, feuser (geschuetzter Bereich) und die Mehrsprachigkeit

Vielleicht haben es einige von euch bemerkt: Hat man einen geschützten Bereich in TYPO3 (4.5.5) mit feuser und srfeuserregister laufen, außerdem eine Mehrsprachigkeit (in meinem Fall deutsch als default und englisch als id=1) und das 404 Handling an, dann kommt es zu Problemen. Anstatt die Login Maske von feuser aufzurufen, nachdem ein Link zum geschützen Bereich aufgerufen wurde, erscheint eine 404 Seite. Dieses Problem habe ich folgendermaßen mit einer kleinen Funktion behoben:


<?php
define(LOGIN_URL, "http://www.domain.de/login.html");
define(LOGIN_URL_EN, "http://www.domain.de/en/login.html");
define(NOTFOUND_URL, "http://www.domain.de/404.html");
define(NOTFOUND_URL_EN, "http://www.domain.de/en/404.html");
  
class user_pageNotFound {
  function pageNotFound($param, $ref) {
    if ($param["pageAccessFailureReasons"]["fe_group"] != array(""=>0)) {
      header("HTTP/1.0 403 Forbidden");
	  if ($_GET['L'] == 1){
      	$url = LOGIN_URL_EN."?redirect_url=" . $param["currentUrl"]; 
       } else {
			$url = LOGIN_URL."?redirect_url=" . $param["currentUrl"];
	  }
    } elseif ((substr($param['currentUrl'], 1, 2)) == "en") {
      	$url = NOTFOUND_URL_EN;   
    } else {
		$url = NOTFOUND_URL;  
	}
     
    session_start();
    $strCookie = 'PHPSESSID=' . $_COOKIE['PHPSESSID'] . '; path=/';
    session_write_close();
   
    $c = curl_init();
    curl_setopt($c, CURLOPT_URL, $url);
    curl_setopt($c, CURLOPT_COOKIE, $strCookie);
    $contents = curl_exec($c);
    curl_close($c);
 
    if ($contents) return $contents;
        else return FALSE;
  }
}
?>

Hierbei wird vor dem 404 Handling auch noch die RealURL abgefragt und je nach Sprache (in meinem Fall „en“) eine andere 404 Seite ausgegeben. Bitte ersetzt oder erweitert diesen Bereich nach euren Anforderungen. Außerdem müssen von euch natürlich auch die vier Konstanten (LOGIN_URL, NOTFOUND_URL..) geändert werden.

Zuvor muss in dem Install Tool oder in der localconf.php folgender Eintrag geändert werden: [FE][pageNotFound_handling] = USER_FUNCTION:fileadmin/scripts/pageNotFoundHandling.php:user_pageNotFound->pageNotFound und natürlich der oben genannte Code in das jeweilige Verzeichnis unter fileadmin in die Datei pageNotFoundHandling.php eingefügt werden.

Facebook Like

Ein Gedanke zu „TYPO3 404 Handling, feuser (geschuetzter Bereich) und die Mehrsprachigkeit

  1. Gute Lösung, funktioniert bestens. Doch leider scheint es mit der PHP Session ID ein Problem zu geben.
    Typo3 generiert unter Protokoll im Backend folgende Fehlermeldung:

    Core: Error handler (FE): PHP Warning: session_start() [function.session-start]: The session id is too long or contains illegal characters, valid characters are a-z, A-Z, 0-9 and '-,' in /home/xxx/xxx/fileadmin/user_func/pageNotFoundHandling.php line 36

    Zeile 36 ist im oberen Beispiel Zeile 22. Kann man die Meldung ignorieren?

    Danke

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.