Newsletter fliegt einem um die Ohren ?!

Read-Only-Modus

Das 01-Supportforum befindet sich im Read-Only-Modus. Es ist nicht mehr möglich sich zu registrieren, neue Themen zu erstellen oder auf bestehende Themen zu antworten.

Alle Inhalte stehen bis auf absehbare Zeit jedoch weiterhin lesend zur Verfügung.


Bei Fehlern oder Problemen mit PHP-Scripten von 01-Scripts.de erstellen Sie gerne einen Issue-Eintrag auf Github oder nehmen Sie per E-Mail Kontakt auf.

  • Von einem meiner Techniker, der PHP 5.3. benutzt habe ich den Hinweiß bekommen das mir das Script in 2-3 Jahren um
    die Ohren fliegen wird, weil es nicht mehr funktionieren wird wenn mein Scerver ein Update macht. Ich habe seine Mail
    hier mal gepostet und ihm den Link geschickt. Er ließt mit und ich würde gerne wissen was Ihr gedenkt zu tuen...


    "Hm, also sobald dein Webspace den du hast, auf eine höhere PHP Version geupgraded wird, fliegt dir der Newsletter um die Ohren ( wird unbrauchbar ). Hier lokal bei mir ( PHP 5.6 ) funktioniert das script nicht. Ich weiß auch warum, aber um das zu beheben müsste ich ~60 % der kompletten Verwaltungs- und Newsletter-Software umschreiben und alle Module die du noch so herunterladen gehst, würden nicht funktionieren ohne das ich diese wiederum anpasse.


    Sprich, früher oder später, stellt dein Newsletter den Dienst ein, wenn du diese Software benutzt, spätestens dann wenn dein Hoster „PHP 5.3“ deaktiviert ( was in spätestens 2-3 Jahren der Fall sein wird )."


    MfG Köche-Nord.de

  • Hallo, dann sollte der Techniker mal die Aussage begründen. Ich verwende u.a. den Newsletter seit vielen Jahren und alles läuft perfekt - derzeit mit der Server Version 5.6


    Gruß


    Jörn

  • Guten Abend,


    ich bin der Software-Entwickler der eine neue Version von köche-nord.de umsetzt. Ich wurde gebeten das Newsletter-Script von 01-scripts.de mit in die Seite zu integrieren.


    Fakt ist, PHP 5.3 hat den EOL-Status durch die PHP Group bekommen und wird nicht weiter supported, was dazu führt dass die neue Webseite auf einer PHP-Version laufen wird ( PHP 5.6 / 7.0 ), die security patches empfängt.


    Der Betrieb des ACPs ( inklusive Installation ) stellt kein Problem unter PHP 5.6/7.0 dar. Das Newsletter-Modul lässt sich auch ohne weiteres installieren. Allerdings besteht ein Globals-Konflikt wärend des scope elevation der $mysqli-Variable wenn man das Modul in die Seite einbinden möchte. Der global-import in diverse Funktionen der ACP-Version der headinclude.php importiert eine leere Variable.


    PHP
    1. $subfolder = sprintf( '%s/somewhere/01scripts/', dirname(filter_input(INPUT_SERVER, 'SCRIPT_FILENAME')));
    2. $modul = '01newsletter';
    3. include sprintf( '%s/01module/%s/01newsletter.php', $subfolder, $modul);



    der PHP 7.0 Stack-Trace zum Fatal Error:

    Code
    1. Fatal error: Uncaught Error: Call to a member function query() on null in /Applications/MAMP/htdocs/imp/new/somewhere/01scripts/01acp/system/functions.php:303Stack trace: #0 /Applications/MAMP/htdocs/imp/new/somewhere/01scripts/01acp/system/headinclude.php(143): getModuls(Array) #1 /Applications/MAMP/htdocs/imp/new/somewhere/01scripts/01module/01newsletter/01newsletter.php(39): include_once('/Applications/M...') #2 /Applications/MAMP/htdocs/imp/new/static/pages/newsletter.html(11): include('/Applications/M...') #3 /Applications/MAMP/htdocs/imp/new/index.php(55): include('/Applications/M...') #4 /Applications/MAMP/htdocs/imp/new/index.php(66): {closure}() #5 /Applications/MAMP/htdocs/imp/new/index.php(173): parseTemplate('pages/newslette...', Array, Array) #6 {main} thrown in/Applications/MAMP/htdocs/imp/new/somewhere/01scripts/01acp/system/functions.php on line 303


    Am source des Moduls oder des ACPs wurde nichts verändert.


    Ein paar Worte zum Source:


    Der Source des ACPs und der Module ist sehr Komplex und Prozedural, die Includes sind dezentral was es erschwert Variablen Script-Übergreifend vorzuhalten. Ich empfehle in den nächsten Versionen diese Komplexität zu reduzieren und Objekte zu benutzen. Hunderte Variablen im Globalen Scope die irgendwie irgendwo benötigt werden reduzieren die Wartbarkeit der Scripte. Globals fügen magisch Variablen vom globalen Scope in den Function-Scope, was die Testbarkeit der Funktionen erschwert, wenn nicht nahezu unmöglich macht. Objekte helfen hier weiter indem sie Abhängigkeiten über den Constructor oder Setter in den Object-Scope bringen: Routing statt Elevation.


    Außerdem verstößt der Source des öfteren gegen DRY ( Dont Repeat Yourself ) und SRP ( Single Responsibility Principle ).


    Ein paar Worte zur Lizenz:


    Die Creative Common BY-NC-SA Lizenz, wie alle nicht-CC0-Lizenzen sind nicht für die Lizenzierung von Software- oder Hardware-Produkte gedacht.
    Siehe: https://creativecommons.org/fa…creative-commons-licenses

    Zitat

    CC licenses may be applied to any type of work, including educational resources, music, photographs, databases, government and public sector information, and many other types of material. The only categories of works for which CC does not recommend its licenses are computer software and hardware. You should also not apply Creative Commons licenses to works that are no longer protected by copyright or are otherwise in the public domain. Instead, for those works in the worldwide public domain, we recommend that you mark them with the Public Domain Mark.

  • Zitat

    Der Betrieb des ACPs ( inklusive Installation ) stellt kein Problem unter PHP 5.6/7.0 dar. Das Newsletter-Modul lässt sich auch ohne weiteres installieren. Allerdings besteht ein Globals-Konflikt wärend des scope elevation der $mysqli-Variable wenn man das Modul in die Seite einbinden möchte. Der global-import in diverse Funktionen der ACP-Version der headinclude.php importiert eine leere Variable.

    Hallo,
    ich habe gerade testweise PHP 7 aktiviert und kann auf meinem Webspace sowie lokal diese Fehlermeldung nicht nachvollziehen.
    Das Script lässt sich wie unter PHP 5.6 oder auch 5.3 ohne Fehlermeldung einbinden.
    Wird das Script über ein CMS oder ein anderweitiges PHP-Script/Framework o.ä. eingebunden?
    Ich würde vermuten das die globale $modul-Variable in diesem Fall doppelt verwendet wird und dies der Auslöser der Fehlermeldung ist.


    Zitat

    Ein paar Worte zum Source:


    Der Source des ACPs und der Module ist sehr Komplex und Prozedural, die Includes sind dezentral was es erschwert Variablen Script-Übergreifend vorzuhalten. Ich empfehle in den nächsten Versionen diese Komplexität zu reduzieren und Objekte zu benutzen. Hunderte Variablen im Globalen Scope die irgendwie irgendwo benötigt werden reduzieren die Wartbarkeit der Scripte. Globals fügen magisch Variablen vom globalen Scope in den Function-Scope, was die Testbarkeit der Funktionen erschwert, wenn nicht nahezu unmöglich macht. Objekte helfen hier weiter indem sie Abhängigkeiten über den Constructor oder Setter in den Object-Scope bringen: Routing statt Elevation.


    Außerdem verstößt der Source des öfteren gegen DRY ( Dont Repeat Yourself ) und SRP ( Single Responsibility Principle ).

    Das sind zweifellos wahre Worte. Und würde ich heute mit einer Neuentwicklung des 01ACP und der Module beginnen würde ich dafür auch zweifellos einen objektorientierten Ansatz wählen.


    MfG,
    Michael

  • Hallo,


    Ich konnte das Problem lokalisieren. Sobald man in einen Scope der nicht der globale Scope ist wie vorgegeben inkludiert, schlägt das setzen der Globals fehl.


    Um das ganze ohne Nebeneffekte zu beheben ( bis irgendetwas in der Hinsicht seitens des gesamten Scripts de-globalifiziert wird ), muss der vorgegebene Include im Globalen Script passieren. Was sich gerade bei Templating die aus Sicherheitsgründen Templates in einen eigenen Scope einsperren, problematisch werden kann, da man den Template-Scope nicht verlassen kann um kurz PHP-Anweisungen auszuführen.


    Seitens von 01script könnte man für eine "einfache" Anpassung an das Scope problem hingehen und alle benötigten Variablen in $GLOBALS ablegen und die "global $var"-scope-elevations entfernen, das betrifft allerdings wohl das partiell das ACP und alle files die mit scope-elevation arbeiten im Newsletter-Modul.


    Alternativ würde auch eine kleine einfache json-api das problem lösen, an die man zur registrierung, aktivierung oder löschung via ajax sendet und entsprechende Responses empfängt. Das würde das Include-Problem gänzlich erledigen und würde der Implementierung des Newsletters in die eigentliche Seite jegliche Freiheit die nur denkbar ist ermöglichen, ohne irgendwelche Nachteile.