Illegal use of $_GET. You must use the request class or requ

In diesem Forum gibt es Starthilfe zum neuen Extension-System von phpBB 3.1/3.2. Fragen zur Entwicklung von Extensions und zur Konvertierung von phpBB 3.0.x MODs sind ebenfalls willkommen.
Antworten
MaDay
Mitglied
Beiträge: 100
Registriert: 19.04.2016 19:54

Illegal use of $_GET. You must use the request class or requ

Beitrag von MaDay »

Hallo
ich möchte gern das Angebot Gesetze im Text verlinken von http://buzer.de nutzen.
Beim Aufruf zur Installation erhalte ich diese Fehlermeldung:
General Error
Illegal use of $_GET. You must use the request class or request_var() to access input data. Found in /www/htdocs/pfad/pfad/buzer_install3.php on line 24. This error message was generated by deactivated_super_global.
Ich habe bei der Suche hier das gefunden, aber es ist nicht ganze das gleiche Problem?

buzer_install3.php sieht so aus:

Code: Alles auswählen

  <?php

        define('IN_PHPBB', true);
        $phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
        $phpEx = substr(strrchr(__FILE__, '.'), 1);
        require($phpbb_root_path . 'common.' . $phpEx);

$config = array(
        in                 => "viewtopic.php",
        out         => "viewtopic_buzer.php",
        backup        => "viewtopic_buzer_org.php",
        buzer        => "buzer_phpbb3.php",
        errors        => array(),
        msgs        => array(),
        content => "",
        incl         => "",
        set                 => "",
        charset        => "",
);




if ( isset($_GET['install']) and preg_match("/^1$/", $_GET['install'])) {
        # Installation

        if ( isset($_GET['charset']) and preg_match("/^([a-z0-9\-]+)$/i", $_GET['charset'], $treffer) ) {
                $config[charset] = $treffer[1];
        } else {
                $config[charset] = "utf-8";
        }
        array_push($config[msgs], "verwende '$config[charset]'");

        $install = "Installation " . (install($config) ? "" : "nicht ") . "erfolgreich<br />";

}

if ( isset($_GET['deinstall']) and preg_match("/^1$/", $_GET['deinstall'])) {
        # Deinstallation


        $deinstall = "Deinstallation " . (deinstall($config) ? "" : "nicht ") . "erfolgreich<br />";

}

if ( count($config[errors])) {
        $error         = '<b>aufgetretene Fehler:</b><div style="color:red;">' . implode( '<br />', $config[errors]) . '</div>';
}

if ( count($config[msgs])) {
        $msg         = '<b>Ablauf:</b><div style="color:green;">' . implode( '<br />', $config[msgs]) . '</div>';
}

$content = <<<HTML
<html>
        <head>
                <title>Buzer-Plugin (de)installieren</title>
        </head>
        <body style="padding:10px;">
                <div style=""> Mit diesem Skript können Sie das Plugin installieren und wieder entfernen</div>
                <div style="margin-top:20px;padding:5px;border:1px solid #000000;"><b>Installation</b><br /><br />
                        Vor der Installation müssen Sie die im Zip-File enthaltene Datei '$config[buzer]' in das Stammverzeichnis Ihrer phpBB-Installation kopiert haben.<br /><br />
                        <form action="">
                                vom Forum verwendetes Charset <input type="text" name="charset" value="$config[charset]"> (2.x wahrscheinlich 'iso-8859-1', 3.x wahrscheinlich 'uft-8')<br />
                                <input type="submit" value="jetzt installieren">
                                <input type="hidden" name="install" value="1">
                        </form>
                </div>
                <div style="margin-top:20px;padding:5px;border:1px solid #000000;"><b>Deinstallation</b><br /><br />
                        Es wird die bei der Installation als '$config[backup]' gesicherte '$config[in]' wiederhergestellt<br /><br />
                        <form action="">
                                <input type="submit" value="jetzt deinstallieren">
                                <input type="hidden" name="deinstall" value="1">
                        </form>

                </div>
                <div style="margin-top:20px;padding:5px;border:1px solid #000000;"><b>Ergebnis:</b><br />
                        $install
                        $deinstall<br />
                        $msg<br /><br />
                        $error<br /><br />
                </div>
        </body>
</html>
HTML;

echo $content;

