Testversion für PHP 5.4

Fragen zur Implementierung und/oder Anpassung von ConPresso 4 werden in diesem Forum diskutiert.
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7361
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 933 Mal
Kontaktdaten:

Testversion für PHP 5.4

Beitrag von MarkusR »

Ich habe mal versucht das htmlspecialchars-Problem von PHP 5.4 anzugehen.

Dafür habe ich folgende Funktion erstellt

Code: Alles auswählen

function _htmlspecialchars($text, $ent=ENT_COMPAT, $encoding="ISO-8859-15")
{
    return (htmlspecialchars($text, $ent, $encoding ));
}
und dann alle Vorkommen von htmlspecialchars() durch _htmlspecialchars() ersetzen lassen. Mit EditPlus kann man das für alle CPO-Dateien auf einmal machen lassen. Theoretisch müsste man sowas auch für htmlentities() machen, aber die Funktion wird wohl in CPO nicht benutzt.

Wer will kann das mal testen, um zu sehen, ob es noch weitere Probleme durch PHP 5.4 gibt. Aber bitte nicht in produktiven Systemen testen!!!

Getestet habe ich es mit XAMPP 1.8.1 mit PHP 5.4.7
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7361
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 933 Mal
Kontaktdaten:

Beitrag von MarkusR »

Ich habe es jetzt auch mal mit einem laufenden Auftritt einer älteren PHP-Version probiert, der schon mit Modulen wie Warenkorb, Formular und mod_templates ausgestattet ist.

1.) alles runtergeladen
2.) alle Dateien mit htmlspecialchars im Dateiinhalt gesucht (in meinem Fall 83 Stück)
3.) Alle gleichzeitig mit EditPlus geöffnet
4.) Mittels Suchen und Ersetzen alle Vorkommen von htmlspecialchars durch _htmlspecialchars ersetzt (870 Ersetzungen)
5.) Die obenstehende Funktion in _include/function.php eingesetzt
6.) alles wieder hochgeladen

Das alles auf PHP 5.2.6... läuft. Es scheint damit also sowohl in PHP <5.4 als auch in PHP 5.4 zu laufen.
Für PHP 5.4 muss natürlich noch die Anpassung für die Navigation
http://community.conpresso.de/viewtopic ... 7286#27286
sowie für import_request_variables()
http://community.conpresso.de/viewtopic ... 7164#27164
vorgenommen werden.
Auch diese Änderungen scheinen mit PHP <5.4 kompatibel zu sein.
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7361
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 933 Mal
Kontaktdaten:

Beitrag von MarkusR »

Ich habe oben eine neue Datei eingestellt, bei der ich noch ein paar Korrekturen vorgenommen habe und die beseitigten Bugs dokumentiert habe.

Modifikationen in dieser Version (4.1.5+a):

- Kompatibilität mit PHP 5.4 hergestellt
http://community.conpresso.de/viewtopic ... 7287#27287
http://community.conpresso.de/viewtopic ... 7286#27286
http://community.conpresso.de/viewtopic ... 7164#27164
- Installationssprache ist deutsch per default
- fehlende Übersetzung von "choose" ergänzt
- Platzhalter mit Apostroph (')
http://community.conpresso.de/viewtopic.php?t=4528
- Fix für Template-Editor (bei fehlender Body-ID)
http://community.conpresso.de/viewtopic ... 7094#27094
- Suche nach @ möglich (mod_serach)
http://community.conpresso.de/viewtopic.php?t=4519
- Breadcrumb-Navigation in Seitentemplates
http://community.conpresso.de/viewtopic.php?t=4518
- CSRF-Check in Userverwaltung korrigiert
http://community.conpresso.de/viewtopic ... 7138#27138
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Benutzeravatar
balu
ConPresso-Entwickler
Beiträge: 1748
Registriert: 01.01.1970 01:00
Hat sich bedankt: 81 Mal
Danksagung erhalten: 133 Mal

Beitrag von balu »

Hi Markus,
MarkusR hat geschrieben:4.) Mittels Suchen und Ersetzen alle Vorkommen von htmlspecialchars durch _htmlspecialchars ersetzt (870 Ersetzungen)
damit erwischst Du aber auch die Platzhalter-Einstellung "htmlspecialchars" in den parser_r* Dateien, die natürlich nicht geändert werden sollten.

