Seite 1 von 3
Post in IS anstatt UTF an Server schicken?
Verfasst: 16.03.2009 00:58
von AMIGA4000
Ist es realisierbar bei einem Post der in ISO-8859-1 oder -15 geschrieben ist (der Browser unterstützt kein UTF) dies entweder automatisch erkennen zu lassen, und dies dem Server mitzuteilen - oder einen Button einzubauen? Wenn der aktiv gesetzt wurde bekommt der Server, der ja das empfangene ISO-8859 intern in UTF wandeln und somit korrekt in die Datenbank ablegt, den Post ohne eine Fehlermeldung ("Text ist zu kurz") die Daten korrekt ab ?!
Wer wo wie könnte man das machen?
Re: Post in IS anstatt UTF an Server schicken?
Verfasst: 16.03.2009 07:55
von gn#36
Das ist nicht so einfach. phpBB3 wurde komplett auf UTF8 umgestellt und vereinheitlicht um Konvertierungsprobleme zu vermeiden und das ganze so fit für die Zukunft zu machen. Mir wäre keine einfache Möglichkeit bekannt eine Umstellung auf ISO-8859-xx zu realisieren.
Das einfachste was ich mir vorstellen könnte das machbar wäre ist das Folgende: Um dem Browser ISO-8859-xx zu liefern kann man Output Buffering betreiben und vor dem Senden alles durch einen utf8 to iso-8859 converter jagen, vorrausgesetzt alle Browser erwarten das Format, in der anderen Richtung müsste man evtl. entweder die Funktion request_var manipulieren oder vor den Verarbeitungen des Forums die ganzen POST Variableninhalte konvertieren. Die Frage ist ob der Browser das Encoding Format an den Server schickt und das Forum da nicht drauf reagieren kann (gut möglich), oder ob das Forum "raten" muss was für ein Format da ankommt (und dann natürlich falsch rät).
Was ist denn das für ein veralteter Browser der nicht UTF8 fähig ist?
Re: Post in IS anstatt UTF an Server schicken?
Verfasst: 16.03.2009 13:00
von AMIGA4000
gn#36 hat geschrieben:Das ist nicht so einfach. phpBB3 wurde komplett auf UTF8 umgestellt und vereinheitlicht um Konvertierungsprobleme zu vermeiden und das ganze so fit für die Zukunft zu machen. Mir wäre keine einfache Möglichkeit bekannt eine Umstellung auf ISO-8859-xx zu realisieren.
Das einfachste was ich mir vorstellen könnte das machbar wäre ist das Folgende: Um dem Browser ISO-8859-xx zu liefern kann man Output Buffering betreiben und vor dem Senden alles durch einen utf8 to iso-8859 converter jagen, vorrausgesetzt alle Browser erwarten das Format, in der anderen Richtung müsste man evtl. entweder die Funktion request_var manipulieren oder vor den Verarbeitungen des Forums die ganzen POST Variableninhalte konvertieren. Die Frage ist ob der Browser das Encoding Format an den Server schickt und das Forum da nicht drauf reagieren kann (gut möglich), oder ob das Forum "raten" muss was für ein Format da ankommt (und dann natürlich falsch rät).
Was ist denn das für ein veralteter Browser der nicht UTF8 fähig ist?

Das ist der "iBrowse 2.4" der für die 68k Amigas letzte verfügbare Browser.
UTF-8 kann er nur im Empfang verarbeiten. Beim senden hatten die Macher wohl keine Lust mehr (wie kurz drauf auch keine Lizenzen/Keys mehr zu vergeben...) oder es war nicht machbar.
Wir sind halt Randgruppe *schmunzel*
Und es gibt aber doch noch genug Amiganer die eben in solchen Foren diese Probleme haben...
Siehe bspw. auch die
http://www.amiga-resistance.info die auch vor kurzem auf PHPbb3 umgestellt haben und knabbern auch an dem "Umlaute Problem" rum.
Ich stelle mir das sicher (zu) leicht vor