function deinstall(&$config) {


        if (!is_writeable( "./")) {
                array_push($config[errors], "Verzeichnis './' nicht schreibbar");
                return 0;
        }

        if ( !is_file( $config[backup])) {
                array_push($config[errors], "Datei '$config[backup]' nicht gefunden");
                return 0;
        }

        if ( !is_writeable( $config[backup])) {
                array_push($config[errors], "Datei '$config[backup]' nicht schreibbar");
                return 0;
        }

        if ( !is_writeable( $config[in])) {
                array_push($config[errors], "Datei '$config[in]' nicht schreibbar");
                return 0;
        }

        if ( is_file($config[out]) ) {
                if (!is_writeable( $config[out])) {
                        array_push($config[errors], "Datei '$config[out]' nicht schreibbar");
                        return 0;
                } else {
                        if ( !unlink($config[out]) ) {
                                array_push($config[errors], "Datei '$config[out]' nicht löschbar");
                                return 0;
                        }
                }
        }

        # Tabelle erzeugen
        global $db;

        # anlegen cache
        if ( !$db->sql_query( 'drop table buzer_cache', false)) {
                array_push($config[errors], "Cache-Tabelle 'buzer_cache' konnte nicht entfernt werden");
                return 0;
        } else {
                array_push($config[msgs], "Cache-Tabelle 'buzer_cache' entfernt");
        }

        $rename = rename( $config[in], $config[out] );
        if ( $rename ) {
                array_push($config[msgs], "Datei '$config[in]' verschoben nach '$config[out]'");
        } else {
                array_push($config[errors], "Datei '$config[in]' konnte nicht nach '$config[out]' verschoben werden");
                return 0;
        }

        $rename = rename( $config[backup], $config[in] );
        if ( $rename ) {
                array_push($config[msgs], "Datei '$config[backup]' wiederhergestellt als '$config[in]'");
        } else {
                array_push($config[errors], "Datei '$config[backup]' konnte nicht als '$config[in]' wiederhergestellt werden");
        }

        return $rename;
}


function install(&$config) {

        if ( !is_writeable( $config[in])) {
                array_push($config[errors], "Datei '$config[in]' nicht schreibbar");
                return 0;
        }
        if ( !is_writeable( "./")) {
                array_push($config[errors], "im Verzeichnis kann './' nicht geschrieben werden");
                return 0;
        }
        if ( is_file($config[out]) and !is_writeable( $config[out])) {
                array_push($config[errors], "die Datei '$config[out]' nicht geschrieben werden");
                return 0;
        }
        if ( !is_file($config[buzer])) {
                array_push($config[errors], "die Datei '$config[buzer]' wurde nicht gefunden");
                return 0;
        }
        if ( !is_readable($config[buzer])) {
                array_push($config[errors], "die Datei '$config[buzer]' ist nicht lesbar");
                return 0;
        }

        # Tabelle erzeugen
        global $db;

        # anlegen cache
        if ( !$db->sql_query( 'create table if not exists buzer_cache (id int primary key, hash varchar(32), cache mediumtext not null, dateinsert datetime, dateupdate datetime, state tinyint, unique index pk_buzer_cache_hash (hash))', false)) {
                array_push($config[errors], "cache Tabelle konnte nicht erzeugt werden");
                return 0;
        } else {
                array_push($config[msgs], "Cache-Tabelle 'buzer_cache' erzeugt");
        }


        # ermitteln der letzten Post-ID
        $db->sql_query("insert ignore into ".CONFIG_TABLE."(config_name, config_value) select 'buzer_max_postid', max(cast(post_id as signed)-100000) from ". POSTS_TABLE);
        $db->sql_query("delete from ".CONFIG_TABLE." where config_name='buzer_cache_table'");
        set_config('buzer_cache_table', 'buzer_cache');


        $fin                 = fopen($config[in], 'r');
        $fout                 = fopen($config[out], 'w');
        $include        = '';
        $set                = '';

        while ( $line = fgets($fin )) {

                if ( !$include and preg_match( '/^(\s*include\s*\(\s*\$.*)(includes\/bbcode\.\'\s*\.\s*\$phpEx\s*\)\s*;)/',$line, $treffer )) {
                        # eintragen des includes
                        fwrite( $fout, $line);
                        fwrite( $fout, "$treffer[1]$config[buzer]');\n");
                        $include = "Datei '$config[out]': Einfügen der Zeile '$treffer[1]$config[buzer]');'";
                        array_push($config[msgs], $include);

                } elseif ( $include and !$set and preg_match( '/^(\s*\'MESSAGE\'\s*\=\>\s*)\$message\s*,/',$line, $treffer )) {
                        # eintragen aufruf der linkfunktion
                        fwrite( $fout, "# $line");
                        $set = "Datei '$config[out]': Auskommentieren der Zeile '$line'";
                        array_push($config[msgs], $set);
                        #fwrite( $fout, "$treffer[1]buzer_LinkIt(\$message, \$row['post_id'], '$config[charset]'),\n");
                        $flineout = "$treffer[1] (\$config['buzer_max_postid'] and \$config['buzer_max_postid']<\$row['post_id']) ? \$gBuzer->buzer_LinkIt(\$message, '$config[charset]', \$row['post_id']) : \$message,";
                        fwrite( $fout, "$flineout\n");
                        #$set = "Datei '$config[out]': Einfügen der Zeile '$treffer[1]buzer_LinkIt(\$message, \$row['post_id'], '$config[charset]'),'";
                        $set = "Datei '$config[out]': Einfügen der Zeile '$flineout'";
                        array_push($config[msgs], $set);

                } else {
                        fwrite( $fout, $line);
                }


        }
        fclose($fout);
        fclose($fin);

        if ( !$include ) {
                array_push($config[errors], "die Position zum Einfügen der 'include'-Zeile wurde nicht gefunden");
        }
        if ( !$set ) {
                array_push($config[errors], "die Position zum Einfügen der 'linkIt'-Zeile wurde nicht gefunden");
        }


        if ( $include and $set ) {
                # sichern der originaldatei und übernehmen der geänderten
                $mv_backup = rename( $config[in], $config[backup]);
                if ( $mv_backup        ) {
                        array_push($config[msgs], "Datei '$config[in]' wurde in '$config[backup]' umbenannt (Backup)");
                } else {
                        array_push( $config[errors], "Datei '$config[in]' konnte nicht in '$config[backup]' umbenannt werden (Backup)");
                }
                if ( $mv_backup ) {
                        $mv_new = rename( $config[out], $config[in]);
                        if ( $mv_new ) {
                                array_push( $config[msgs], "Datei '$config[out]' wurde in '$config[in]' umbenannt (Hook)");
                        } else {
                                array_push( $config[errors], "Datei '$config[out]' konnte nicht in '$config[in]' umbenannt werden (Hook)");
                        }
                }

                return ($mv_backup and $mv_new);
        }
}

