Ergebnis 1 bis 13 von 13

Thema: PHP Warnings Behebungen für vB 4.2.5

  1. #1

    PHP Warnings Behebungen für vB 4.2.5

    Damit vB 4.2.5 so lange wie möglich läuft, nehmen wir gelegentlich kleine Verbesserungen vor.
    Ziel ist es irgendwann PHP 7.2 zu unterstützen.

    Wer möchte kann sich gerne anschließen und seine Code Verbesserungen in diesem Thread posten.
    Evtl. schaffen wir gemeinsam so vB "4.2.6 Community Version" zu kreieren

    Getestet nur unter PHP 7.0 und 7.1

    includes/class_core.php Zeile 125 - 129
    PHP-Code:
        var $fetchtypes = array(
            
    DBARRAY_NUM   => MYSQL_NUM,
            
    DBARRAY_ASSOC => MYSQL_ASSOC,
            
    DBARRAY_BOTH  => MYSQL_BOTH
        
    ); 
    ändern zu:
    PHP-Code:
        var $fetchtypes = array(
            
    DBARRAY_NUM   => MYSQLI_NUM,
            
    DBARRAY_ASSOC => MYSQLI_ASSOC,
            
    DBARRAY_BOTH  => MYSQLI_BOTH
        
    ); 

    includes/functions.php Z. 5617
    PHP-Code:
    if (!empty($calfiles[THIS_SCRIPT]) AND $calperms
    ändern in:
    PHP-Code:
    if (defined('THIS_SCRIPT') AND !empty($calfiles[THIS_SCRIPT]) AND $calperms

    includes/functions_forumlist.php Z. 424 - 428
    PHP-Code:
                    $clc sizeof($subforums); // Last element
                    
    if ($clc)
                     {
                        
    $subforums[$clc-1]['comma'] = '';
                    } 
    ändern zu:
    PHP-Code:
                    if($subforums != null) {
                        
    $clc sizeof($subforums); // Last element
                        
    if ($clc) {
                            
    $subforums[$clc 1]['comma'] = '';
                        }
                    } 

    forum.php Z. 70
    PHP-Code:
    if (VB_REDIRECT === true
    ändern zu:
    PHP-Code:
    if (defined('VB_REDIRECT') AND VB_REDIRECT === true

  2. #2
    @vBulletin Germany Support Team:
    Sollte das Veröffentlichen von kleinen Codeabschnitten nicht erlaubt sein, bitte in einen für Kunden exklusiven Bereich verschieben. Danke.


    Um das Adminmenü unter PHP 7.2 zum laufen zu bringen wurden folgende Änderungen vorgenommen:

    includes/init.php Z. 361 - 363
    PHP-Code:
    $new_datastore_fetch $datastore_fetch = array();

    (
    $hook vBulletinHook::fetch_hook('init_startup')) ? eval($hook) : false
    ändern in:
    PHP-Code:
    $new_datastore_fetch $datastore_fetch = array();

    if(!
    defined('THIS_SCRIPT')) /* PHP 7.2 FIX */
        
    define('THIS_SCRIPT''THIS_SCRIPT');

    (
    $hook vBulletinHook::fetch_hook('init_startup')) ? eval($hook) : false
    Weitere PHP 7.2 Fehlerbehebungen:
    forumdisplay.php Z. 1039
    PHP-Code:
    $pageinfo_sort $pageinfo + array(sort => $sortfield'order' => $oppositesort'pp' => $perpage'page' => $pagenumber); 
    ändern in:
    PHP-Code:
    $pageinfo_sort $pageinfo + array('sort' => $sortfield'order' => $oppositesort'pp' => $perpage'page' => $pagenumber); 
    showthread.php Z. 2247
    PHP-Code:
    $threadreader[visible] = true 
    ändern in:
    PHP-Code:
    $threadreader['visible'] = true
    newreply.php Z.261
    PHP-Code:
    $poststarttime $vbulletin->input->clean_gpc('p'poststarttimeTYPE_UINT); 
    ändern in:
    PHP-Code:
    $poststarttime $vbulletin->input->clean_gpc('p''poststarttime'TYPE_UINT); 
    und Z. 1087
    PHP-Code:
    if (sizeof($folders) > 1
    ändern in:
    PHP-Code:
    if ($folders != null AND sizeof($folders) > 1
    newthread.php Z. 362
    PHP-Code:
    if (sizeof($folders) > 1
    ändern in:
    PHP-Code:
    if ($folders != null AND sizeof($folders) > 1
    Damit der CKEditor auch wieder geht, muss folgendes angepasst werden:
    ajax.php Z 90 - 93;
    PHP-Code:
    if (!VB_API){
        
    $_POST['ajax'] = 1;

    ändern in:
    PHP-Code:
    if (defined('VB_API') AND !VB_API)
    {
       
    $_POST['ajax'] = 1;

    class_core.php an den Anfang:
    PHP-Code:
    /* PHP 7.2 FIX */
    const #nlinestatusphrase = 'onlinestatusphrase';
    const simpleversion 'simpleversion';
    const 
    del_username 'del_username';
    const 
    threadreviewbits 'threadreviewbits';
    const 
    theme 'theme';
    const 
    thumbnail 'thumbnail';
    const 
    activitystream 'activitystream';
    const 
    visitor_messaging 'visitor_messaging';
    const 
    friends 'friends';
    const 
    infractions 'infractions';
    const 
    reputation 'reputation';
    const 
    day 'day';
    const 
    receivepm 'receivepm';
    const 
    calendarid 'calendarid';
    const 
    fromdate 'fromdate';
    const 
    title 'title';
    const 
    username 'username';
    const 
    reminder 'reminder';
    const 
    asc 'asc';
    const 
    desc 'desc';
    const 
    sorturlnoargs 'sorturlnoargs';
    const 
    showimicons 'showimicons';
    const 
    mozilla 'mozilla';
    const 
    month 'month';
    const 
    archive_postsperpage 'archive_postsperpage';

    function 
    isCountable($countable){
        if(
    is_array($countable) OR is_object($countable))
            return 
    true;
        return 
    false;

    In Z. 3784 (nach obiger Änderung)
    PHP-Code:
    $this->set('location'WOLPATH); 
    ändern in:
    PHP-Code:
                if(!defined('WOLPATH')) /* PHP 7.2 FIX */
                    
    define('WOLPATH''WOLPATH');
    $this->set('location'WOLPATH); 
    in Z. 3976
    PHP-Code:
    if (!defined('SKIP_SESSIONCREATE')){
       
    vbsetcookie('sessionhash'$sessionhashfalsefalsetrue);

    ändenr in:
    PHP-Code:
    if (!defined('SKIP_SESSIONCREATE')){
       
    vbsetcookie('sessionhash'$sessionhashfalsefalsetrue);
    }

          if(!
    defined('WOLPATH')) /* PHP 7.2 FIX */
              
    define('WOLPATH''WOLPATH'); 
    in Z. 4725:
    PHP-Code:
    eval($template_code); 
    ändern in
    PHP-Code:
    if(!defined('AS_PROFILE')) /* PHP 7.2 FIX */
                 
    define('AS_PROFILE''AS_PROFILE');
    eval(
    $template_code); 
    vb/search/results.php Z. 244
    PHP-Code:
    $last min($end$this->confirmedcount($this->results) - 1); 
    ändern in:
    PHP-Code:
    if(isCountable($this->results)) {
        
    $last min($end$this->confirmedcount($this->results) - 1);
    }else{
        
    $last 0;
        
    $this->results = array();

    online.php Z. 436 - 437
    PHP-Code:
    $numberguests sizeof($count['guests']);
    $numbermembers sizeof($count['members']); 
    ändern in:
    PHP-Code:
    if(isCountable($count['guests']))
       
    $numberguests sizeof($count['guests']);
    else
        
    $numberguests 0;
    if(
    isCountable($count['members']))
       
    $numbermembers sizeof($count['members']);
    else
       
    $numbermembers 0
    packages/vbcms/content/section.php Z. 296:
    PHP-Code:
    $view->result_count count($results); 
    ändern in:
    PHP-Code:
    if(isCountable($results))
        
    $view->result_count count($results);
    else
                 
    $view->result_count 0
    search.php Z. 140
    PHP-Code:
    if ($vbulletin->GPC_exists['contenttypeid'] and (count($vbulletin->GPC['contenttypeid']) 
    ändern in:
    PHP-Code:
    if ($vbulletin->GPC_exists['contenttypeid'] and isCountable($vbulletin->GPC['contenttypeid']) AND (count($vbulletin->GPC['contenttypeid']) 
    Ein paar der Fixes müsste man eigentlich weiter zurück gehen im Code und den eigentlichen Ursprung beheben.
    Was mir mit den ganzen eval() Funktionen zu dämlich ist. Den eval() ist evil^^
    Daher können diese eher als Workaround verstanden werden. Das ändern aber nichts dran, dass sie funktionieren.
    Einige schmeißen in PHP 7.2 nur ein Warning und erst in späteren PHP Versionen einen Error, aber warum nicht gleich beheben?

    Getestet mit PHP 7.2.3 und Apache 2.4.17
    Es könnte sein, dass dennoch einige Funktionen noch nicht kompatibel sind.
    Ob Addons funktionieren mit PHP 7.2 liegt am Hersteller der Addons.

    Bitte nicht in Produktivmaschinen testen. Für Fehler wird nicht gehaftet.
    Über Feedback und Fehlerberichte die ich Fixen kann würde ich mich freuen.
    Geändert von kleinerzwerg (08.04.2018 um 13:17 Uhr)

  3. #3
    Benutzer Avatar von barnsi
    Registriert seit
    30.11.2011
    Ort
    Südpfalz
    Beiträge
    55
    Vielen Dank für die tolle Arbeit.
    Wir haben alle Änderungen übernommen und der Editor funktioniert jetzt wieder prima und zuverlässig.
    ...bis auf dieses Problem: Beim Versuch, eine Grafik einzufügen überlagert die "Mattscheibe" den kompletten Bildschirminhalt und es öffnet sich kein Fenster.
    Aus dieser Situation gibt es kein Entrinnen, das Browserfenster (mit nicht gespeichertem Inhalt) muss geschlossen werden.

    Des weiteren, kann ich einen geschriebenen Eintrag nicht mehr bearbeiten: "Du hast für diese Aktion nicht die benötigte Berechtigung. Bitte lade diese Seite erneut und melde dich an, bevor du es erneut versuchst."

    Erst mit Zurückspielen der ajax.php waren die Probleme behoben.

    Vielleicht kannst du das nachstellen und findest eine Lösung?

    (bei uns läuft PHP 7.19)
    Geändert von barnsi (20.03.2018 um 08:37 Uhr)

  4. #4
    @barnsi, danke für dein Feedback

    Die Einstellung "Overlay zum Hochladen von Grafiken (WYSIWYG-Editor)" hast du vermutlich aktiviert? (Ich habe sie)
    Hast du ein öffentliches Forum, damit ich mir das schon mal anschauen kann? (gerne auch als PN an mich)

    Tritt das Problem in allen Browsern auf?
    Firefox? Chrome? Edge? Safari? Opera?
    Bitte inkl. Versionsnummer
    Evtl. ein AdBlocker installiert, der wichtige CSS oder JS Dateien blockiert?


    Ich habe bei mir schon den CkEditor von 3.2 auf 3.6.6.2 geupdatet. Evtl. löst das deine Probleme.
    Ich versuche die Änderungen in den nächsten Tagen zu veröffentlichen.

  5. #5
    Damit der CKEditor auch wieder geht, muss folgendes angepasst werden:
    ajax.php Z 90 - 93;
    PHP-Code:
    if (!VB_API){
        
    $_POST['ajax'] = 1;



    nicht ändern in:
    PHP-Code:
    if(!defined('VB_API')) /* PHP 7.2 FIX*/
        
    define('VB_API''VB_API');
    if (!
    VB_API){
        
    $_POST['ajax'] = 1;

    sondern in:

    PHP-Code:
    if (defined('VB_API') AND !VB_API)
    {
       
    $_POST['ajax'] = 1;

    Ich habe das wohl zu voreilig als String deklariert.
    Ich werde die Tage auch nochmal alle FIXes mit einem definde() überprüfen:
    z.b.:
    PHP-Code:
    if(!defined('THIS_SCRIPT')) /* PHP 7.2 FIX */
        
    define('THIS_SCRIPT''THIS_SCRIPT'); 
    Ob da wirklich alles passt, wenn man diesen Quick and Dirty Fix macht.
    Da muss ich bei einigen wohl doch etwas tiefer im Code nachgraben wo der Bug eigentlich her kommt.


    Wenn ich mit allen Test durch bin werde ich die Tage noch eine ganze Liste von Notices-Behebungen und Kompatibilitätsverbesserungen posten.
    Teste derzeit mit PHP 7.2.4 u. 7.0.22
    Geändert von kleinerzwerg (08.04.2018 um 13:38 Uhr)

  6. #6
    Benutzer Avatar von barnsi
    Registriert seit
    30.11.2011
    Ort
    Südpfalz
    Beiträge
    55
    Ahoi! Für die Anleitung zum Upgrade auf Ckeditor3.6.6 wären wir die sehr dankbar!
    Leider ist es mit dem Austausch der Dateien unter ..\clientscript\ckeditor wohl nicht getan.
    Letzte Version findet man unter: https://download.cksource.com/CKEdit...itor_3.6.6.zip

  7. #7
    vB-Guru Avatar von Jaydee
    Registriert seit
    29.05.2008
    Ort
    ...tief im Westen....
    Alter
    57
    Beiträge
    13.397
    Das Problem daran ist ja auch, dass all das nur gestrickte "Hot Fixes" sind und sie nicht wirklich die Probleme an und mit einer ohnehin veralteten Software lösen.
    Und schon gar nicht, wenn diese zu allem Übel auch noch eine Fremdsoftware (eben den CKEditor) in angepasster Version einbindet, aber das Ganze nicht mehr weiter pflegt.

    Man kann mit all diesem Gestricke sicher eine (sehr) kurze Zeit einige Warnungen unterdrücken (und "heile Welt" vorgaukeln), aber mittelfristig löst das nichts und man sollte sich eher nach einer anderen Lösung umsehen!

    Solange ein Original-Hersteller seine Software nicht mehr selber pflegt und einzelne Kunden selber daran rumfummeln, ist das gesamte Konstrukt nicht mehr als "funktional" anzusehen und durch die Sicherheitslücken sind potentiellen Angreifern Tür und Tor geöffnet.
    Wobei man in diesem konkreten Fall dem Hersteller ja leider auch keine große Fach-Kompetenz in Sachen "Programmiererei" unterstellen kann...
    Was die Sache aber nicht gerade besser macht.

    Damit kommen wir schon wieder zum Fazit, dass man sich nach einer anderen Lösung umsehen muss.
    Liebe Grüße
    Jörg


    Spezifische Fragen zum MySQLDumper bitte nicht hier, sondern im MSD-Support-Forum stellen.
    Aktuell verfügbare Version: MSD 1.24.4

    Die deutsche Rechtschreibung ist Freeware. Das heißt, Du kannst sie kostenlos nutzen.
    Allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.



  8. #8
    Beim CKEditor muss direkt in der JS-Dateien die Sprache Funktion von vBulletin eingefügt werden.
    War nicht leicht zu finden, was die geändert haben, aber ist mir gelungen.

    @barnsi, 3.6.6.2 ist neurer als 3.6.6
    https://download.cksource.com/CKEdit...or_3.6.6.2.zip

    Wenn ich's Zeitlich schaffe werde ich die Tage eine Update Anleitung Posten.


    Jaydee hat hierbei natürlich recht.
    Das alles sind hauptsächlich kleine Fixes, die Notices beheben oder lediglich die vorherige Funktionalität wieder herstellen.

    Durch PHP 7.2 wird das Forum zwar schneller.
    Aber aufgrund von irgendwann neu entdeckte Sicherheitslücken, die vom Hersteller nicht mehr geschlossen werden, sollte man sich früher oder später neu umsehen.
    Wir schieben hiermit das unvermeidliche eigentlich nur nach hinten raus.

  9. #9
    Benutzer Avatar von barnsi
    Registriert seit
    30.11.2011
    Ort
    Südpfalz
    Beiträge
    55
    Ahoi, das ist natürlich alles richtig!
    Unser Forum läuft geschützt in einem firmeneigenen Intranet.
    Die Informationen die sich darin finden, sind über viele Jahre gewachsen, eine Art KnowledgeBase für Wartung und Instandhaltung von Industrieanlagen.
    Außerdem arbeiten wir darin Aufträge über "ProjektTools" ab.
    Für uns ist nur wichtig, dass weiterhin fehlerfrei Beiträge gepostet werden können.
    Aktuell ist das durch die ie10-Problematik nur eingeschränkt der Fall und nervt gewaltig, da manche Nutzer nicht auf Chrome wechseln können.

  10. #10
    Neuer Benutzer
    Registriert seit
    27.09.2015
    Beiträge
    18
    Hi,

    ich sehe das mit der Sicherheit gelassen. Gibt genug Möglichkeiten um das Board abzusichern. WAF installieren, htaccess vorm acp, Serverseitig kann man auch Firewalls installieren die Angriffe blocken.

    Finde ich auf jedenfall klasse das vbulletin hier noch manuelle updates bekommt.

    MfG

  11. #11
    barnsi, welche Fehler habt ihr mit dem IE10?
    Hab keinen mehr da zum testen.

    Glaube aber, dass im in der CkEditor Changelog gelesen habe, dass einige behoben wurden.
    Der CkEditor Update könnte also Interessant für euch werden.

    Meister2015 meinte eher sowas wie SQL-Injektion, XSS, .... Wobei wenn ihr eine habt und diese meldet können wir sie gemeinsam beheben.

  12. #12
    Neuer Benutzer
    Registriert seit
    27.09.2015
    Beiträge
    18
    Zitat Zitat von kleinerzwerg Beitrag anzeigen
    Meister2015 meinte eher sowas wie SQL-Injektion, XSS, .... Wobei wenn ihr eine habt und diese meldet können wir sie gemeinsam beheben.
    Jo genau SQL-Injektion, XSS usw wird alles von einer WAF geblockt.

  13. #13
    Benutzer Avatar von barnsi
    Registriert seit
    30.11.2011
    Ort
    Südpfalz
    Beiträge
    55
    Zitat Zitat von kleinerzwerg Beitrag anzeigen
    barnsi, welche Fehler habt ihr mit dem IE10?...
    übrigens auch mit ie11, ...oder wie auch immer man den kantigen Browser nennen mag
    Ja, das sind hauptsächlich die Fehler, die wohl mit dem neuen CKEditor3.6.6.2 behoben wurden.
    z.B. "Verschlucken" von Buchstaben während des Tippens, Verschwindende Editor-Buttons, Fehler beim Bilder-Einfügen, Fehlerhafte Zeichen im Text beim Benutzen eines Buttons, usw...
    Stellt man WYSIWYG ab, funktioniert das meiste...

    Update: Leider habe ich auf dem forum.xorbit.de die gleichen Probleme mit ie10: z.B. Upload einer Grafik im Wysiwyg-Mode nicht möglich...
    Geändert von barnsi (13.04.2018 um 14:34 Uhr)

Aktive Benutzer

Aktive Benutzer

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

Ähnliche Themen

  1. Fragen zum Warnings System Hack v2.1
    Von McDylan im Forum vB2 Code-Hacking Diskussionen
    Antworten: 4
    Letzter Beitrag: 06.11.2002, 13:15

Lesezeichen

Berechtigungen

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