Seite 1 von 1

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

Verfasst: 15.05.2016 19:32
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();


?>

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

Verfasst: 15.05.2016 22:27
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.

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

Verfasst: 16.05.2016 11:47
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.

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

Verfasst: 16.05.2016 12:25
von tas2580
Schau dir mal diese Extension an, evtl. ist das eine Alternative für dich.


Gruß Tobi

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

Verfasst: 17.05.2016 21:22
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.