php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 40 Stimmen, 5,00 durchschnittlich.
  #16 (permalink)  
Alt 23-07-2015, 21:00
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Wasser_Wanderer Beitrag anzeigen
Ich musste ja nur die ENT_HTML5, ENT_DISALLOWED und ENT_SUBSTITUTE in Single-Quotes setzen
Nein, das ist Quatsch. ENT_HTML5 gibts zB. erst ab PHP 5.4. Das heißt du verwendest eine veraltete PHP-Version, die nicht mehr offiziell unterstützt wird. Schleunigst updaten oder anderen Hoster suchen. Mit solchen alten und unsicheren Versionen sollte man sich nicht abgeben. Das hat keine Zukunft und ist nur Zeitverschwendung.
Mit Zitat antworten
  #17 (permalink)  
Alt 23-07-2015, 21:39
Benutzerbild von mermshaus mermshaus
 Registrierter Benutzer
Links : Onlinestatus : mermshaus ist offline
Registriert seit: Jun 2009
Beiträge: 451
mermshaus wird schon bald berühmt werden
Standard

Die drei anderen Flags machen keine lebenswichtigen Sachen. ENT_HTML5 kodiert das einfache Anführungszeichen als ' statt als numerische Entität (sollte Browsern und so ziemlich egal sein), die beiden anderen Flags bestimmen, was die Funktion macht, wenn die Eingabe falsch kodierte (UTF-8-)Bytes enthält. Das sollte normalerweise natürlich auch nicht auftreten. Es ist aber ab PHP 5.4 denoch ganz praktisch, die Flags zu setzen, weil es das Standardverhalten von htmlspecialchars ist, bei solchen Fehlern ansonsten einen leeren String zu liefern.

Also, bevor du die Flags in Anführungszeichen setzt (was Unsinn ist, auch wenn PHP das mit falscher Interpretation der Sachlage vorschlägt), lass sie einfach weg. ENT_QUOTES aber dennoch setzen.

Ansonsten siehe natürlich hellbringer.
Mit Zitat antworten
  #18 (permalink)  
Alt 24-07-2015, 12:41
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Zitat:
Zitat von mermshaus Beitrag anzeigen
was die Funktion macht, wenn die Eingabe falsch kodierte (UTF-8-)Bytes enthält. Das sollte normalerweise natürlich auch nicht auftreten. Es ist aber ab PHP 5.4 denoch ganz praktisch, die Flags zu setzen, weil es das Standardverhalten von htmlspecialchars ist, bei solchen Fehlern ansonsten einen leeren String zu liefern.
Dieses Verhalten wäre eine Erklärung, warum Texte mit Umlauten als Ganzes nicht angezeigt wurden.