?>
Kann mir jemand helfen? Ich weiß das " $_GET " in der aktuellen php-Version nicht mehr funktioniert aber ich weiß wirklich nicht wie das Problem zu beheben wäre.

Die andere php-Datei buzer_phpbb3.php sieht so aus:

Code: Alles auswählen

<?php 

    /*
Plugin Name: Buzer Gesetze verlinken
Plugin URI: http://www.buzer.de/li.htm
Description: verlinkt im Text zitierte Gesetzesverweise und EU-Normen
Author: www.buzer.de
Version: 1.05
Author URI: http://www.buzer.de/
*/

class clsBuzer {

    var $done = 0;

    var $buzer_config = array (
    
        'version' => '1.05',

        # beliebige Anzahl Attribute zur Linkformatierung des Titels 
        # z.B. 'at'=>'target="_blank"' erzeugt Links wie <a href="ziel" target="_blank">...
        # kann beispielsweise auch für die Formatierung (style, class, etc.) 
        # oder auch zum Plazieren von Skripten verwendet werden
        'at'     => 'target="_blank"',
        
        # analog zu 'at' nur die verlinkten Paragraphen/Artikel betreffend
        'ap'    => 'target="_blank"',

        #  Zitierrichtung, Standand ist § 1 der ZPO, d.h. der Titel wird rechts 
        # vom Paragraphen erwartet, dann ist hier keine Angabe notwendig, 
        # wird z.B. ZPO §§ 1, 2, 3 etc. verwendet, funktioniert das Verlinken 
        # nur wenn das Flag 'lr' gesetz ist, z.B. 'lr' => 1
        'lr'    => 0,
        
        # falls true, werden die Titel selbst nicht verlinkt, also 
        # z.B. bei § 1 BGB wird nur der § 1 verlinkt, allerdings 
        #erhült dann natürlich auch "die Vorschriften des BGB bestimmen" keinen Link
        'not'    => 0,
        
        # kommaseparierte Liste von Titeln, die mit diesem Titel nie verlinkt werden
        # WEG meint häüfiger den Weg als das WEG, ALG ist oft ALG II
        'notitle' => 'WEG,ALG,WHG,FANG,AUG,LAG,ARG',
        
        # falls true, werden Sonderzeichen html-codiert
        'esc'    => 0,
        
        # ersetzt aufeinanderfolgende Leerzeichen durch eines, 
        # führt zu besseren Ergebnissen, 
        # falls Text stark durch Verwendung von Leerzeichen formatiert ist, 
        # zerstört dann allerdings auch diese Formatierung
        'trim'    => 0,
        
        # Zieladresse für Postheader
        '_post'        => '/li.htm',

        # Servername
        '_host'    => 'www.buzer.de',
        
        # Port
        '_port'        => 80,
        
        # timeout für Verbindung zu buzer.de in Sekunden, falls überschritten 
        # wird der Eingangstext zurückgegeben
        '_timeout'    => 5,
        
        # false hier eine Angabe erfolgt, wird eine Tabelle dieses Namens
        # als Cache verwendet
        # bei Angabe erfolgt die Verlinkung bei Anzeige des Artikels
        # wenn leer, wird der Artikel beim Speichern in der Datenbank verlinkt
        '_cache'    => 'buzer_cache',
        
        # Debug falls true
        '_debug'    => 0,
        
    );

