anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: Di 16 Okt, 2018 11:10

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 29 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
BeitragVerfasst: So 10 Dez, 2017 16:01 
Offline
User
User

Registriert: So 12 Mär, 2017 03:00
Beiträge: 23
Hallöchen! :)

Da mein Hoster nur noch PHP 7.0 anbietet, musste ich auch erstmal die Scripts upgraden.
Nun hab ich aber hauptsächlich das Problem, dass in den Farbcodes die Sonderzeichen wohl korrekt in der DB gespeichert, aber falsch angezeigt werden und somit unbrauchbar sind.
Die Scripts sind auf UTF-8 ohne BOM kodiert, da UTF-8 allein zicken macht.
Ich weiß nun nicht, ob im Color-Skript noch Änderungen gemacht werden müssen, damit es unter PHP 7.0 läuft. Mysql habe ich bereits auf Mysqli geändert. Ansonsten stehe ich auf dem Schlauch.
In der Datenbank (MariaDB) wird statt Â, î und co nur à angezeigt. Das lässt sich wohl manuell ändern, wird aber wiederum nicht korrekt in der Grotte angezeigt. Stattdessen prankt an der Stelle dieses wunderschöne Zeichen, von dem ich hoffte, es lange nicht mehr sehen zu müssen: �
Wüsste da jemand einen Rat? :/

Hier den Link zur Source, auch wenn ich an dem Script selber nicht viel geändert habe: http://alresia.de/source.php?url=/colors.php#source


Dateianhänge:
farbcodesDB2.png [80.1 KIB]
Noch nie heruntergeladen
farbcodesDB1.png
farbcodesDB1.png [ 69.84 KIB | 2056-mal betrachtet ]
sonderzeichenfarbcodes1.png
sonderzeichenfarbcodes1.png [ 13.55 KIB | 2056-mal betrachtet ]
Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo 11 Dez, 2017 16:25 
Offline
Großmeister
Großmeister

Registriert: Fr 01 Jul, 2005 18:41
Beiträge: 475
Wohnort: Saarbrücken
Geschlecht: Männlich
Du kannst versuchen mysqli_query("SET NAMES 'utf8'"); in deine common.php nach dem dbconnect zu schreiben.

Bei mir hat damals geholfen die Tabelle einmal zu löschen und neu hochzuladen.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo 11 Dez, 2017 22:10 
Offline
User
User

Registriert: So 12 Mär, 2017 03:00
Beiträge: 23
Ändert leider nichts an der Problematik. :/


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi 13 Dez, 2017 21:34 
Offline
Eingeweihter
Eingeweihter
Benutzeravatar

Registriert: Mo 01 Sep, 2008 10:29
Beiträge: 99
Wohnort: Niedersachsen
Geschlecht: Männlich
LoGD: http://www.sotbd.de/about.php?op=source
Die PHP-Dateien mit UTF-8 zu kodieren reicht alleine leider nicht aus. Hast du denn eine komplette Umstellung vollzogen ? Heißt, auch die notwendigen PHP Einstellungen getroffen, auf die UTF-8 Funktionen umgestellt, dem Browser und der Datenbank gesagt das die Verbindung nun mittels UTF-8 abläuft und die DB auf UTF-8 konvertiert ?


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do 14 Dez, 2017 17:13 
Offline
User
User

Registriert: So 12 Mär, 2017 03:00
Beiträge: 23
DB läuft mit der UTF8-Kollation und mittlerweile ist jedes Script auch mit dem Header versehen, nachdem ich gelesen hab, dass bei der UTF8 ohne Bom-Kodierung da gerne mal Mist läuft, wenn der fehlt.
Aber egal was ich alles eingestellt hab, will es nicht.
Gestern habe ich dann noch entdeckt, dass man in der php.ini durch die mbstring.func_overload = 7 Einstellung die strings überladen kann, damit die Sonderzeichen mehr Platz zum entfalten erhalten.
Sagen wirs so... das bringt mich dem ganzen ein wenig näher, reißt es aber noch nicht raus. :/
Ich hab nachwievor die Fragezeichen statt einem Ü, was ich komisch find, weil in der reinen Textausgabe werden Umlaute und Co korrekt angezeigt.
Wenn ich die Zeichen manuell in der DB eingebe, werden die dort auch richtig angezeigt. Nur eben auf dem Server in der Tabelle nicht.

Ich hab nochmal einen Screenshot vom derzeitigen Stand gemacht. Was halt auffällt ist, dass die Hex-Codes bei den Sonderzeichen halbwegs angezeigt werden. :/

Bild


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do 14 Dez, 2017 19:48 
Offline
Eingeweihter
Eingeweihter
Benutzeravatar

