[Problem - PHP] Gästebuch Umlaute

09/26/2012 18:37 CrunkSoft.de#1
Hey Community,

ich habe ein Gästebuch aus dem Internet geladen.

Codes:

Index.php:

PHP Code:
<html>
<head>
<title>Gästebuch</title>
</head>
<style type="text/css">
/* Hintergrund
   --------------------------------- */    
body {
background-color: #c8d0db;
}
/* allgemeine Linkfarbe und Größe
   --------------------------------- */    
a:link    {color: #0000CC; font: 13px arial, sans-serif;}
a:visited {color: #0000CC; font: 13px arial, sans-serif;}  
a:active  {color: #0000CC; font: 13px arial, sans-serif;}  
a:hover   {color: #0000CC; font: 13px arial, sans-serif;text-decoration:none;}
</style>
<body>
<p><img src="gaestebuch.png" alt="Hier können Sie sich in unser Gästebuch eintragen"></img></p>
Hier können Sie einen Beitrag im Gästebuch verfassen<br><br>
<form action="eintrag.php" Method="post">
Ihr Name:<br>
<input name="Name" size="30"><br><br>
E-Mail:<br>
<input name="E-Mail" size="30"><br>
<br><br>
Beitrag:<br>
<textarea name="inhalt" cols="30" rows="6"
wrap="physical"></textarea><br>
<input type="submit" value="Eintragen">
</form>
<hr color="#000080">
<font size="2">
<?php
$beitrag 
file("gbinhalt.txt");
krsort($beitrag);
foreach(
$beitrag as $ausgabe)
   {
   
$ausgabe stripslashes($ausgabe);
   
$zerlegen explode("|"$ausgabe);
   echo 
"<font color=\"#330000\" size=\"2\">
 <hr>
  Eintrag von 
$zerlegen[1]
  geschrieben am 
$zerlegen[2]
   </td>
   </tr>
   <tr>
   <td>
   <br>
   
$zerlegen[3]
   </td>
   </tr>
   </table><br>
   "
;
   }
?>
</font>
</body>
</html>
eintrag.php:

PHP Code:
<html>
<head>
<title>Gästebuch</title>
</head>
<style type="text/css">
/* Hintergrund
   --------------------------------- */    
body {
background-color: #c8d0db;
}
/* allgemeine Linkfarbe und Größe
   --------------------------------- */    
a:link    {color: #0000CC; font: 13px arial, sans-serif;}
a:visited {color: #0000CC; font: 13px arial, sans-serif;}  
a:active  {color: #0000CC; font: 13px arial, sans-serif;}  
a:hover   {color: #0000CC; font: 13px arial, sans-serif;text-decoration:none;}
</style>
<body>
<?php
$user 
$_POST["Name"];
$user htmlentities($user);
$inhalt $_POST["inhalt"];
$inhalt htmlentities($inhalt);
$inhalt str_replace("\n""<br>"$inhalt);
$email $_POST["EMail"];
$email htmlentities($email);
if (
$inhalt == "" or $user == "")
   {
   echo 
"Bitte füllen Sie das Feld \"Namen\"
   und \"Inhalt\" aus"
;
   }
else
   {
   
$datumdate("d.m.Y H:i:s");

   
$eintrag="$email|$user|$datum|$inhalt";

   
$datei fopen("gbinhalt.txt""a");
   
fwrite($datei"\n".$eintrag);
   
fclose($datei);
   echo 
"Ihr Eintrag wurde in das Gästebuch eingetragen. Ihre eMail-Adresse 
wird NICHT angezeigt."
;
   }
?>
<br>
<a href="gaestebuch.php">Zurück zum Gästebuch</a>
</body>
</html>
gbinhalt.txt:

PHP Code:
|&Atilde;&para;&Atilde;&curren;&Atilde;&frac14;|26.09.2012 18:32:20|&Atilde;&para;&Atilde;&curren;&Atilde;&frac14
Problem: Alle Umlaute werden immer als Sysmbole etc. gespeichert (siehe gbinhalt.txt), obwohl alle FOrmulare UTF-8 Kodiert sind.

Wie schaffe ich es, dass die Umlaute richtig angezeigt werden?

Mit Hoffnung auf Hilfe,
Ich :P
09/26/2012 19:38 Ende!#2
[Only registered and activated users can see links. Click Here To Register...]

Umlaute durch die jeweiligen HTML-Repräsentation ersetzen.

[Only registered and activated users can see links. Click Here To Register...]
Hier wäre der Thread übrigens besser aufgehoben gewesen.
09/27/2012 19:24 CrunkSoft.de#3
Hallo,

ich möchte nicht bei jedem einzelnen Beitrag die Umlaute manuell ändern müssen.

Geht das nicht auch anders?

Edit: Ich bitte Dich, meinen Thread zu moven.
09/27/2012 21:14 NotEnoughForYou#4
mittels PHP die Umlaute vor dem Speichern ändern.
09/27/2012 21:45 CrunkSoft.de#5
Wie Du vielleicht festgestellt hast, bin ich mit php nicht so erfahren ... Daher erhoffte ich mir eine mehr, nennen wir es "coderische" Antwort, im Sinne von Codes, die mir dabei helfen.
09/27/2012 22:22 NotEnoughForYou#6
PHP Code:
<?php
$ausgabe 
"Ein Text mit äußerst vielen Umlauten";
$umlaute = array(/ä/,/ö/,/ü/,/Ä/,/Ö/,/Ü/,/ß/);
$replace = array(”ä”,”ö”,”ü”,&Auml;,&Ouml;,&Uuml;,&szlig;);
$ausgabe preg_replace($umlaute $replace $ausgabe);

echo 
$ausgabe;
?>
09/27/2012 22:40 CrunkSoft.de#7
Schonmal Danke für den Code, aber wie bau ich den nun genau in mein Gästebuch ein, bzw. wo genau muss der hin?
09/27/2012 22:46 NotEnoughForYou#8
einfach $ausgabe durch dein $eintrag ersetzen und es zwischen die deklarierung von $eintrag und dem fwrite setzen (und natürlich die ausgabe rauskicken)
09/28/2012 16:09 CrunkSoft.de#9
Habe es wie gesagt eingesetzt.

Bei Eintrag meldet es nun:

Parse error: syntax error, unexpected ';', expecting ')' in /mnt/webk/a3/03/5228103/htdocs/neu/eintrag.php on line 38

Line 38:

$replace = array(”ä”,”ö”,”ü”,”&Auml;”,”&Ouml;”,”&Uuml;”,”&szl ig;”);

PHP Code:
<html> 
<head> 
<title>Gästebuch</title> 
</head> 
<style type="text/css"> 
/* Hintergrund 
   --------------------------------- */     
body { 
background-color: #c8d0db; 

/* allgemeine Linkfarbe und Größe 
   --------------------------------- */     
a:link    {color: #0000CC; font: 13px arial, sans-serif;} 
a:visited {color: #0000CC; font: 13px arial, sans-serif;}   
a:active  {color: #0000CC; font: 13px arial, sans-serif;}   
a:hover   {color: #0000CC; font: 13px arial, sans-serif;text-decoration:none;} 
</style> 
<body> 
<?php 
$user 
$_POST["Name"]; 
$user htmlentities($user); 
$inhalt $_POST["inhalt"]; 
$inhalt htmlentities($inhalt); 
$inhalt str_replace("\n""<br>"$inhalt); 
$email $_POST["EMail"]; 
$email htmlentities($email); 
if (
$inhalt == "" or $user == ""
   { 
   echo 
"Bitte füllen Sie das Feld \"Namen\" 
   und \"Inhalt\" aus"

   } 
else 
   { 
   
$datumdate("d.m.Y H:i:s"); 

$ausgabe "$email|$user|$datum|$inhalt";  
$umlaute = array(&#8221;/ä/”,”/ö/”,”/ü/”,”/Ä/”,”/Ö/”,”/Ü/”,”/ß/”); 
$replace = array(&#8221;ä”,”ö”,”ü”,”&Auml;”,”&Ouml;”,”&Uuml;”,”&szlig;”); 
$ausgabe preg_replace($umlaute $replace $ausgabe); 

echo 
$ausgabe
   
   
$datei fopen("gbinhalt.txt""a"); 
   
fwrite($datei"\n".$eintrag); 
   
fclose($datei); 
   echo 
"Ihr Eintrag wurde in das Gästebuch eingetragen. Ihre eMail-Adresse  
wird NICHT angezeigt."

   } 
?> 
<br> 
<a href="gaestebuch.php">Zurück zum Gästebuch</a> 
</body> 
</html>
Zeile 37 und 38 sieht so aus:
$umlaute = array(”/ä/”,”/ö/”,”/ü/”,”/Ä/”,”/Ö/”,”/Ü/”,”/ß/”);
$replace = array(”ä”,”ö”,”ü”,”&Auml;”,”&Ouml;”,”&Uuml;”,”&szl ig;”);

Elitepvpers ändert das, keine Ahnung warum ...
09/29/2012 10:16 NotEnoughForYou#10
Ich schreibs dir nacher am pc richtig ... Du hast nen syntag fehler reingebaut
09/29/2012 12:00 MrSm!th#11
#moved
09/29/2012 13:24 djrazr93#12
Übrigens ist gegen einen gescheiten Head mit Contenttype und Charset nix auszusetzen..
09/30/2012 23:02 CrunkSoft.de#13
Quote:
Originally Posted by NotEnoughForYou View Post
Ich schreibs dir nacher am pc richtig ... Du hast nen syntag fehler reingebaut
Ich warte gespannt und Danke im Voraus :)
09/30/2012 23:04 NotEnoughForYou#14
sry heute hats mir nicht mehr gereich, morgen mach ichs dir

#edit
PHP Code:
<html> 
<head> 
<title>Gästebuch</title> 
</head> 
<style type="text/css"> 
/* Hintergrund 
   --------------------------------- */     
body { 
background-color: #c8d0db; 

/* allgemeine Linkfarbe und Größe 
   --------------------------------- */     
a:link    {color: #0000CC; font: 13px arial, sans-serif;} 
a:visited {color: #0000CC; font: 13px arial, sans-serif;}   
a:active  {color: #0000CC; font: 13px arial, sans-serif;}   
a:hover   {color: #0000CC; font: 13px arial, sans-serif;text-decoration:none;} 
</style> 
<body> 
<?php 
$user 
$_POST["Name"]; 
$user htmlentities($user); 
$inhalt $_POST["inhalt"]; 
$inhalt htmlentities($inhalt); 
$inhalt str_replace("\n""<br>"$inhalt); 
$email $_POST["EMail"]; 
$email htmlentities($email); 
if (
$inhalt == "" or $user == ""
   { 
   echo 
"Bitte füllen Sie das Feld \"Namen\" 
   und \"Inhalt\" aus"

   } 
else 
   { 
   
$datumdate("d.m.Y H:i:s"); 

$ausgabe "$email|$user|$datum|$inhalt";  

$umlaute = array("/ä/","/ö/","/ü/","/Ä/","/Ö/","/Ü/","/ß/");
$replace = array("ä","ö","ü","&Auml;","&Ouml;","&Uuml;","&szlig;");
$ausgabe preg_replace($umlaute $replace $ausgabe);  
   
   
$datei fopen("gbinhalt.txt""a"); 
   
fwrite($datei"\n".$ausgabe); 
   
fclose($datei); 
   echo 
"Ihr Eintrag wurde in das Gästebuch eingetragen. Ihre eMail-Adresse  
wird NICHT angezeigt."

   } 
?> 
<br> 
<a href="gaestebuch.php">Zurück zum Gästebuch</a> 
</body> 
</html>
ich habe jetzt nur den Umlauten replacer eingefügt... da ist natürlich noch vieles nicht 1a aber für den anfang zum üben kann man das so lassen.
10/01/2012 22:01 BlackTrader#15
wtf?
why net einfach

$output = htmlentities($input, ENT_QUOTES, "UTF-8"),