Fehler bei ä,ü,ö,ß

d4k4

Erfahrenes Mitglied
hab da mal ne frage:
wenn ich mich bei meinem chat einlogge und als benutzername wörter mit ö,ä,ü oder ß nehme, kommt bei mir folgende fehlermeldung

Serverfehler!
Die Anfrage kann nicht beantwortet werden, da im Server ein interner Fehler aufgetreten ist.
Fehlermeldung:
couldn't create child process: 22: C:/wampp2036/php4/php.exe
Sofern Sie dies für eine Fehlfunktion des Servers halten, informieren Sie bitte den webmaster hierüber.
Error 500
localhost
10/23/02 15:11:44
Apache/2.0.36 (Win32)
 
"Mein Auto springt nicht mehr an, wenn ich den Zundschlüssel umdrehe. Woran liegt das?" :-) SCNR

Wäre also nicht schlecht, wenn du ein bisschen mehr Informationen liefern würdest. Am besten Quellcode.
 
PHP:
<?
//Zeit überprüfen
$fcontent = file ("online.txt");
$anz = count($fcontent);
$delete = time() - 600;
for ($i = 0; $i <= $anz-1; $i++) {
$fcontent[$i] = str_replace ("\n", "", $fcontent[$i]);
$zeile = explode("#",$fcontent[$i]);
if( $zeile[1] <= $delete ){
	$fcontent[$i]="";}}
	
//Erneute Abfrage um aus Schleife rauszukommen
if( $zeile[1] <= $delete ){

//löschen aus online.txt
$fcontent = file ("online.txt");
$anz = count($fcontent);
for ($i = 0; $i <= $anz-1; $i++) {
$fcontent[$i] = str_replace ("\n","", $fcontent[$i]);
$zeile = explode("#",$fcontent[$i]);
if($zeile[0] == $name){$fcontent[$i] = "";}}
  $fp = fopen ("online.txt", "w"); 
  flock( $fp, LOCK_EX );
  for ($i = 0; $i <= $anz-1; $i++) {fputs ($fp, "$fcontent[$i]\n");}
  flock( $fp, LOCK_UN );
  fclose($fp);
  
//Cookie / header
setcookie("user", "$name", time() - 12000);
;}
$fp = fopen ("online.txt", "w"); 
for ($i = 0; $i <= $anz-1; $i++){fputs ($fp, "$fcontent[$i]\n");}
fclose($fp);     

if(isset($name)){
$fcontent = file ("online.txt");
$anz = count($fcontent);
for ($i = 0; $i <= $anz-1; $i++) {
$fcontent[$i] = str_replace ("\n", "", $fcontent[$i]);
$zeile = explode("#",$fcontent[$i]);
if($zeile[0] == $name){
echo "<center><br>Dieser Name wird bereit verwendet!";
$hit = 1;}}
if($hit!=1){
	$farbe = $Liste[0]; 
	setcookie("log","$name",time()+3600);
	header("Location:chat2.php?name=$name&farbe=$farbe");
}}

?>

<HTML>
<HEAD>
<TITLE>Chat Box</TITLE> 
<style type="text/css"> 
A:link  {text-decoration:none;  color: #000000; } 
A:visited {text-decoration:none; color: #000000; } 
A:hover {color: #000000;  text-decoration: none; } 
</style> 
 </HEAD>
 <body>
 <center>
 <font size="2" face="Verdana" color="#000000">
 <form method="get" action="<? $PHP_SELF ?>">
Name <input name="name" type="text" class=textfeld size="20" maxlength="20">
Schriftfarbe <select name="Liste[]">
    <option value="black">schwarz</option>
    <option value="red">rot</option>
    <option value="yellow">gelb</option>
    <option value="green">gr&uuml;n</option>
    <option value="blue">blau</option>
    <option value="brown">braun</option>
  </select><br><br>
<input type="submit" value="Chat betreten" class=button>
<input type="hidden" name="enter">
</form>	
<center>
<BODY  bgcolor="#FFFFFF" border="0" bgproperties="fixed"><center><table width="135>
<font face="Geneva,Verdana,Arial,Helvetica,Geneva" style="font-size:9px;">
<font size="1" face="Verdana" color="#000000">User online : 
<?
$fp = fopen("online.txt","r");
while(!feof($fp))
{
$zeile = fgets($fp,10000);
    $zeile = eregi_replace("#[0-9]*#*[a-z]*#","", $zeile);
echo "$zeile";
}
fclose($fp);
?>
</table>
</body>
</html>
bittschön :)
 
Wenn ich nach einem kurzen Blick nicht ganz falsch liege übergibt das script beim einloggen den namen über die url.
also folgende Zeile:

header("Location:chat2.php?name=$name&farbe=$farbe");

über die URL kann man keine Sonderzeichen (also auch Umlaute) übertragen, die müssen URL-encoded werden.

du wirst sicher schon mal gesehen haben, das in der url leerzeichen mit %20 dargestellt werden.

in php gibt es daher urlencode() und urldecode()

siehe Referenz:
http://www.php.net/manual/en/function.urlencode.php

also, bevor die variable an die url weitergegeben wird urlencode() und bevor sie verifiziert wird urldecode().

jetzt sollte es laufen!
 
Zurück