also nich hauen
Diese request-var ... könnte man da nicht eine zweite für ISO umfummeln, die dann per Auswahlknopf neben dem Editorfenster "umgeschalten" wird?
Bzw. die Abfrage, wenn Wert "x" gesetzt ist, (also der Button) dann sende den Inhalt mit der ISO-Information an den Server? (der ja davon ausgeht UTF zu erhalten)
- Oder komplizierter sicher, eine Auswertung des Inhaltes - ein Umlaut "äöüÄÖÜß" kommt ja im UTF nicht vor, was ja zu der Fehlermeldung "Text zu kurz" führt (oder kann man die ausschalten, dass es ignoriert und als ISO weitergegeben wird?
Mir fehlt da der tiefere Durchblick; kann mich nur auf das stützen was ich so im Netz jetzt noch aufgeschnappt habe
Merci
Re: Post in IS anstatt UTF an Server schicken?
Verfasst: 16.03.2009 14:07
von AMIGA4000
Uns kam gerade die Idee ... was passiert wenn an die Beitragsüberwachung ausschaltet?
(jene die auch die Fehlermeldung zurück gibt "Text zu kurz" - würde der Post dann an den Server übergeben werden?
Wie sieht der Post dann in der AUsgabe wieder aus? Werden die Umlaute verschluckt oder korrigiert der Server das vlt. sogar?

Re: Post in IS anstatt UTF an Server schicken?
Verfasst: 16.03.2009 19:16
von gn#36
So einfach ist das nicht, die Datenbank wird die Zeichen nicht akzeptieren wenn sie ungültig sind.
Ich glaube die einfachste Variante wäre wenn du utf8_encode auf alle Parameter loslässt die das Forum von dir bekommt. Also erst diese Funktion:
Code: Alles auswählen
function array_encode($array)
{
if(is_array($array)
{
foreach($array as $key => $value)
{
$array[$key] = array_encode($value);
}
return $array;
}
else
{
return utf8_encode($array);
}
}
oben in die common.php einbauen, dann darunter folgenden Aufruf:
Wenn du Glück hast reicht das schon, dann kann allerdings vermutlich kein anderer Browser mehr Posts im Forum erstellen die korrekte Umlaute enthalten. Bitte teste mal ob das so klappt mit dem Browser.
Um das dann noch zu ermöglichen könnte man versuchen die Daten auf ungültige Zeichen hin zu untersuchen und nur zu konvertieren wenn solche enthalten sind. Einfacher und weniger Performance raubend wäre es allerdings wenn man den User Agent prüft. Ich habe keine Ahnung wie der vom Amiga aussieht, aber das könntest du relativ einfach herausfinden indem du folgendes Skript auf deinen Server legst und mit dem Browser aufrufst:
Code: Alles auswählen
<?php
print_r($_SERVER);
$browser = get_browser(null, true);
print_r($browser);
?>
Re: Post in IS anstatt UTF an Server schicken?
Verfasst: 16.03.2009 21:13
von AMIGA4000
Hab Dank
an welche Stelle genau in der common.php?
Code: Alles auswählen
<?php
/**
*
* @package phpBB3
* @version $Id: common.php 8479 2008-03-29 00:22:48Z naderman $
* @copyright (c) 2005 phpBB Group
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
* Minimum Requirement: PHP 4.3.3
*/
/**
*/
if (!defined('IN_PHPBB'))
{
exit;
}
$starttime = explode(' ', microtime());
$starttime = $starttime[1] + $starttime[0];
// Report all errors, except notices
error_reporting(E_ALL ^ E_NOTICE);
/*
* Remove variables created by register_globals from the global scope
* Thanks to Matt Kavanagh
*/
function deregister_globals()
{
$not_unset = array(
'GLOBALS' => true,
'_GET' => true,
'_POST' => true,
'_COOKIE' => true,
'_REQUEST' => true,
'_SERVER' => true,
'_SESSION' => true,
'_ENV' => true,
'_FILES' => true,
'phpEx' => true,
'phpbb_root_path' => true
);
// Not only will array_merge and array_keys give a warning if
// a parameter is not an array, array_merge will actually fail.
// So we check if _SESSION has been initialised.
if (!isset($_SESSION) || !is_array($_SESSION))
{
$_SESSION = array();
}
// Merge all into one extremely huge array; unset this later
$input = array_merge(
array_keys($_GET),
array_keys($_POST),
array_keys($_COOKIE),
array_keys($_SERVER),
array_keys($_SESSION),
array_keys($_ENV),
array_keys($_FILES)
);
---schnipp---
ab Zeile 13?
Das $_POST = array_encode($_POST);
nach dem:
$_SESSION = array();
einfügen?
Die Ausgabe des "User Agent" poste ich später wie ich wieder daheim bin
Die Performanze ist nicht sooo primär - wir sind in dem kleinen Forum nur ne Hand voll User ...
und der Strato-Server ist eh nicht so der schnellste *lach*
Wenn es dann aber funktioniert... wäre supi! :bet:
Re: Post in IS anstatt UTF an Server schicken?
Verfasst: 16.03.2009 21:24
von AMIGA4000
Habe es schon mal unter
http://forum.binkino.de/browser.php
gspeichert.
Beim testweise Aufruf über den Firefox bekomme ich nach der Ausgabe von
Code: Alles auswählen
Array ( [TZ] => MET [DOCUMENT_ROOT] => /home/strato/http/power/web7/52/93/51504893/htdocs [HTTP_ACCEPT] => text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 [HTTP_ACCEPT_CHARSET] => ISO-8859-1,utf-8;q=0.7,*;q=0.7 [HTTP_ACCEPT_ENCODING] => gzip,deflate [HTTP_ACCEPT_LANGUAGE] => de-de,de;q=0.8,en-us;q=0.5,en;q=0.3 [HTTP_CONNECTION] => keep-alive [HTTP_COOKIE] => phpbb3_34frz_u=53; phpbb3_34frz_k=56fee3ea73227a5a; phpbb3_34frz_sid=c1a2b33e9d0a582898e8c2e5c282922d; /index.phpfirsttimeload=0; /index.php= [HTTP_HOST] => forum.binkino.de [HTTP_KEEP_ALIVE] => 300 [HTTP_USER_AGENT] => Mozilla/5.0 (Windows; U; Win 9x 4.90; de; rv:1.8.0.12) Gecko/20070508 Firefox/1.5.0.12 [REMOTE_ADDR] => 87.178.83.192 [REMOTE_PORT] => 2618 [RZ_php] => 5 [SCRIPT_FILENAME] => /home/strato/http/power/web7/52/93/51504893/htdocs/forum_a68k/browser.php [SCRIPT_URI] => http://forum.binkino.de/browser.php [SCRIPT_URL] => /browser.php [SERVER_ADMIN] => service@webmailer.de [SERVER_NAME] => forum.binkino.de [SERVER_PORT] => 80 [SERVER_SOFTWARE] => Apache/1.3.37 (Unix) [UNIQUE_ID] => Sb6z-cCoKVEAAECccMA [GATEWAY_INTERFACE] => CGI/1.1 [SERVER_PROTOCOL] => HTTP/1.1 [REQUEST_METHOD] => GET [QUERY_STRING] => [REQUEST_URI] => /browser.php [SCRIPT_NAME] => /browser.php [PHP_SELF] => /browser.php [REQUEST_TIME] => 1237234685 [argv] => Array ( ) [argc] => 0 )
dies angezeigt:
"Warning: get_browser() [function.get-browser]: browscap ini directive not set in /mnt/web7/52/93/51504893/htdocs/forum_a68k/browser.php on line 3"
der Seitenquelltext der Ausgabe über den IE5.5 sieht etwas übersichtlicher aus

:
Code: Alles auswählen
Array
(
[TZ] => MET
[DOCUMENT_ROOT] => /home/strato/http/power/web7/52/93/51504893/htdocs
[HTTP_ACCEPT] => image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*
[HTTP_ACCEPT_ENCODING] => gzip, deflate
[HTTP_ACCEPT_LANGUAGE] => de
[HTTP_CONNECTION] => Keep-Alive
[HTTP_HOST] => forum.binkino.de
[HTTP_USER_AGENT] => Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90)
[REMOTE_ADDR] => 87.178.83.192
[REMOTE_PORT] => 2643
[RZ_php] => 5
[SCRIPT_FILENAME] => /home/strato/http/power/web7/52/93/51504893/htdocs/forum_a68k/browser.php
[SCRIPT_URI] => http://forum.binkino.de/browser.php
[SCRIPT_URL] => /browser.php
[SERVER_ADMIN] => service@webmailer.de
[SERVER_NAME] => forum.binkino.de
[SERVER_PORT] => 80
[SERVER_SOFTWARE] => Apache/1.3.37 (Unix)
[UNIQUE_ID] => Sb61CsCoKVIAAGz4Wa8
[GATEWAY_INTERFACE] => CGI/1.1
[SERVER_PROTOCOL] => HTTP/1.1
[REQUEST_METHOD] => GET
[QUERY_STRING] =>
[REQUEST_URI] => /browser.php
[SCRIPT_NAME] => /browser.php
[PHP_SELF] => /browser.php
[REQUEST_TIME] => 1237234954
[argv] => Array
(
)
[argc] => 0
)
<br />
<b>Warning</b>: get_browser() [<a href='function.get-browser'>function.get-browser</a>]: browscap ini directive not set in <b>/mnt/web7/52/93/51504893/htdocs/forum_a68k/browser.php</b> on line <b>3</b><br />
Re: Post in IS anstatt UTF an Server schicken?
Verfasst: 16.03.2009 22:01
von gn#36
Das ist völlig nutzlos, ich brauche die Ausgabe die du mit deinem Problembrowser bekommst, die weicht nämlich davon ab.
Außerdem ist wichtig dass du den rest oben aus dem Post schon mal mit dem Browser testest, wenn das nicht funktioniert müssen wir uns sowieso erst mal was anderes überlegen dann geht das nämlich nicht so einfach.
Re: Post in IS anstatt UTF an Server schicken?
Verfasst: 16.03.2009 23:05
von AMIGA4000
Weiss ich - hab doch nur probiert
Hier die Ausgabe aufm Amiga:
Code: Alles auswählen
Array ( [TZ] => MET [DOCUMENT_ROOT] => /home/strato/http/power/web7/52/93/51504893/htdocs [HTTP_ACCEPT] => text/html;level=3, text/html;version=3.0, */* [HTTP_ACCEPT_ENCODING] => gzip, deflate [HTTP_ACCEPT_LANGUAGE] => de, * [HTTP_COOKIE] => phpbb3_34frz_u=53; phpbb3_34frz_k=743148d9aacd5fe0; phpbb3_34frz_sid=77f9859bf50b3210ce425a23622b042d [HTTP_HOST] => forum.binkino.de [HTTP_USER_AGENT] => IBrowse/2.4 (AmigaOS 3.9; 68K) [REMOTE_ADDR] => 84.57.237.234 [REMOTE_PORT] => 1060 [RZ_php] => 5 [SCRIPT_FILENAME] => /home/strato/http/power/web7/52/93/51504893/htdocs/forum_a68k/browser.php [SCRIPT_URI] => http://forum.binkino.de/browser.php [SCRIPT_URL] => /browser.php [SERVER_ADMIN] => service@webmailer.de [SERVER_NAME] => forum.binkino.de [SERVER_PORT] => 80 [SERVER_SOFTWARE] => Apache/1.3.37 (Unix) [UNIQUE_ID] => Sb7MUMCoKVEAADu6jbM [GATEWAY_INTERFACE] => CGI/1.1 [SERVER_PROTOCOL] => HTTP/1.0 [REQUEST_METHOD] => GET [QUERY_STRING] => [REQUEST_URI] => /browser.php [SCRIPT_NAME] => /browser.php [PHP_SELF] => /browser.php [REQUEST_TIME] => 1237240912 [argv] => Array ( ) [argc] => 0 )
Warning: get_browser() [function.get-browser]: browscap ini directive not set in /mnt/web7/52/93/51504893/htdocs/forum_a68k/browser.php on line 3
Re: Post in IS anstatt UTF an Server schicken?
Verfasst: 16.03.2009 23:07
von AMIGA4000
gn#36 hat geschrieben:Ausserdem ist wichtig dass du den rest oben aus dem Post schon mal mit dem Browser testest, wenn das nicht funktioniert muessen wir uns sowieso erst mal was anderes ueberlegen dann geht das nämlich nicht so einfach.
an welche Stelle(n) genau in der common.php?