Hi David, 

1 habe ich mir noch nicht ganz durchgedacht; ausser dem pageNotFoundHandling in 
der localconf kenne ich keinen Hook, der dafür zur Verfügung stehen könnte. 

2 wäre über eine Extension an sich schon möglich, allerdings bekomme ich dann 
immer einen 404-Header. Lediglich der Inhalt der 404-Seite wird korrekt 
gezeigt. 

Das ganze ist eigentlich ein ziemlich gängiges Problem, sobald man einen 
Loginbereich hat, seltsam, dass es dafür noch gar keine Lösung im TER gibt, 
nicht mal eine veraltete. (Also zumindest finde ich keine :-)

Ich werde es wohl mit einer Userfunc lösen, die über das Install-Tool geladen 
wird (pageNotFoundHandling). Man kann dort über die $param-Variable abfragen, 
ob es sich um eine interne Seite handelt und die Sprachparameter abfangen 
(substring "en" oder Sprachparameter "L"). 

Leider ist es prinzipiell nicht möglich, sowohl den richtigen Header zu senden 
(404 resp. 403) und danach auf die passenden Seiten weiterzuleiten, es geht 
immer nur entweder oder. Also muss der Content der Fehlerseite über 
file_get_contents oder CURL ausgegeben werden. 

Ausserdem muss die fe_user-Session irgendwie erhalten werden, sonst 
funktioniert das Login erst beim zweiten Aufruf. 

Falls es jemand brauchen kann: 

<?php
define(LOGIN_URL, "http://mlvb.pl/aktuelles/login.html";);
define(NOTFOUND_URL, "http://mlvb.pl/error.html";);

class user_pageNotFound {
        function pageNotFound($param, $ref) {

                if ($param["pageAccessFailureReasons"]["fe_group"] != 
array(""=>0)) {
                        $url = LOGIN_URL."?redirect_url=" . 
$param["currentUrl"];
                        header("HTTP/1.0 403 Forbidden");
                } else {
                        $url = NOTFOUND_URL;
                        header("HTTP/1.0 404 Not Found");
                }
                
                session_start();
                $strCookie = 'PHPSESSID=' . $_COOKIE['PHPSESSID'] . '; path=/';
                session_write_close();
                
                if (function_exists('curl_version') == "Enabled" ) {
                        $contents = $this->curlGet($url,$strCookie);
                } else {
                        $contents = @file_get_contents($url);
                        if(!$contents) {
                                $contents = 'please enable allow_url_fopen 
option or install cUrl!';
                        }
                }
                
                if ($contents) return $contents;
                else return FALSE;              
        }

        function curlGet($url,$strCookie=""){
                $curl = curl_init();
                $timeout = 5; 
                curl_setopt ($curl, CURLOPT_URL, $url);
                curl_setopt($curl, CURLOPT_COOKIE, $strCookie);
                curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1);
                curl_setopt ($curl, CURLOPT_CONNECTTIMEOUT, $timeout);
                $data = curl_exec($curl);
                curl_close($curl);      
                return $data;
        }
}
?>

Das ist ein bisschen zusammengeklaut, von hier: 
http://blog.sitegefuehl.de/2011/09/02/typo3-404-handling-feuser-geschuetzter-bereich-und-die-mehrsprachigkeit/
und aus der Extension ws_404

Gruß
Peter




Am 27.05.2013 um 15:37 schrieb David Bruchmann <da...@bruchmann-web.de>:

> Normalerweise müßte zur Login-seite gelinkt werden mit der eigentlichen URL 
> als parameter der tatsächlichen URL zur Weiterleitung.
> 
> Ansonsten könnte man
> 1) einen Hook nutzen der die Fehlermeldung abfängt und stattdessen ein 
> Login-Formular anzeigt - wichtig dabei: der 404 header sollte nicht gesendet 
> werden.
> 2) auf eine spezielle Umleitungsseite linken, die per Erweiterung solche 
> Anfragen richtig interpretiert.
> 

-- 
-----------------------------------------------
Peter Linzenkirchner
Lisardo EDV-Beratung
Katharinengasse 20, Rückgebäude, Eingang Bleigäßchen 5
86150 Augsburg
Tel. +49-821-150565, Fax +49-821-150595
http://typo3-lisardo.de
i...@lisardo.de
-----------------------------------------------

--
Xing: http://www.xing.com/profile/Peter_Linzenkirchner
Web: http://www.typo3-lisardo.de
Facebook: http://tinyurl.com/lisardo-multimedia

_______________________________________________
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german

Antwort per Email an