@Wasser_Wanderer: Füge doch testweise ENT_IGNORE zum htmspecialchars()-Aufruf hinzu, also so:
PHP-Code:
function codiere($s) {
    return 
htmlspecialchars($sENT_QUOTES ENT_IGNORE'UTF-8');

Falls jetzt nur noch die Umlaute verschwinden oder komisch dargestellt werden, ist deine Variable $spieler nicht in UTF-8 kodiert.

Zitat:
Zitat von Wasser_Wanderer Beitrag anzeigen
hier die Fehlermeldungen:
PHP-Code:
Notice: Use of undefined constant ENT_HTML5 assumed 'ENT_HTML5' in index.php on line  54... 
Das heißt, deine weiter oben gemachten Angaben zur PHP-Version waren wohl nicht korrekt:
Zitat:
Zitat von Wasser_Wanderer Beitrag anzeigen
Auf dem Server läuft:
PHP Version 5.5.9-1ubuntu4.9
Das stellt leider auch deine weiteren Angaben infrage:
Zitat:
Zitat von Wasser_Wanderer Beitrag anzeigen
1. Das Problem tauchte aufeinmal auf (ca. 1 Monat)
2. Es wurde an den Scripten nichts verändert
Ich halte es für sehr unwahrscheinlich, dass dein Hoster vor kurzem auf eine (andere) PHP-5.3-Version geupdated hat.

Zitat:
Zitat von Wasser_Wanderer Beitrag anzeigen
PHP-Code:
htmlspecialchars($sENT_QUOTES ENT_HTML5 ENT_DISALLOWED ENT_SUBSTITUTE'UTF-8'); 
Soweit, so richtig.

Zitat:
Zitat von Wasser_Wanderer Beitrag anzeigen
Ich musste ja nur die ENT_HTML5, ENT_DISALLOWED und ENT_SUBSTITUTE in Single-Quotes setzen
Soweit, so unsinnig. Setzt du die "unbekannten" Konstanten in einfache Hochkommas, werden aus NULLen Zeichenketten. Verknüpft mit dem Ganzzahl-Operator '|' (bitweises ODER), werden sie wieder zu Integers zwangskonvertiert. Da sie keine für PHP gültigen Zahlenwerte enthalten, macht PHP Nullen (integer(0)) daraus. Am Ende bleibt nur der Wert übrige, den die bekannte Konstante ENT_QUOTES hat, die Zahl 3.

Das kannst du selbst nachprüfen:
PHP-Code:
// int(187) in aktuellen PHP-Versionen
// int(3) in PHP vor 5.4.0 (+ Fehlermeldungen)
var_dump(ENT_QUOTES ENT_HTML5 ENT_DISALLOWED ENT_SUBSTITUTE);

// int(3)
var_dump(ENT_QUOTES 'ENT_HTML5' 'ENT_DISALLOWED' 'ENT_SUBSTITUTE');

// int(3)
var_dump(ENT_QUOTES);

// int(3)
var_dump(3); 
Letztendlich macht deine Spezialkonstruktion damit nichts anderes als ein einfaches
PHP-Code:
htmlspecialchars($cdataENT_QUOTES
gemacht hätte -- und das in allen PHP-Versionen.

Ich glaube, du sollstest vor weiteren Ratespielchen und Reparaturversuchen erstmal grundhaft feststellen, worauf du aufbaust.

Außerdem für später:
Zitat:
PHP-Code:
<td colspan="3\" bgcolor=\"".$ergtab."\" height=\"25\"><b style=\"color:".$ergtab2."\">".codierung($spieler)."</b></td> 
Gewöhnliche Zeichenketten solltest du immer in einfache Hochkommas setzen. Dann musst du die doppelten in den HTML-Attributen nicht extra "escapen".

Ein Vorschlag für mehr Übersichtlichkeit:
PHP-Code:
printf(
    
'<td colspan="3" bgcolor="%s" height="25"><b style="color:%s">%s</b></td>',
    
codierung($ergtab),
    
codierung($ergtab2),
    
codierung($spieler)
); 
Auch solltest du alles, was in CSS-Klassen ausgedrückt werden kann, wie Abmessungen, Text- und Hintergrundfarbe ins CSS verlagern. Das macht dein HTML übersichtlicher.
Mit Zitat antworten
  #19 (permalink)  
Alt 24-07-2015, 16:07
Wasser_Wanderer
 Registrierter Benutzer
Links : Onlinestatus : Wasser_Wanderer ist offline
Registriert seit: Aug 2011
Beiträge: 225
Wasser_Wanderer befindet sich auf einem aufstrebenden Ast
Standard

@mermshaus:
Die PHP-Version die ich angegeben habe, ist genau die, was in der PHP-Info steht:
PHP Version 5.5.9-1ubuntu4.9


System Linux powerc110.galaxy-gmbh-service.de 3.13.0-042stab108.2 #1 SMP Tue May 12 18:07:50 MSK 2015 x86_64 Build Date Apr 17 2015 11:41:17 ------------------------------------------------------

Und mein beschriebenes Problem ist mir erst vor ca 1 Monat aufgefallen.
Zu dem Zeitpunkt ca 19.06.2015 wurden alle Sonderzeichen/Umlaute absolut korrekt dargestellt.

Welche PHP-Version davor auf dem Server lief, das ist mir nicht bekannt.

Sicher sind da in der Programmierung handwerkliche Fehler drinne. Das ist mir klar.

Dennoch danke für Eure Hilfestellungen.

Gruss WW
Mit Zitat antworten
  #20 (permalink)  
Alt 24-07-2015, 16:27
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Wasser_Wanderer Beitrag anzeigen
Die PHP-Version die ich angegeben habe, ist genau die, was in der PHP-Info steht:
PHP Version 5.5.9-1ubuntu4.9
Dann würdest du aber wohl nicht die undefined constant-Notices bzgl. dieser Konstanten bekommen … das ist eigentlich unmöglich.

Bau mal im selben(!) Script, in dem du auch das htmlspecialchars bzw. deine Funktion codierung aufrust,
PHP-Code:
var_dump(phpversion()); 
ein – was gibt das aus …?
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #21 (permalink)  
Alt 24-07-2015, 16:35
Wasser_Wanderer
 Registrierter Benutzer
Links : Onlinestatus : Wasser_Wanderer ist offline
Registriert seit: Aug 2011
Beiträge: 225
Wasser_Wanderer befindet sich auf einem aufstrebenden Ast
Standard

@ wahsaga

Ausgabe: string(16) "5.5.9-1ubuntu4.9"

Local auf dem Windows-PC läuft: 5.3.8 Version

Und auf dem lokalen Server tritt das Problem nicht auf.

Gruss WW
Mit Zitat antworten
  #22 (permalink)  
Alt 24-07-2015, 16:51
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Zitat:
Zitat von Wasser_Wanderer Beitrag anzeigen
Ausgabe: string(16) "5.5.9-1ubuntu4.9"

Local auf dem Windows-PC läuft: 5.3.8 Version
Also stammen die Fehlermeldungen von der (lokalen) 5.3.8-Version, aber die "verschluckten" Textteile gibts nur auf dem Server mit 5.5.9?

Zitat:
Zitat von Wasser_Wanderer Beitrag anzeigen
Und auf dem lokalen Server tritt das Problem nicht auf.
Ich tendiere mehr und mehr dazu, dir einfach 'cp1252' als Parameter für die Zeichenkodierung zu empfehlen:
PHP-Code:
function codierung($s)
{
    return 
htmlspecialchars($sENT_QUOTES ENT_IGNORE'cp1252');

Das ist zwar keine gute Lösung, müsste aber bei deinen beiden PHP-Versionen zum gleichen Ergebnis führen.

Im Client kommt dann zwar vermutlich immer noch UTF-8+Single-Byte-Mischmasch an, aber an so etwas sind Webbrowser ja gewöhnt.

Geändert von fireweasel (24-07-2015 um 17:00 Uhr)
Mit Zitat antworten
  #23 (permalink)  
Alt 24-07-2015, 17:18
Wasser_Wanderer
 Registrierter Benutzer
Links : Onlinestatus : Wasser_Wanderer ist offline
Registriert seit: Aug 2011
Beiträge: 225
Wasser_Wanderer befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von fireweasel Beitrag anzeigen
Also stammen die Fehlermeldungen von der (lokalen) 5.3.8-Version, aber die "verschluckten" Textteile gibts nur auf dem Server mit 5.5.9?
Genauso ist es.

Zitat:
Zitat von fireweasel
Ich tendiere mehr und mehr dazu, dir einfach 'cp1252' als Parameter für die Zeichenkodierung zu empfehlen:
PHP-Code:
function codierung($s)
{
    return 
htmlspecialchars($sENT_QUOTES ENT_IGNORE'cp1252');

Das ist zwar keine gute Lösung, müsste aber bei deinen beiden PHP-Versionen zum gleichen Ergebnis führen.
Ich/wir haben die Zeichenkodierung auf: ISO-8859-1 gestellt.
Damit werden die Wörter mit Umlauten richtig und vollständig angezeigt.

Bei UTF-8 werden die Umlaute selbst falsch dargestellt.

Gruss WW
Mit Zitat antworten
Antwort

Lesezeichen


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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Passwortgeschützte Seite mit Textareas (werden nicht angezeigt) wTw PHP Developer Forum 18 04-01-2009 17:55
Umlaute mit UTF8 von MySQL werden nicht korrekt angezeigt. Londrag PHP Developer Forum 2 14-06-2008 20:53
(css) horizontale Liste mit eigenen Item-Icons werden im IE nicht angezeigt Jenoptik HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 1 11-03-2006 15:23
Probleme mit Banner (werden nicht angezeigt) inet Windows (Client/Server) 8 15-05-2005 08:29
Kommentare werden nicht angezeigt Proggy PHP Developer Forum 5 11-01-2004 21:54

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 03:00 Uhr.