Antwort
 
LinkBack (1) Themen-Optionen Thema durchsuchen Thema bewerten Ansicht
  #1  
Alt 04.07.07, 20:40
TYPO3 Forum Team
Administrator
 
Registriert seit: 23.03.07
Beiträge: 535
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 :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.

Geändert von Junior (13.12.07 um 16:28 Uhr).
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!Spurl this Post!Reddit! Diesen Post bei linksilo.de bookmarken!
Mit Zitat antworten
Sponsored Links
  #2  
Alt 13.12.07, 16:27
Benutzerbild von Junior
TYPO3 Forum Team
Administrator
 
Registriert seit: 18.08.04
Ort: Zürich
Alter: 33
Beiträge: 2.796
Junior eine Nachricht über Skype™ schicken

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
__________________
TYPO3forum.net empfiehlt Domain Factory als Hoster!


Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!Spurl this Post!Reddit! Diesen Post bei linksilo.de bookmarken!
Mit Zitat antworten
Antwort


Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist Aus.
HTML-Code ist An.
Trackbacks are An
Pingbacks are An
Refbacks are An

LinkBacks (?)
LinkBack to this Thread: http://www.typo3forum.net/forum/faq-sonstiges/21757-user-weiterleiten-gesch-tzte-seite-angefordert-redirect-nachher.html
Erstellt von For Type Datum
pablo.hernandez's bookmarks tagged with This thread Refback 09.05.08 18:49

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
newloginbox weiterleiten auf eine andere Seite Saskia TYPO3 4.x Fragen und Probleme 1 21.06.08 07:28
Redirect wenn Wert FALSE cyRus-tC TYPO3 4.x Fragen und Probleme 5 05.06.08 11:20
Auf versteckte Seite weiterleiten funktioniert nicht tob1as TYPO3 4.x Fragen und Probleme 1 19.10.07 13:38
User auf geschützte Seite weiterleiten typo3fan1960 TYPO3 4.x Fragen und Probleme 2 15.06.07 11:25
Direktlink auf geschützte Seite - Redirect urs TYPO3 4.x FE-User 2 15.03.07 14:57


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:43 Uhr.


Powered by vBulletin® Version 3.6.8 Patch Level 2 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.1.0
Template-Modifikationen durch TMS