Balu
Bartels.Schöne
ConPresso Support & Development
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7361
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 933 Mal
Kontaktdaten:

Beitrag von MarkusR »

Du siehst doch an der Reaktion, daß es eh keiner testet.

Anyway, solange es keine offizielle Version gibt, nutzt man eben auch in den Platzhaltern _htmlspecialchars

Ich werde die Funktion eh nochmal umbenennen, damit man auch später den Durchlauf erneut machen kann, wenn man z.B. unmodifizierte Module installiert.
Könnte z.B. html_spechialchars() heißen, dann wird sie bei ein erneuten Durchlauf nicht erwischt.
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Benutzeravatar
balu
ConPresso-Entwickler
Beiträge: 1748
Registriert: 01.01.1970 01:00
Hat sich bedankt: 81 Mal
Danksagung erhalten: 133 Mal

Beitrag von balu »

MarkusR hat geschrieben:Ich werde die Funktion eh nochmal umbenennen, damit man auch später den Durchlauf erneut machen kann, wenn man z.B. unmodifizierte Module installiert.
Könnte z.B. html_spechialchars() heißen, dann wird sie bei ein erneuten Durchlauf nicht erwischt.
Du könntest vermutlich nach "htmlspecialchars(" suchen, dann würdest Du die Platzhalter nicht mit treffen.

Und bei Modulen reicht es doch, nur das Modulverzeichnis zu durchsuchen?

Wir testen gerade eine neue offizielle Version für den 4.1er Zweig. Ich werde diese vermutlich am Wochenende veröffentlichen, allerdings weiss ich noch nicht, ob als Vorab- oder "vollwertige" Version, weil die ganzen Änderungen in den htmlspecialchars() doch ziemlich viel waren und ich bis dahin nicht alles im Detail testen kann.

Balu
Bartels.Schöne
ConPresso Support & Development
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7361
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 933 Mal
Kontaktdaten:

Beitrag von MarkusR »

balu hat geschrieben:Und bei Modulen reicht es doch, nur das Modulverzeichnis zu durchsuchen?
Es gibt Module, die Originaldateien ersetzen oder verändern.
Aber ich warte mal ab, was jetzt von ConPresso-Seite aus kommt.
die ganzen Änderungen in den htmlspecialchars() doch ziemlich viel waren
Hast Du jetzt statt einer Ersatzfunktion alle htmlspecialchars() mit voller Syntax erstellt?
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7361
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 933 Mal
Kontaktdaten:

Beitrag von MarkusR »

Mal zurück zur eigentlichen Problematik:

echte Probleme sind in PHP 5.4.7 die Macken in der Navigation bei externen URLS sowie die extract-Befehle in common.inc.php

Ansonsten habe ich mal die Sprachdateien geöffnet und einfach nur beim Abspeichern UTF8+ statt ANSI gewählt... schwupp, die Umlaute sind da, weil htmlspecialchars() das bekommt, was es will, nämlich UTF-8

Und da die Datenbankverbindung sowie meist schon als UTF8 läuft, ist das auch kein Problem.

Nur bei Webauftritten, die ohne UTF8 erstellt wurden und nun zwangsweise umgestellt wurden, ist der Klimmzug mit der umgeschriebenen Funktion notwendig!

Es ist also ein gravierender Unterschied, ob man eine neue Installation macht (die sollte nach den zwei Änderungen oben problemlos laufen) oder Opfer eines PHP-Updates geworden ist!
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7361
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 933 Mal
Kontaktdaten:

