Plugin calendar_xh und PHP 8 - fataler Fehler
Re: Plugin calendar_xh und PHP 8 - fataler Fehler
Ich habe immer noch das alte calendar-plugin im Einsatz, weil mich damals das laden der Seiten genervt hatte, nur wenn man die Monate gewechselt hatte. Da das Plugin für mich sehr übersichtlich war, konnte ich das schnell modifizieren und für neue PHP-Versionen anpassen.
Ich hoffe Christoph hat nix dagegen, das ich die modifizierte Variante hier Poste. Läuft unter PHP8.2. Ihr könntet es ja mal auf Eurer Umgebung testen, ob dies auch so ist.
Ich hoffe Christoph hat nix dagegen, das ich die modifizierte Variante hier Poste. Läuft unter PHP8.2. Ihr könntet es ja mal auf Eurer Umgebung testen, ob dies auch so ist.
Re: Plugin calendar_xh und PHP 8 - fataler Fehler
Ah, Calendar 1.2! Macht Sinn auch dafür ein Update bereit zu stellen. Danke!knollsen wrote: ↑Fri Jan 27, 2023 6:03 pmIch hoffe Christoph hat nix dagegen, das ich die modifizierte Variante hier Poste.
Christoph M. Becker – Plugins for CMSimple_XH
-
- Posts: 190
- Joined: Fri Aug 31, 2012 9:28 pm
- Location: Hemden (NRW)
Re: Plugin calendar_xh und PHP 8 - fataler Fehler
Hallo,
mir ist gerade noch was aufgefallen.
Ich habe nun den "Second-Calendar" aktiviert.
Bekomme folgende Antwort beim Aufruf der Seite, wo der 2. Kalender erscheinen soll:
mir ist gerade noch was aufgefallen.
Ich habe nun den "Second-Calendar" aktiviert.
Bekomme folgende Antwort beim Aufruf der Seite, wo der 2. Kalender erscheinen soll:
"borken" ist der Name für den zweiten Kalender.Uncaught Error: Undefined constant "borken" in /mnt/web008/htdocs/bor/cmsimple/functions.php(242) : eval()'d code:1
Stack trace:
#0 /mnt/web008/htdocs/bor/cmsimple/functions.php(242): eval()
#1 /mnt/web008/htdocs/bor/cmsimple/functions.php(202): XH_evaluateSinglePluginCall()
#2 /mnt/web008/htdocs/bor/cmsimple/functions.php(299): evaluate_plugincall()
#3 /mnt/web008/htdocs/bor/cmsimple/cms.php(1287): evaluate_scripting()
#4 /mnt/web008/htdocs/bor/index.php(6): include('...')
#5 {main}
thrown in /mnt/web008/htdocs/bor/cmsimple/functions.php(242) : eval()'d code on line 1
-
- Posts: 190
- Joined: Fri Aug 31, 2012 9:28 pm
- Location: Hemden (NRW)
Re: Plugin calendar_xh und PHP 8 - fataler Fehler
Ich habe gerade Calendar 1.2 (1.2.10) angesehen.
Der würde quasi ausreichend sein, jedoch wünsche ich mir einen zweiten Kalender zusätzlich.
So wie das bei 1.4 machbar ist.
Gibt es eine Möglichkeit zwei Kalender auszuführen?
(Oder beide Plugins gemeinsam zu nutzen )
Der würde quasi ausreichend sein, jedoch wünsche ich mir einen zweiten Kalender zusätzlich.
So wie das bei 1.4 machbar ist.
Gibt es eine Möglichkeit zwei Kalender auszuführen?
(Oder beide Plugins gemeinsam zu nutzen )
Re: Plugin calendar_xh und PHP 8 - fataler Fehler
Wenn du den modifizierten Kalender meinst (v1.7)
Du willst quasi einen Hauptkalender, dann einen Ferienkalender (oder so), (so wie bei Google du den Kalender anlegen kannst)?
Problem wäre das bestimmt nicht sowas zu programmieren beziehungsweise zu ergänzen.
Du willst quasi einen Hauptkalender, dann einen Ferienkalender (oder so), (so wie bei Google du den Kalender anlegen kannst)?
Problem wäre das bestimmt nicht sowas zu programmieren beziehungsweise zu ergänzen.
Re: Plugin calendar_xh und PHP 8 - fataler Fehler
Sieht mir so aus, als ob das am Plugin-Aufruf liegt. Da hast da vermutlich etwas wie {{{calendar2(borken)}}} stehen, aber das borken müsste grundsätzlich in Anführungszeichen gesetzt werden, also {{{calendar2('borken')}}}. Allerdings funktioniert Calendar 1.4 nicht so, dass man den Kalendernamen an die Funktion übergibt, sondern man ruft einfach {{{calendar2()}}} statt {{{calendar()}}} auf (es gibt eben maximal zwei verschiedene Kalender).pergachris wrote: ↑Sat Jan 28, 2023 7:17 amBekomme folgende Antwort beim Aufruf der Seite, wo der 2. Kalender erscheinen soll:Uncaught Error: Undefined constant "borken" in /mnt/web008/htdocs/bor/cmsimple/functions.php(242) : eval()'d code:1
Stack trace:
#0 /mnt/web008/htdocs/bor/cmsimple/functions.php(242): eval()
Beide Plugins kann man nicht gleichzeitig ausführen, da sie intern den selben Namen haben ("calendar"); einfach den Pluginordner umbenennen, funktioniert nicht.pergachris wrote: ↑Sat Jan 28, 2023 7:41 amGibt es eine Möglichkeit zwei Kalender auszuführen?
(Oder beide Plugins gemeinsam zu nutzen )
Mehrere Kalender erscheint mir ein sinnvolles Feature, weil man damit eben auch recht elegant den Mehrsprachensupport ersetzen könnte. Ob und wann ich dazu komme, kann ich aber nicht sagen.
Vielleicht macht ja knollsen das, oder jemand anderes.
Christoph M. Becker – Plugins for CMSimple_XH
-
- Posts: 190
- Joined: Fri Aug 31, 2012 9:28 pm
- Location: Hemden (NRW)
Re: Plugin calendar_xh und PHP 8 - fataler Fehler
Oh, tut mir leid. Mein Fehler.cmb wrote: ↑Sat Jan 28, 2023 10:45 am
Sieht mir so aus, als ob das am Plugin-Aufruf liegt. Da hast da vermutlich etwas wie {{{calendar2(borken)}}} stehen, aber das borken müsste grundsätzlich in Anführungszeichen gesetzt werden, also {{{calendar2('borken')}}}. Allerdings funktioniert Calendar 1.4 nicht so, dass man den Kalendernamen an die Funktion übergibt, sondern man ruft einfach {{{calendar2()}}} statt {{{calendar()}}} auf (es gibt eben maximal zwei verschiedene Kalender).
Ich habe tatsächlich was zwischen die Klammern geschrieben. Mit {{{calendar2()}}} klappt es.
Re: Plugin calendar_xh und PHP 8 - fataler Fehler
Und da ist Calendar 1.4.10.
Und natürlich habe ich Dösbaddel die von Frank weiter oben gemeldeten Probleme ganz vergessen. Beides nun vermerkt (https://github.com/cmsimple-xh/calendar/issues/21 und https://github.com/cmsimple-xh/calendar/issues/22); schau ich mir nun an.
Christoph M. Becker – Plugins for CMSimple_XH
Re: Plugin calendar_xh und PHP 8 - fataler Fehler
Ja, tatsächlich! Ich dachte schon, es hätte was mit Apache unter Windows zu tun, aber habe dann doch noch mal nachgedacht, bevor ich mich daran machte, eine passende Umgebung aufzusetzen, und mod_php zu debuggen.cmb wrote: ↑Fri Jan 27, 2023 1:11 pmDas ist ein Ding!frase wrote: ↑Fri Jan 27, 2023 12:15 pmWenn ich in der index.php Zeile 6 wieder zurücksetze:… dann funktioniert es wieder.Code: Select all
if ((!function_exists('sv')) || preg_match('!calendar'.DIRECTORY_SEPARATOR.'index.php!i', sv('PHP_SELF')))die('Access denied');
Der Sinn dieser Prüfung ist ja, dass man die Datei nicht direkt aufrufen kann. Die Idee (nicht wirklich die Umsetzung; da fehlt der $-Anker am Ende, und der Punkt müsste maskiert sein) ist dabei, dass dann die abgerufene URL mit calendar/index.php enden müsste. Das tut sie aber auch, wenn die CMSimple_XH Installation in einem Verzeichnis namens calendar abgelegt wurde; dann wird nämlich CMSimple_XHs index.php als calendar/index.php abgerufen. Und dann denkt das Plugin: hey, böswilliger Direktzugriff – nope, böser Hacker, nicht mit mir!
Eigentlich genügt ja schon die Prüfung, ob die Funktion sv() definiert ist. „Klar, vielleicht wird die entsprechende Funktion irgendwann aus CMSimple_XH entfernt, aber dafür von PHP, einer PHP-Erweiterung oder einem Prepend-Skript definiert. Also gehen wir auf Nummer sicher, und prüfen auch noch die URL. Wirklich viel können wir da aber nicht sagen, weil selbst der Name des Plugin-Ordners konfigurierbar ist. Also eben calendar/index.php.“ Und genau diese Idee ist Murks. Wenn einem die Prüfung auf sv() (oder vielleicht sprechender auf CMSIMPLE_XH_VERSION) nicht genügend sicher ist, der könnte ein count(get_included_files() === 1) verwenden (bin aber nicht sicher, wie sich das bzgl. auto_prepend_file verhält; wahrscheinlich gäbe das große Probleme).
Minimal invasiv würde ich folgendes vorschlagen:
Code: Select all
if (!function_exists('sv')) die('Access denied');
Code: Select all
if (!defined("CMSIMPLE_XH_VERSION")) {
header("HTTP/1.1 403 Forbidden");
exit;
}
Christoph M. Becker – Plugins for CMSimple_XH