Zum Inhalt springen

mm_forum und https

Erstellt am 23. November 2007 · 1 Antwort · letzte Antwort am 24. November 2007

Tags: Frage

banzaioslo ·

Hallo liebe TYPO3 Hacker 😃

Ich bin begeistert von der TYPO3-Community. Bei meinen bisherigen Problemen habe ich immer hilfreiche Tipps nachlesen können. *Daumen hoch*

Ich bin jetzt jedoch auf einen potentiellen Bug des sonst sehr nützlichen mm_forum gestoßen, wenn man das https-Protokoll benutzt. Bei FORM-Tags wird die URL des "action"-Parameters falsch generiert.

Im Einzelnen:
Ich baue grade eine Seite auf und habe dort das mm_forum integriert.
Die URL: https://webtools.imbs.uni-luebeck.de/snptogo_cms/index.php?id=6&tx_mmforum_pi1[action]=list_topic&tx_mmforum_pi1[fid]=2
Loginname: 123123
Passwort: 123123

Nun klicke man "new topic", um eine Neues Thema zu erstellen. Es erscheint die gewohnte Eingabemaske. Wenn man nun etwas senden möchte mit Klick auf "Send", dann verläuft die Anfrage im Sande. Der Grund ist, dass die Ziel-URL ist nicht korrekt ist. Die URL beginnt mit http und nicht mit https.

Offenbar ist das auf einen Fehler, in der Funktion getAbsUrl($link) in "mm_forum/pi1/class.tx_mmforum_pi1.php" zurückzuführen. Dort soll ein relativer $link in einen absoluten umgewandelt werden. So weit ich das sehe scheint dort jedoch nur http verarbeitet.

Was meint ihr?

Viele Grüße
Daniel

banzaioslo ·

Hi Leute,

ich schlage als Fix folgenden Code vor (ich habe ihn bei mir testweise integriert):

    function getAbsUrl($link) {
    	if(substr($link,0,7)=='http://' || substr($link,0,8-)=='https://') return $link;

    	if($GLOBALS['TSFE']->config['config']['baseURL']) {
    		$baseUrl = $GLOBALS['TSFE']->config['config']['baseURL'];
    		if(substr($baseUrl,-1,1)!='/') $baseUrl = $baseUrl.'/';
    		if(substr($link,0,1)=='/') $link = substr($link,1);
    		$result = $baseUrl.$link;
    	}
  		else {
        $dirname = dirname(t3lib_div::getIndpEnv('SCRIPT_NAME'));
        $dirname = tx_mmforum_pi1::appendTrailingSlash($dirname);
        $dirname = tx_mmforum_pi1::removeLeadingSlash($dirname);
        if($dirname == '/') $dirname = '';
        /*
        $host    = t3lib_div::getIndpEnv('HTTP_HOST');
        $host    = tx_mmforum_pi1::appendTrailingSlash($host);
        */
        $host    = explode("/", t3lib_div::getIndpEnv('TYPO3_SITE_URL'));
        $host    = $host[0]."//".$host[2]."/";
        if(substr($host,0,7)!='http://' && substr($host,0,8-)!='https://') $host = 'http://'.$host;
        $link = tx_mmforum_pi1::removeLeadingSlash($link);
        $result = $host.$dirname.$link;
      }
	    return $result;
    }