Registriert: Mo 01 Sep, 2008 10:29
Beiträge: 99
Wohnort: Niedersachsen
Geschlecht: Männlich
LoGD: http://www.sotbd.de/about.php?op=source
Beim durchgucken deiner common.php sind mir zwei Sachen aufgefallen:

1. Ganz unten an den Titeln sieht es für mich so aus, als wäre bei der Konvertierung irgendwas falsch gelaufen
Code:
$titles = array(
    0=>array("Bauernjunge","Bauernm�dchen"),
    1=>array("Knecht", "Magd"),
    2=>array("Bauer", "B�uerin"),
    3=>array("Grossbauer", "Grossb�uerin"),
    4=>array("Spurenleser","Spurenleserin"),
        5=>array("J�ger","J�gerin"),
    6=>array("Gutshofverwalter","Gutshofverwalterin"),
    7=>array("Gutsherr","Gutsherrin"),
    8=>array("B�rger","B�rgerin"),
    9=>array("Gladiator","Gladiatorin"),
    10=>array("Legion�r","Legion�rin"),
    11=>array("Centurio","Centurioness"),
    12=>array("Meister","Meisterin"),
    13=>array("Ratsherr", "Ratsfrau"),
    14=>array("Verwalter","Verwalterin"),
    15=>array("B�rgermeister", "B�rgermeisterin"),
    16=>array("Major", "Major"),
    17=>array("General", "General"),
    18=>array("Edler", "Edle"),
    19=>array("Ritter", "Ritterin"),
    20=>array("Junker", "Junkerin"),
    21=>array("Freiherr", "Freifrau"),
    22=>array("Baron", "Baronin"),
    23=>array("F�rst", "F�rstin"),
    24=>array("Grossf�rst", "Grossf�rstin"),
    25=>array("Herzog", "Herzogin"),
    26=>array("Graf", "Gr�fin"),
    27=>array("Prinz", "Prinzessin"),
    28=>array("Kronprinz", "Kronprinzessin"),
    29=>array("K�nig", "K�nigin"),
    30=>array("Kaiser", "Kaiserin"),
    31=>array("Drachent�ter","Drachent�terin"),
    32=>array("Bischof","Bisch�fin"),
    33=>array("Papst", "P�pstin"),
    34=>array("Seele", "Seele"),
    35=>array("Seliger", "Selige"),
    36=>array("Heiliger", "Heilige"),
    37=>array("Engel", "Engel"),
    38=>array("Erzengel", "Erzengel"),
    39=>array("Kraft", "Kraft"),
    40=>array("Macht", "Macht"),
    41=>array("Herrschaft", "Herrschaft"),
    42=>array("Thron", "Thron"),
    43=>array("Seraphim", "Seraphim"),
    44=>array("Cherubim", "Cherubim"),
    45=>array("Titan","Titanin"),
    46=>array("Erztitan","Erztitanin"),
    47=>array("Halbgott", "Halbg�ttin"),
    48=>array("Untergott","Unterg�ttin")
);


2. Vermisse ich ein mysqli.set-charset nach dem Herstellen der Verbindung zur DB.
Ich weiß natürlich welche config deine DB hat, aber es ist noch immer sehr häufig anzutreffen das diese im Standard nicht mit utf8 laufen und dies somit für die Verbindung immer angegeben werden muss, damit die Daten auch korrekt kodiert werden.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do 14 Dez, 2017 20:55 
Offline
User
User

Registriert: So 12 Mär, 2017 03:00
Beiträge: 23
Also a) alles per Hand ändern und b) mysqli.set-charset wohin einfügen? In die connect.php?


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do 14 Dez, 2017 22:31 
Offline
Eingeweihter
Eingeweihter
Benutzeravatar

Registriert: Mo 01 Sep, 2008 10:29
Beiträge: 99
Wohnort: Niedersachsen
Geschlecht: Männlich
LoGD: http://www.sotbd.de/about.php?op=source
Ich würde auf jeden Fall mal kontrollieren ob das nur für mich in der Source so aussieht oder auch bei dir aufm PC und falls ja dann natürlich händisch anpassen.

Habe gesehen, das du versucht hast den Tipp Taikun14 umzusetzen, aber leider an der falschen Stelle:
Code:
if (file_exists("dbconnect.php")){     
    require_once "dbconnect.php";
    mysqli_query("SET NAMES 'utf8' COLLATE 'utf8_general_ci' ");
}else{
    echo "Du must die benötigten Informationen in die Datei \"dbconnect.php.dist\" eintragen und sie unter dem Namen \"dbconnect.php\" speichern.".
    exit();
}


