Beiträge von Wiimm

Ich habe einen Blog Artikel verfasst - Wie benutze ich die Suche richtig - Bitte diesen beachten und auch umsetzen bevor Ihr ein Neues Thema eröffnet!

    Da sich hier einige über die Ranglisten beklagen, stelle ich mal 2 Patches aus meinem System zur Verfügung. Beide Patches sind unabhängig voneinander.



    Der erste Patch behebt einen Bug, der nur auftaucht, falls man die Anzahl der Elements pro Seite verändert hat. Die Seitenberechnung berücksichtigt den Wert aus der Config ($CONFIG['RANGLISTE']['UPP']). Fest verdrahtet ist dagegen die Anzahl der tatsächlich angezeigten Zeilen (10). Der f0lgende Patch behebt das Manko:

    Der folgende Patch behebt das Problem mit den übergroßen Avataren in den Ranglisten. Außerdem wurde an einer Stelle die Überschriften-Zeile korrigiert (fehlendes "Bild").

    Ich habe das ganze Update gut überlebt, weil ich patch files von meinen Änderungen gezogen habe. Diese habe ich dann einfach auf dem Update eingespielt.


    Falls ihr noch ein Backup von vor dem Update habt (wird in folgenden Original genannt), dann sollte folgendes möglich sein (Linux-Kommandos, sollte es aber auch unter Windows geben):

    1. Die beiden ZIP-Dateien vom 3. Mai und 8. Juni breit halten.
    2. Die dort enthaltenen upload-Verzeichnisse nebeneinander als 2018-05-03 und 2018-06-08 legen
    3. Kommando ausführen:
      diff -ru 2018-05-03 2018-06-08 >patch.txt

      Diese Patchdatei könnt ihr auch hier laden. Damit erspart ihr euch dann die Schritte bis hier hin: https://download.wiimm.de/misc/2018-06/patch.txt
    4. Kopie des Original ziehen und die obige Patch-Datei hinein kopieren.
    5. In das Verzeichnis der gerade erstellten Kopie wechseln.
    6. Das folgende Kommando ausführen:
      patch -p1 <patch.txt
      Eventuelle Fragen des Tools lesen und gewissenhaft beantworten.
    7. Suche nach Dateien *.rej: Diese erklären, warum einiges nicht verändert wurde.
    8. Testen und Hoffen.

    Update:

    Ein Tipper machte mich darauf aufmerksam, dass Tippübersicht bei einem Spiel unter Verwendung der "persönlichen Rangliste" gänzlich unsortiert ist. Daher habe ich obiges etwas angepasst und die Vorberechnung vor IF-THEN-ELSE gelegt.

    Ich hätte da eine Idee zur Fehlersuche. Mit der folgenden Änderung in inc.config.php wird jeder SQL-Fehler auf der Fehlerkonsole ausgegeben.


    Dazu einfach diese Zeile:

    Code
    1. $databaseConnect = mysqli_connect($CONFIG['MYSQL']['SERVER'], $CONFIG['MYSQL']['USER'], $CONFIG['MYSQL']['PASS'], $CONFIG['MYSQL']['DATENBANK']);

    ... durch das ersetzen:


    Von den letzten beiden Zeilen muss eine aktiviert sein, je nachdem ob man Fehlerausgabe haben will oder nicht.

    Viele Provider verweigern den Empfang von Mails aus unbekannten Quellen.


    Verwende einen Provider als Mail-Relay. Das funktioniert aber nur richtig, wenn man SMTP aufsetzt. Ich habe auf allen Servern Postfix laufen die dann mit den Zugangsdaten eines Mail-Postfachs die Mail an den Provider weiterleiten. Die Webseiten nutzen dann immer SMTP/localhost/Port 25.


    PHP-Mail und zu, Teil auch SENDMAIL versuchen dagegen direkt die Mail zuzusenden, indem sie den DNS/MX-Datensatz für die Zieldomain heraussuchen.

    wer nur tippt dem ist das egal

    ... dass ich in der Lage bin

    * alle Tipps zu manipulieren

    * sämtliche Datenbank-Tabellen zu löschen.

    * mir Admin-Rechte zu verschaffen


    Ist das deine Aussage?



    EDIT:

    Außerdem habe ich nicht gesucht. Das Log hat mit einen fatalen PHP-Fehler angezeigt, Und als ich mir die Code-Stelle angeschaut habe, ist mir genannte Sicherheitslücke direkt ins Auge gefallen.

    Ich habe einen Bug gefunden, der SQL-Injection ermöglicht und prinzipiell jegliches SQL-Kommando zulässt. Ich will es hier aus Sicherheitsgründen nicht vertiefen. Besser ist es, wenn mich ein interessierter Programmierer per PN anschreibt und andere Kollegen gleich mit ins Boot nimmt.

    Aufgrund des obigen Syntax-Fehlers habe ich mal lint (php -l) über alle PHP-Dateien laufen lassen und noch einen weiteren Syntax-Fehler gefunden:

    Code
    1. PHP Parse error: syntax error, unexpected end of file in ./tunier_setup/edit.php on line 121
    2. Errors parsing ./tunier_setup/edit.php

    Könnte eine offenes IF oder Schleife sein.

    Da ich das hier gelesen habe und bei uns auch nur die Admins Accounts freigeben, habe ich vorsichtshalber die folgende Einstellung vorgenommen:

    $CONFIG['OPTIN']['DURATION'] = 24000;

    Damit sollte die Schonzeit bis zur nächsten EM reichen. Oder?

    Danke nochmals hierfür. was man natürlich nun vor den spielen schon sieht ist wer quasi für welche mannschaft getippt hat.
    steht ein spieler auf ersten seite ganz oben dann hat er wohl für die heimmannschaft getippt und jemand der auf der letzten seite steht eben für die gastmannschaft...

    In diesem Jahr habe ich auch dieses Problem gelöst. Der folgende Patch für Datei statistik.spiel.php sortiert die Tipps für ein Spiel nach Ergebnis, sobald die Ergebnisse sichtbar sind. Ich habe ihn gut getestet, der finale Test findet dann aber vor dem Eröffnungsspiel statt.

    Die error_log()-Zeilen sind nur noch für den finalen Test drin, falls es wider Erwartens Probleme gibt.

    Es war nur ein Beispiel, das ich aus gutem Grund genannte habe. Tatsächlich kann man das Verhalten über die Konfig-Option STRICT_TRANS_TABLES einstellen. Bei neueren Versionen vom mysql und mariadb sind die standardmäßig aktiviert. Mutmaßlich ist sie bei dir deaktiviert. Unter Linux steht der Param in /etc/my.cnf. Man sollte an der Datei aber nur spielen, wenn man genau weiß, was man tut.


    Da man aber keine Annahme über die Einstellung machen kann und sogar davon ausgehen muss, das die Standardeinstellung verwendet wird, ist die Änderung auf PHP-Seite entweder beim Registrieren oder bei der Ausgabe die sichere (sicher im Sinne von überall funktionierend) Methode.