Beitrag von MarkusR »

Nun dachte ich, einfach mal alle Dateien von ANSI mittels UTFCast umwandeln. Ratz, fatz, passiert.
Aber leider funktionieren dann die Framesets nicht, also auch keine wirkliche Lösung... :cry:
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Benutzeravatar
balu
ConPresso-Entwickler
Beiträge: 1748
Registriert: 01.01.1970 01:00
Hat sich bedankt: 81 Mal
Danksagung erhalten: 133 Mal

Beitrag von balu »

Hi Markus,
MarkusR hat geschrieben:Hast Du jetzt statt einer Ersatzfunktion alle htmlspecialchars() mit voller Syntax erstellt?
ja, das habe ich. Ich hatte damit schon angefangen, bevor Du Deinen Vorschlag gemacht hast. Dein Vorschlag hat Vorteile, aber ich überschreibe ungerne vorhandene PHP-Funktionen, auch wenn sie bei einem Upgrade "vermurkst" wurden. Und weil ich sichergehen musste, dass jedes geänderte htmlspecialchars() sich nicht irgendwie anders auswirkt, bin ich durch alle von Hand gegangen...

Ein Update auf UTF-8 ist, wie Du gemerkt hast, leider nicht so einfach, weil wir auch auf die vielen alten Installationen Rücksicht nehmen müssen. Und der default Character Set in MySQL ist auch in neueren Versionen noch latin1.

Ausserdem gibt es in PHP immer noch viele Stringfunktionen, die Multibyte-Zeichensätze nicht richtig unterstützen. Natürlich gibt es für alles dementsprechende Workarounds, aber mit einer alten Software ist das nicht so einfach.

Balu
Bartels.Schöne
ConPresso Support & Development
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7361
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 933 Mal
Kontaktdaten:

Beitrag von MarkusR »

Ich habe die 4.1.5+a jetzt gelöscht, weil leider keiner mal eben nur testet sondern einige versuchen damit live zu gehen!
Hierfür solltet ihr auf die 4.1.6 von Bartels.Schöne warten!
http://community.conpresso.de/viewtopic.php?t=4539
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
dutch
ConPresso-Experte
Beiträge: 547
Registriert: 04.07.2007 17:12
Hat sich bedankt: 27 Mal
Danksagung erhalten: 7 Mal

4.0.12

Beitrag von dutch »

Hallo zusammen,

der Provider eines meiner Kunden hat gerade seinen Server auf PHP 5.4.11 umgestellt...

Von der cpo 4.0.12 Installation meines Kunden ist jetzt leider nichts mehr zu sehen (weißer Schirm).
Kann ich versuchen, das Problem mit den oben genannten Schritten zu lösen oder funktioniert das nur bei einer 4.1.x Version?

Danke,
dutch
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7361
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 933 Mal
Kontaktdaten:

Beitrag von MarkusR »

Sollte funktionieren.
Ich habe damit eine 4.0.7 am Leben erhalten.
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
dutch
ConPresso-Experte
Beiträge: 547
Registriert: 04.07.2007 17:12
Hat sich bedankt: 27 Mal
Danksagung erhalten: 7 Mal

Beitrag von dutch »

Hi Markus,

danke, werde es probieren.

Gruß,
dutch
dutch
ConPresso-Experte
Beiträge: 547
Registriert: 04.07.2007 17:12
Hat sich bedankt: 27 Mal
Danksagung erhalten: 7 Mal

Beitrag von dutch »

Habe gerade wie oben beschrieben die Schritte durchgeführt.
(Bei mir wurden in 463 Dateien 728 htmlspecialchars ausgetauscht)

Leider bleibt es wirkungslos. Die site funktioniert zwar auch mit diesen Änderunge auf einer niedrigeren PHP Version aber nicht auf 5.4.11, der Schirm bleibt weiß...

Hmmm.... und jetzt?

Gruß,
dutch
Antworten