    function clsBuzer() {
        return $this;
    }


    function buzer_getCache( $config, $text, $id) {
        # gibt falls vorhandenen den cache zurück
        global $db;

        $result = $db->sql_query( "select cache from ".$config['_cache']." 
            where hash = md5('".mysql_escape_string($text)."') 
            limit 1;");
        $cache = $db->sql_fetchrow($result);
        $db->sql_freeresult($result);
        return $cache['cache'] == "1" ? $text : $cache['cache'];
        
    }
    
    function buzer_insertCache( $config, $text, $cache, $id) {
        # schreibt die verlinkte version in den cache
        global $db;

        $sql = "update ignore ".$config['_cache']."
            set cache=convert('".mysql_escape_string($text." "==$cache?1:$cache)."' using latin1),                 
            dateupdate=now(), 
            hash=md5('".mysql_escape_string($text)."')
            where id=0$id";
        if ( $db->sql_affectedrows($db->sql_query( $sql))) {
            return 1;
        }
        
        $sql = "insert ignore into ".$config['_cache']." (id, cache, hash, dateinsert) 
            values (0$id, convert('".mysql_escape_string($text." "==$cache?1:$cache)."' using latin1), md5('".mysql_escape_string($text)."'), now())";
        return $db->sql_query( $sql );

    }

    function buzer_LinkIt($textin, $charset, $id) {
        # verlinkt den übergebenen text
        $buzer_config=$this->buzer_config;
        
        
        if ( strlen($charset)>0 ) {
            $buzer_config[charset]=$charset;
        }
        
        if ( $cache=$this->buzer_getCache( $buzer_config, $textin, $id) ) { return $cache; }    

        if ( $this->done ) {
            return $textin;
        }
        
        # maximal ein request pro Seitenabruf
        $this->done = 1;
        
        $content = 'plugin=phpbb3&site='.urlencode($_SERVER[HTTP_HOST]); 
        
        foreach ($buzer_config as $key => $value) {
            if ( $value && !preg_match('/^_/', $key )) {
                $content .= "&$key=" . urlencode( $value );
            }
        }
        
        $content .= "&text=" . urlencode($textin);
        
        $redirect = 0;
        $attempt = 0;
        while ( !$attempt++ and $redirect<2 ) {
            $header = "POST ".$buzer_config['_post']." HTTP/1.0\n";
            $header .= "Host: ".$buzer_config['_host']."\n";
            $header .= "Content-type: application/x-www-form-urlencoded; charset=" . urlencode($buzer_config[charset]) ."\n";
            $header .= "Content-length: " . strlen($content) . "\n\n";
            
            if ( $buzer_config['_debug']) echo "header=$header<br />";
            
            $socket = fsockopen($buzer_config['_host'], $buzer_config['_port'], $errno, $errstr, $buzer_config['_timeout']);
            
            if ( $buzer_config['_debug']) echo "fsockopen: socket=$socket, errno=$errno, errstr=$errstr<br />";
            
            if ( !$socket ) return $textin;
            
            if ( $buzer_config['_debug']) echo "Content: $content<br />";

            socket_set_timeout($socket, $buzer_config['_timeout'], 0);
            socket_set_blocking($socket, true);
            fputs($socket, $header.$content);
            $timed_out = false;
            $eof = false;
            $textout='';
            while (!$eof and !$timed_out) {
                $textout.= fgets($socket, 1024);
                $state = socket_get_status($socket);
                $eof = $state["eof"];
                $timed_out = $state["timed_out"];
            }
            fclose($socket);
            if ( $buzer_config['_debug']) echo "length: ".strlen($textout)."<br />";
            
            $del = "\n";
            if ( preg_match("/\r\n/", $textout) ) { $del="\r\n"; }
            
            $ok = false;
            $lines = explode($del, $textout);
            $i = 0;
            while ( $_ = $lines[$i++] ) {
                if ( preg_match('/200 OK/', $_) ) {
                    $ok = true;
                }
                if ( preg_match('/location:.*?\/\/([^\/]+)(\/.+)/i',$_,$loc) ) {
                    $buzer_config['_host'] = $loc[1];
                    $buzer_config['_post'] = $loc[2];
                    $attempt = 0;
                    $redirect++;
                    break;
                }
            }
        }
        
        $textout = implode($del, array_slice( $lines, $i));
        
        if ( $buzer_config['_debug']) echo "read: ok=$ok, textout=$textout<br />";
        
        if ( !$ok ) {
            return $textin;
        }    
        
        $cmd = substr( $textout, -100);
        if ( substr($cmd, 0, 2) != "OK" ) {
            return $textin;
        }
        $textout = substr( $textout, 0, -100);
        

        if ( $textin and strlen($textout)<strlen($textin) ) {
            if ( $buzer_config['_debug']) echo "Break zu kurz<br />";
            return $textin;
        } 
        
        $this->buzer_insertCache( $buzer_config, $textin, $textout, $id);
        return $textout;

    }
    
}

$gBuzer = new clsBuzer();


?>
Verschoben von [3.1.x] Extension Support nach [3.1.x] Extension Bastelstube am 15.05.2016 20:10 durch Kirk

Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: Illegal use of $_GET. You must use the request class or

Beitrag von gn#36 »

Die Dateien sind vermutlich für phpBB 3.0 gedacht. Frag doch mal an, ob es die für 3.1 gibt. Vielleicht aktualisieren die ja ihre Vorlage für die aktuelle phpBB Version.

Es gibt zwar eine Möglichkeit die Nutzung von $_GET wieder zu erlauben, aber das ist vermutlich nicht die einzige Änderung die notwendig ist, wenn das Ding Beiträge manipulieren will.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
MaDay
Mitglied
Beiträge: 100
Registriert: 19.04.2016 19:54

Re: Illegal use of $_GET. You must use the request class or

Beitrag von MaDay »

Ja meine auch das es für die 3. Version ist. Habe angefragt und warte auf eine Antwort. Mhhh manipulieren ja stimmt aber ich meine im positiven Sinne, denn im Forum alg-ratgeber.de werden sehr häufig § zitiert und daher wären die Verlinkungen nicht verkehrt. Wenn es nicht klappt dann Pech.

Die Nutzung von $-GET wieder zu erlauben bringt sicherlich auch Probleme bei Updates. So gesehen wäre das nicht so toll. Kann zwar sehr gut nach Anleitungen etwas ändern aber ansonsten bin ich mehr oder weniger PHP-Laie.
Benutzeravatar
tas2580
Ehemaliges Teammitglied
Beiträge: 3029
Registriert: 01.07.2004 05:42
Wohnort: /home/tas2580
Kontaktdaten:

Re: Illegal use of $_GET. You must use the request class or

Beitrag von tas2580 »

Schau dir mal diese Extension an, evtl. ist das eine Alternative für dich.


Gruß Tobi
Heute ist ein guter Tag um dein Forum zu testen.
Ehemaliger Benutzername: [BTK] Tobi
MaDay
Mitglied
Beiträge: 100
Registriert: 19.04.2016 19:54

Re: Illegal use of $_GET. You must use the request class or

Beitrag von MaDay »

Woh Danke Tobi - schaue ich mir morgen mal an. Sieht nicht schlecht aus.

Der Betreiber von buzer.de hat die Dateien für die aktuelle php-Version angepasst. ich habe das im Testforum installiert und es klappt prima. Einziger Wehrmutstropfen: Die Verlinkung ist in der Textvorschau nicht erkennbar.
Antworten

Zurück zu „Extension Bastelstube“