Der MySQL-Query wird an dieser Stelle gar nicht funktionieren, da du a) noch gar keine Verbindung zur DB hergestellt hast und b) die Methode beim prozeduralen Aufruf zwei Parameter erwartet, wobei der erste den Link zur DB-Verbindung beinhalten muss. Diese Zeile kannst du also getrost wieder entfernen.

So dann solltest du den Aufruf bezüglich dem Setzen des Zeichensatzes zwischen diese beiden Zeilen packen:
Code:
$link = db_pconnect($DB_HOST, $DB_USER, $DB_PASS) or die (db_error($link));
db_select_db($link, $DB_NAME) or die (db_error($link));


Entweder du machst es mittels den PHP Funktionen direkt, wobei ich aber dafür plädieren würde dir dafür auch eine Wrapper Funktion in der dbwrapper.php anzulegen und diese dann zu verwenden, zwecks Einheitlichkeit.

Code:
mysqli_set_charset ($link , "utf8");
// bzw.
db_set_charset ("utf8"); // muss zuerst in der dbwrapper.php definiert werden


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do 14 Dez, 2017 23:18 
Offline
User
User

Registriert: So 12 Mär, 2017 03:00
Beiträge: 23
Oh mein Gott, das wars...
Vielen lieben Dank!! Ich könnt dich echt knutschen!


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr 15 Dez, 2017 07:23 
Offline
Eingeweihter
Eingeweihter
Benutzeravatar

Registriert: Mo 01 Sep, 2008 10:29
Beiträge: 99
Wohnort: Niedersachsen
Geschlecht: Männlich
LoGD: http://www.sotbd.de/about.php?op=source
Keine Ursache, freut mich wenn ich helfen konnte ;-)


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo 25 Dez, 2017 14:54 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3898
Wohnort: Basel
Geschlecht: Männlich
Kleine Anmerkung: Idealerweise nimmt man nicht utf8 in mysql, sondern utf8mb4. mysql-utf8 unterstützt nur bis zu 3 bytes pro zeichen, während richtiges utf8 bis zu 4 benötigen kann.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi 27 Dez, 2017 21:19 
Offline
User
User

Registriert: So 12 Mär, 2017 03:00
Beiträge: 23
Ui, danke! Wird sofort geändert :)



