Ergebnis 1 bis 7 von 7

Thema: Wie User weiterleiten, wenn geschützte Seite angefordert wird? +redirect nachher

      
  1. #1
    TYPO3 Forum Team Administrator
    Registriert seit
    23.03.2007
    Beiträge
    806

    Daumen hoch Wie User weiterleiten, wenn geschützte Seite angefordert wird? +redirect nachher

    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 &nbsp"'
    ;    
                echo 
    'http://'.getenv("SERVER_NAME").$param['currentUrl'];
                echo 
    '&nbsp;" 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 :)
            
    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.
    Geändert von Junior (13.12.2007 um 16:28 Uhr)

  2. #2
    TYPO3 Forum Team Administrator Avatar von Junior
    Registriert seit
    18.08.2004
    Ort
    München
    Alter
    37
    Beiträge
    2.922
    Methode B hat bei mir nicht funktioniert, da ich nicht einen Seitenbaum (Beispiel "leiterseiten") mit allen Seiten habe die nur für Mitglieder sind, sondern die Mitgliederseiten auf die ganze Homepage "verstreut" sind, daher musste ich die Loginbox permanent einbinden. Ausserdem habe ich ein paar Phlogiston-Flüchtigkeits-Bugs ausgebügelt

    Hier eine kurze Anleitung in 3 Schritten

    Schritt 1
    Im Install Tool suchen:
    Code:
    pageNotFound_handling
    und folgendes eingeben:
    Code:
    USER_FUNCTION:fileadmin/template/main/pageNotFoundHandling.php:user_pageNotFound->pageNotFound
    Achtung: Pfad und Dateiname anpassen!

    Schritt 2
    Folgende Datei auf deinen Server legen (der Pfad und Dateiname muss identisch sein mit dem in Schritt 1)

    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>
        <title>'
    ;echo 'http://'.getenv("SERVER_NAME").'</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        <link rel="stylesheet" type="text/css" href="/fileadmin/css/screen/content.css">

    <!--
        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/
    -->
    <!--#####SNAP#####-->
        <!--  CONTENT ELEMENT, uid:582/text [begin] -->
            <a id="c582"></a>
            <!--  Header: [begin] -->
            <center>
                  <table width="940px">
                <tr><td>
                <a href="'
    ;echo 'http://'.getenv("SERVER_NAME").'"><img src="';echo 'http://'.getenv("SERVER_NAME").'/fileadmin/img/logo_mit_web_randlos.gif" border="0"></a>
                <h1>Fehler auf '
    ;echo 'http://'.getenv("SERVER_NAME").'</h1>
            <!--  Header: [end] -->
            <!--  Text: [begin] -->
                <p>Leider konnte die von Ihnen gesuchte Seite <strong>'
    ;    
                echo 
    'http://'.getenv("SERVER_NAME").$param['currentUrl'];
                echo 
    '</strong> nicht gefunden werden.</p>
                <p>Eventuell haben Sie auch versucht eine Seite zu &ouml;ffnen die nur f&uuml;r Mitglieder ist.<p>
                <p>Wenn dies der Fall ist geben Sie bitte untenstehend Ihre Mitgliedsdaten ein und klicken anschliessend auf "Anmelden".
                Wenn Sie das nicht zur gew&uuml;nschten Seite f&uuml;hrt, k&ouml;nnen Sie davon ausgehen, dass es die von Ihnen gesuchte Seite hier nicht gibt.</p>
                Zur Homepage <a href="'
    ;echo 'http://'.getenv("SERVER_NAME").'">';echo 'http://'.getenv("SERVER_NAME").'</a>
                </p>

            <!--  Text: [end] -->'
    ;

                 echo 
    '    <!--  CONTENT ELEMENT, uid:582/text [end] -->
                                <!--
                            BEGIN: Content of extension "loginbox_macmade", plugin "tx_loginboxmacmade_pi1"
                        -->
                                    
                    <h3>Mitglieder-Login</h3>
                    
                    <form action="http://'
    .getenv("SERVER_NAME").$param['currentUrl'].'" target="_top" method="post" onSubmit="">
                        <table>
                            <tbody>
                                <tr align="left">
                                    <th><label for="user">Benutzername:</label></th>
                                    <td><input type="text" id="user" name="user" value="" /></td>
                                </tr>
                                <tr align="left">
                    
                                    <th><label for="pass">Passwort:</label></th>
                                    <td><input type="password" id="pass" name="pass" value="" /></td>
                                </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;" />
                                        <input name="redirect_url" type="hidden" value="http://'
    .getenv("SERVER_NAME").$param['currentUrl'].'" />
                                    </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="262" />                
                    </form>
                    
                    <p><a href="'
    ;echo 'http://'.getenv("SERVER_NAME").'/bffs/mitglieder-login.html?tx_loginboxmacmade_pi1%5Bforgot%5D=1&cHash=342df2ac83">Passwort vergessen?</a></p>
                    
                    </table>
                    </center>
                        <!-- END: Content of extension "loginbox_macmade", plugin "tx_loginboxmacmade_pi1" -->'
    ;
            
    //}
            //now print out the rest of the page :smile:
            
    echo '                
    <!--######SNAP#######-->
            '
    ;

        }
    }

    ?>
    Schritt 3
    Folgendes musst du in der Datei noch anpassen:

    - Pfad zur CSS Datei
    - Pfad zum Logo
    - Pfad zum Passwort vergessen Link

    Die Texte können natürlich nach belieben abgeändert werden.

    Das sollte alles gewesen sein.

    Lieben Gruss

    ling und Junior
    Two hours of trial and error can save ten minutes of manual reading.

    Meine neue Seite www.monot.com. Jetzt noch weicher.

  3. #3
    Forum Aktivist
    Registriert seit
    06.02.2008
    Alter
    30
    Beiträge
    50
    Schon ein wenig älter mittlerweile, aber das is super, vielen Dank! Ich hab die Weiterleitung für eine fehlerhafte Url, die nicht im Loginbereich ist, einfach wieder auf die homeseite umgeleitet:

    PHP-Code:
           if (strripos($param['currentUrl'],'leiterseite')){
              
    html-Code für loginbox...
           } else {
              
    header ("HTTP/1.1 301 Moved Permanently");
              
    header ("Location: http://mysite.de/");
              exit(); 
            } 

  4. #4
    Forum Zuschauer
    Registriert seit
    29.09.2011
    Alter
    33
    Beiträge
    7
    Welch ein Zufall, ich bastel auch gerade an dieser Lösung
    Das Beispiel basiert auf loginbox_macmade, funktioniert das auch mir der eingebauten Extension "felogin"? Natürlich mit einigen Anpassungen? (Welche ich noch nicht gefunden habe :sad: )

    Viele Grüsse,
    Matthias

  5. #5
    Forum Aktivist
    Registriert seit
    06.02.2008
    Alter
    30
    Beiträge
    50

    felogin

    also ich habs mit der felogin gemacht, einfach deinen quelltext kopieren von einer Seite, auf der du die loginbox schon eingebaut hast. Bei ist das die Startseite mit schwarzem Overlay und erkennbar ist nur die loginbox. Was bei mir allerdings nicht der fall ist, dass dann weitergeleitet wird auf die angeforderte Seite, weil ich im Backend ja eingestellt hab, auf welche Seite man nach der Anmeldung kommen soll.

  6. #6
    Forum Zuschauer
    Registriert seit
    29.09.2011
    Alter
    33
    Beiträge
    7
    Geht! Gut! Naja, wenigstens für eines meiner Projekte.

    Und schon stehe ich vor dem nächsten Problem, ich habe in meiner Typo3 Installation 4 verschiedene Projekte am Laufen. Natürlich alle mit unterschiedlichen Sysordnern für die User. Im Installtool kann man aber lediglich auf genau eine Datei verweisen, die im Fehlerfall eine User Function ausgeführt.
    Kennt jemand eine Möglichkeit, evtl über Conditions per Typoscript die localconf.php umzuschreiben? Je nachdem auf welcher domain man sich befindet wird eine anderes pageunavailable_handling ausgeführt?

    Oder vielleicht denke ich auch nur viel zu kompliziert und es gibt eine einfachere Lösung?

    Viele Grüsse,
    Matthias

  7. #7
    Forum Aktivist
    Registriert seit
    06.02.2008
    Alter
    30
    Beiträge
    50

    also wenn alle sachen immer in einem seitenbaum sind...

    und du auch die felogin-seiten alle innerhalb eines baums hast, musst du halt 8 conditions machen:

    PHP-Code:
    if (strripos($param['currentUrl'],'leiterseite')){ 
    heissen deine unterseiten der 4 seiten alle gleich, würd leiterseite allein nimmer reichen

 

 

LinkBacks (?)

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Facebook Kommentare

Ähnliche Themen

  1. newloginbox weiterleiten auf eine andere Seite
    Von Saskia im Forum TYPO3 4.x Fragen und Probleme
    Antworten: 1
    Letzter Beitrag: 21.06.2008, 07:28
  2. Redirect wenn Wert FALSE
    Von cyRus-tC im Forum TYPO3 4.x Fragen und Probleme
    Antworten: 5
    Letzter Beitrag: 05.06.2008, 11:20
  3. Auf versteckte Seite weiterleiten funktioniert nicht
    Von tob1as im Forum TYPO3 4.x Fragen und Probleme
    Antworten: 1
    Letzter Beitrag: 19.10.2007, 13:38
  4. User auf geschützte Seite weiterleiten
    Von typo3fan1960 im Forum TYPO3 4.x Fragen und Probleme
    Antworten: 2
    Letzter Beitrag: 15.06.2007, 11:25
  5. Direktlink auf geschützte Seite - Redirect
    Von urs im Forum TYPO3 4.x FE-User
    Antworten: 2
    Letzter Beitrag: 15.03.2007, 14:57

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237