Hallo Leute, ich bin mir nicht sicher ob es ein php Problem ist. Ich versuche es dennoch.
Bei der Installation von SugarCRM habe ich festgestellt dass ich keine Umlaute verwenden kann. Alles ab dem Ulaut wird abgeschnitten.
Auf der suche nach dem Fehler bin ich soweit zu behaupten dass es sich um einen Server/Php Configurationsproblem handelt.
Ich poste euch ein Script mit dem ich das Problem verdeutlichen kann. Das seltsame ist, auf meinen Debian System tritt die Sache nicht auf, aber auf dem SLES 10 schon.
Meinem Verständnis nach sollte die Zeile 1 und 2 der Ausgabe des Scriptes natürlich gleich sein. Auf dem Debian ist es ja auch, auf dem Suse aber nicht.
Ausgabe auf Debian:
77-61-73-73-64-c3-b6-7c-c3-a4-7c-c3-a4-7c-c3-9f-6e
77-61-73-73-64-c3-b6-7c-c3-a4-7c-c3-a4-7c-c3-9f-6e
77-61-73-73-64-25-43-33-25-42-36-25-37-43-25-43-33-25-41-34-25-37-43-25-43-33-25-41-34-25-37-43-25-43-33-25-39-46-6e
test=wassd%C3%B6%7C%C3%A4%7C%C3%A4%7C%C3%9Fn&stage =results
test=wassd%C3%B6%7C%C3%A4%7C%C3%A4%7C%C3%9Fn&stage =results
Ausgabe auf Suse:
77-61-73-73-64-c3-b6-7c-c3-a4-7c-c3-a4-7c-c3-9f-6e
77-61-73-73-64-8f-ab-d3-7c-8f-ab-a3-7c-8f-ab-a3-7c-8f-a9-ce-6e
77-61-73-73-64-25-43-33-25-42-36-25-37-43-25-43-33-25-41-34-25-37-43-25-43-33-25-41-34-25-37-43-25-43-33-25-39-46-6e
test=wassd%C3%B6%7C%C3%A4%7C%C3%A4%7C%C3%9Fn&stage =results
test=wassd%C3%B6%7C%C3%A4%7C%C3%A4%7C%C3%9Fn&stage =results
Wie man sieht kommem die UTF-8 Daten über die HTML Seite wieder richtig zurück in den Apache: $HTTP_RAW_POST_DATA.....
Aber in php sin die Daten verfälscht.
Bei GET Variablen ist die Sache genauso.
Wo ist hier der Wurm drin?
Ich hoffe ich bin verständlich.
Bei der Installation von SugarCRM habe ich festgestellt dass ich keine Umlaute verwenden kann. Alles ab dem Ulaut wird abgeschnitten.
Auf der suche nach dem Fehler bin ich soweit zu behaupten dass es sich um einen Server/Php Configurationsproblem handelt.
Ich poste euch ein Script mit dem ich das Problem verdeutlichen kann. Das seltsame ist, auf meinen Debian System tritt die Sache nicht auf, aber auf dem SLES 10 schon.
PHP-Code:
<?php
function display_form() {
global $PHP_SELF;
?>
<FORM TARGET="<?php echo $PHP_SELF; ?>" METHOD=POST>
test: <INPUT TYPE=TEXT NAME="test" VALUE="wassdö|ä|ä|ßn" accept-charset="utf-8">wassdö|ä|ä|ßn
<INPUT TYPE=HIDDEN NAME="stage" VALUE="results">
<INPUT TYPE=SUBMIT VALUE="Thanks!">
</FORM>
<?php
}
?>
<?php
function process_form() {
global $HTTP_RAW_POST_DATA;
echo "<br>";
echo string2hex("wassdö|ä|ä|ßn");
echo "<br>";
echo string2hex($_POST['test']);
echo "<br>";
echo string2hex(urlencode("wassdö|ä|ä|ßn"));
echo "<br>";
$putdata = fopen( "php://input" , "rb" );
while(!feof( $putdata ))
echo fread($putdata, 4096 );
fclose($putdata);
echo "<br>";
echo $HTTP_RAW_POST_DATA;
}
?>
<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=utf-8" />
</head>
<body>
<?php
if (empty($_POST['test'])) { display_form(); }
else { process_form(); }
?>
</body>
</html>
<?
function string2hex($str)
{
if (trim($str)!="")
{
$hex="";
$length=strlen($str);
for ($i=0; $i<$length; $i++)
{
if ($i>0) $bound="-"; else $bound="";
$hex.=$bound.str_pad(dechex(ord($str[$i])), 2, 0, STR_PAD_LEFT);
}
return $hex;
}
}
?>
Ausgabe auf Debian:
77-61-73-73-64-c3-b6-7c-c3-a4-7c-c3-a4-7c-c3-9f-6e
77-61-73-73-64-c3-b6-7c-c3-a4-7c-c3-a4-7c-c3-9f-6e
77-61-73-73-64-25-43-33-25-42-36-25-37-43-25-43-33-25-41-34-25-37-43-25-43-33-25-41-34-25-37-43-25-43-33-25-39-46-6e
test=wassd%C3%B6%7C%C3%A4%7C%C3%A4%7C%C3%9Fn&stage =results
test=wassd%C3%B6%7C%C3%A4%7C%C3%A4%7C%C3%9Fn&stage =results
Ausgabe auf Suse:
77-61-73-73-64-c3-b6-7c-c3-a4-7c-c3-a4-7c-c3-9f-6e
77-61-73-73-64-8f-ab-d3-7c-8f-ab-a3-7c-8f-ab-a3-7c-8f-a9-ce-6e
77-61-73-73-64-25-43-33-25-42-36-25-37-43-25-43-33-25-41-34-25-37-43-25-43-33-25-41-34-25-37-43-25-43-33-25-39-46-6e
test=wassd%C3%B6%7C%C3%A4%7C%C3%A4%7C%C3%9Fn&stage =results
test=wassd%C3%B6%7C%C3%A4%7C%C3%A4%7C%C3%9Fn&stage =results
Wie man sieht kommem die UTF-8 Daten über die HTML Seite wieder richtig zurück in den Apache: $HTTP_RAW_POST_DATA.....
Aber in php sin die Daten verfälscht.
Bei GET Variablen ist die Sache genauso.
Wo ist hier der Wurm drin?
Ich hoffe ich bin verständlich.
Kommentar