EDIT:
Jetzt hab ich nur (bereits vor der Änderung von UTF8 auf UTF8mb4) das Problem, dass in der Fußzeile solche kleinen Codeschnipsel angezeigt werden.
Dies liegt wohl an dem mbstring.func_overload = 7 in der php.ini. Wenn ich den Befehl lösche, ist das Problem zumindest weg.
Das Problem ist aber, dass die Sonderzeichen dann als Farbcodes nicht mehr verwendbar sind. Ich kann sie dann nicht via ` benutzen.
Sonst hab ich an der php.ini nichts geändert. Sämtliche Einstellungen sind vom Hoster voreingestellt.
Muss ich dort noch zusätzliche Änderungen hinzufügen?


Bild


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di 02 Jan, 2018 13:40 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3898
Wohnort: Basel
Geschlecht: Männlich
Das ist ein Schuss ins dunkle: Die page_footer-Funktion hat die folgende Zeile:

Code:
echo compress_out($output);


Könntest du die mit

Code:
echo $output;


ersetzen und schauen, ob das Problem gelöst wird?


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di 02 Jan, 2018 23:52 
Offline
User
User

Registriert: So 12 Mär, 2017 03:00
Beiträge: 23
Ich hab nun ein paar mal zwischen den Seiten rumgeswitcht. Bislang sind keine Codeschnipsel wieder aufgeploppt. :)
Dankeschön! (Ich schrei einfach, falls es doch wieder erscheinen sollte.... *hust*)


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So 17 Jun, 2018 15:10 
Offline
User
User

Registriert: So 12 Mär, 2017 03:00
Beiträge: 23
Gut, derselbe Fehler ist nicht erschienen, dafür nun zwei andere, die ich jetzt erst nach Eröffnung des Servers bemerkt habe.
Und zwar funktionieren die Farbcodes wie `é `ô und Co wohl im Chat-Bereich, beim Page-Header werden aber die berüchtigten Fragezeichen ausgeworfen.
Ebenso ist das Einfärben des Namens über die Jägerhütte nicht möglich.

Ich hab mal folgende Screenshots gemacht, damit man direkt sieht, was das Problem ist:
Screenshot 1
Screenshot 2

Mit den "normalen" Farbcodes funktioniert das Einfärben wunderbar und alles wird auch korrekt angezeigt, nur bei den Sonderzeichen eben nicht. Ich hab auch schon utf8_encode ausprobiert, aber nichts wollte recht helfen. ô_o
Und wie gesagt, im Chat und auch bei den eingefärbten Texten (Bei den verschiedenen Plätzen, Bios...) lassen sich die Sonderzeichen problemlos anwenden. Ich bin mittlerweile also ziemlich ratlos. :bash:


In der Source habe ich die Common.php einmal aufgemacht, so dass man ein Auge drauf schmeißen kann:
Common-Source
Colors-Source


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr 22 Jun, 2018 00:42 
Offline
Großmeister
Großmeister

Registriert: Fr 01 Jul, 2005 18:41
Beiträge: 475
Wohnort: Saarbrücken
Geschlecht: Männlich
lodge.php ( jägerhütte )

HTMLEntities mit HTMLSpecialChars ersetzen. Dadurch müsste das Einfärben dort möglich sein, auch mit Sonderzeichen ( keine 100%ige Garantie, aber ein Versuch wert! ).

Alternativ muss die Jägerhütte eventuell modifiziert werden. Da man deine nicht einsehen kann, kann ich dir nicht sagen ob's da im Code generell 'nen Problem gibt.

page_header

wird bei mir korrekt angezeigt. Evtl. mal den Browsercache + Cookies löschen oder einen alternativen Browser verwenden.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr 22 Jun, 2018 14:52 
Offline
User
User

Registriert: So 12 Mär, 2017 03:00
Beiträge: 23
Die Änderung auf HTMLSpecialChars hatte ich bereits vorgenommen - ändert aber leider nichts.
Ich hab die Lodge nun aber auch in der Source freigegeben. Hier ist sie. :D

Das Löschen von Cookies und Co bringen außerdem nichts. Auch bei anderen Browsern und bei anderen Usern werden die Sonderzeichen so angezeigt.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr 22 Jun, 2018 19:43 
Offline
Großmeister
Großmeister

Registriert: Fr 01 Jul, 2005 18:41
Beiträge: 475
Wohnort: Saarbrücken
Geschlecht: Männlich
Schnellste Lösung für die Lodge:

Hör dich mal bei Admins auf noch aktiven Servern um ob du deren Jägerhütte verwenden darfst. Ich meine hätte damals da auch was modifiziert wegen dem ganzen Sonderkrams, aber ich bin mittlerweile so raus, dass ich mir nicht mehr sicher bin und es auch nicht auf Anhieb hinbekommen würde.

Zum 2.Punkt kann ich dir nur sagen: bei mir wird im Browser alles korrekt angezeigt, wie vorher schon erwähnt.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Sa 23 Jun, 2018 13:33 
Offline
User
User

Registriert: So 12 Mär, 2017 03:00
Beiträge: 23
Werd ich machen. :)

Und wird dir auch bei den Sonderzeichen alles korrekt angezeigt? O_o
Wie gesagt, bei meinen Leutchen wird das genau wie im Screenshot dargestellt, weshalb ich nach langer Tüftelei vermute, dass es schlicht mit den Farbcodes zusammenhängt. :/ Ganz komisch.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo 25 Jun, 2018 13:48 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3898
Wohnort: Basel
Geschlecht: Männlich
Dass das mit der Lodge nicht korrekt angezeigt wird, liegt mehr am Quelltext der lodge als an was anderem. Das ist ersichtlich daran, dass der Name das erste mal korrekt angezeigt wird, das zweite mal aber nicht. Der grammatische Fehler lässt mich vermuten, dass das keine originale Änderung ist:

Code:
output("`n`nDeine Name bisher ist: ");
                $output.=$regname;
                output("`0, und wird so aussehen $regname");


Für "Deine Name bisher ist" ist "wird so aussehen" wird beidemale die gleiche Variable verwendet - kein Wunder sieht das gleich aus. Beim über-die-Source-fliegen scheint mir, dass $regname der bisherige Name sein soll (user.name minus user.title minus das Leerzeichen dazwischen minus alle schliessenden Tags (`0), damit die Vorschau passt.

Was funktioniert denn sonst nicht beim Einfärben? Ausser die unnötige Änderung für die Vorschau, die sowieso schon da war? Wird die komplette Änderung nicht übernommen?

PS: Da fällt mir grad noch ne Möglichkeit auf, die "Maximale-Farben"-Prüfung elegant zu umgehen... Die Code-Basis ist wirklich uralt.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 29 Beiträge ]  Gehe zu Seite 1, 2  Nächste

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen
Du darfst keine Antworten zu Themen in diesem Forum erstellen
Du darfst deine Beiträge in diesem Forum nicht ändern
Du darfst deine Beiträge in diesem Forum nicht löschen
Du darfst keine Dateianhänge in diesem Forum erstellen

Suche nach:
Gehe zu:  
cron
POWERED_BY
Deutsche Übersetzung durch phpBB.de
anpera.net - Impressum