[PHP] Sonderzeichen Problem

Dieses Thema im Forum "Webentwicklung" wurde erstellt von eVeReSt, 10. November 2007 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 10. November 2007
    Sonderzeichen Problem

    Hallo,

    Ich habe vor kurzem ein normales PHP Formular gecodet. Eigentlich auch alles gut, nur werden bei mir die Sonderzeichen völlig falsch angezeigt. Bevor ihr mich gleich an Google weiterweist, kann ich euch saagen, dass ich es schon probiert habe. Und zwar bin ich auf eine funktion "utf8_decode()" gestossen. Die funktioniert eigentlich auch einigermassen, aber eben nur einigermassen, da bei Microsoft Outlook der Betreff falsch angezeigt wird (Bsp. äöü = äöü), dafür aber der Text korrekt (also alles "normale" Zeichen). Bei Outlook Express ist das genau umgekehrt.

    Nun meine Frage: gibt es alternativen? Alles was ich bisher gefunden habe ist das, also ein Array, welches meinen Text nach Sonderzeichen durchsucht und ersetzt. Jedoch weiss ich nicht wie ich das einbauen kann. ;(

    Ich geb hier gleich noch den Quelltext preis:

    kontakt.php

    HTML:
    <table width="580" height="449" border="0" align="left" cellpadding="0" cellspacing="0">
     <tr>
     <td width="18" rowspan="3">&nbsp;</td>
     <td width="562" height="7"><h2>Kontaktformular</h2></td>
     </tr>
     <tr>
     <td height="7"><br />Keine Verlängerung oder Reservierung möglich!<br /><br /></td>
     </tr>
     <tr>
     <td height="385">
     <form action="auswertung.php" method="post">
     <table width="562" height="385" border="0" cellpadding="0" cellspacing="0">
     <tr>
     <td width="247" height="22" valign="top">Name:</td>
     <td width="315"><input name="name" type="text" class="kontaktfelder" border="0"/></td>
     </tr>
     <tr>
     <td height="22" valign="top">Vorname:</td>
     <td width="315"><input name="vorname" type="text" class="kontaktfelder" border="0"/></td>
     </tr>
     <tr>
     <td height="22" valign="top">E-Mail:</td>
     <td width="315"><input name="email" type="text" class="kontaktfelder" border="0"/></td>
     </tr>
     <tr>
     <td height="22" valign="top">An:</td>
     <td width="315">
     <select name="an" size="1" class="kontaktfelder" border="0" >
     <option value="a" selected="selected">--</option>
     <option value="b">Webmaster</option>
     </select> </td>
     </tr>
     <tr>
     <td height="22" valign="top">Betreff:</td>
     <td width="315"><input name="betreff" type="text" class="kontaktfelder" border="0"/></td>
     </tr>
     <tr>
     <td height="83" valign="top">Text:</td>
     <td width="315" valign="top">
     <textarea name="text" cols="45" rows="5" class="kontaktfelder"></textarea> </td>
     </tr>
     <tr>
     <td><br />Eine Kopie an mich senden:</td>
     <td width="315"><br />
     <input name="kopie" type="checkbox" /></td>
     </tr>
    
     <tr>
     <td></td>
     <td rowspan="2"></td>
     </tr>
     <tr>
     <td></td>
     </tr>
     <tr>
     <td height="41"><br /><img src="captcha.php" alt="Sicherheitscode" title="Sicherheitscode" width="80" height="25" /></td>
     <td> <label for="sicherheitscode"></label>
     <br /> 
     <input name="sicherheitscode" type="text" class="kontaktfelder" id="sicherheitscode" size="8" /> </td>
     </tr>
     <tr>
     <td height="16"><span class="organigramm">Den Code bitte ins Feld eingeben<br />
     </span></td>
     <td>&nbsp;</td>
     </tr>
     <tr>
     <td></td>
     <td> 
     <br /> 
     <input name="senden" type="submit" class="kontaktbutton" value="Senden" />
     <input name="löschen" type="reset" class="kontaktbutton" value="Löschen" /></td>
     </tr>
     </table>
     </form> </td>
     </tr>
    </table>
    auswertung.php

    PHP:
    <? php

    $fehler 
    "" ;
    $admin  "uzzj" ;
    $nz  chr ( 13 ). chr ( 10 );
    $ab  chr ( 32 );
    $name  $_POST [ 'name' ];
    $vorname  $_POST [ 'vorname' ];
    $email  $_POST [ 'email' ];
    $beitrag  $_POST [ 'text' ];
    $betreff  $_POST [ 'betreff' ];
    $internetprotocol  $_SERVER [ 'REMOTE_ADDR' ];
    $betreffkorr  utf8_decode ( $betreff );
    $beitragkorr  utf8_decode ( $beitrag );
    $kopie  $_POST [ 'kopie' ];


       
    $mail  $email ;
    };


    $wer = $_POST [ 'an' ];

    switch(
    $wer ) {
     case
    "a" :
     
    $an  "sfddsf" ;
     break;
     case
    "b" :
     
    $an  "adsf" ;
     break;
     default:
     
    $an  " $admin " ;
     };

    if (empty(
    $name ))  $fehler  .=  "<li>Der Name fehlt</li>" ;
    if (empty(
    $vorname ))  $fehler  .=  "<li>Der Vorname fehlt</li>" ;
    if (empty(
    $email ))  $fehler  .=  "<li>Die Emailadresse fehlt</li>" ;
    if (empty(
    $betreff ))  $fehler  .= "<li>Der Betreff fehlt</li>" ;
    if (empty(
    $beitrag ))  $fehler  .= "<li>Der Text fehlt</li>" ;

    session_start ();
    if (isset( 
    $_POST [ 'senden' ] ))
    {
        if (
    md5 ( strtoupper $_POST [ 'sicherheitscode' ] )) !=  $_SESSION [ 'captcha_code' ])
        {
            
    $fehler  .= "<li>Der Sicherheitscode fehlt oder ist falsch</li>" ;
        }

    }
    if (empty(
    $fehler )) {
                 

      
    $betreff1  "Betreff:  $betreffkorr " . $nz ;
      
    $betreff2  "Kopie von:  $betreffkorr " . $nz ;
      
    $from  "From:  $vorname   $name  via Kontaktformular < $email >" ;
      
    $from2  "From: Ludothek Langnau am Albis" ;
      
    $datum  "Datum: " . date ( "j.n.Y" ). $nz ;
      
    $zeit  "Zeit:  " . date ( "H:i" ). $nz ;
      
    $von  "Von:   " . $vorname . " " . $name . " <" . $email . ">" ;
      
    $von2  "Von:   " . $vorname . " " . $name . " <" . $email . ">" . $nz ;
      
    $linie  "-------------------" . $nz ;
      
    $ip  = "<" . $internetprotocol . ">" . $nz ;
      
    $text  $datum . $zeit . $von . $ab . $ip . $linie . $betreff1 . $linie . $beitragkorr ;
      
    $text2  $datum . $zeit . $von2 . $linie . $betreff1 . $linie . $beitrag ;
      
    $titel  "Ihre Nachricht wurde versandt" ;
      
    mail ( $an , $betreff , $text , $from );
      
    mail ( $mail , $betreff2 , $text2 , $from2 );


    ?> 

    <html>

    <head>
    <link rel="stylesheet" type="text/css" href="../style_sheet_frames.css" />
    </head>

    <body>
    <br />
    <br />
    <?
    if (empty( $fehler )) {
      
    $text  strip_tags ( $text );
      
    $text  htmlentities ( $text );
      
    $text  str_replace ( $nz , "<br>" , $text );
      echo 
    "<p>Ihre Nachricht wurde verschickt.</p>" ;
      echo 
    "<p> $text </p>" ;
    } else {
      echo 
    "<p>Ihre Nachricht konnte nicht versandt werden, weil" ;
      echo 
    "<ul> $fehler </ul>" ;
      echo 
    "</p>" ;
    }
    ?>


    </body>

    </html>
     
  2. 10. November 2007
    AW: Sonderzeichen Problem

    stichwort utf8_decode
     
  3. 10. November 2007
    AW: Sonderzeichen Problem

    Danke, aber wie du vielleicht in meinem Beitrag gelesen hast, habe ich diese funktion schon benutzt. Ist übrigens auch in der auswertung eingebaut .
     
  4. 10. November 2007
    AW: Sonderzeichen Problem

    ja, uft8_decode macht dir aus den komischen zeichen wieder äöü. outlook kennt evt die zeichen nicht, deswegen kannst du entweder diese sonderzeichen duch ae oe und ue erstetzten oder versuch htmlentities in der email (vergiss aber dann die header nicht).
     
  5. 10. November 2007
    AW: Sonderzeichen Problem

    Probiers mal hiermit HTML Zeichenkodierung

    greez 6000Loader
     
  6. 10. November 2007
    AW: Sonderzeichen Problem

    Nun, ich habe utf8_decode(), durch htmlentites ersetzt, und das einzige was passiert ist, ist dass der Text nun statt aus normalen aus HTML ä's ö's und ü's besteht (natürlich die anderen Sonderzeichen auch, äöü ist nur ein Beispiel), also mit anderen Worten es hat sich nix verändert (Titel ist immer noch der gleiche shit) ...

    €dit: @6000 Loader, habe die Funktion in den Header eingebaut (<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />) hilft jedoch nicht.

    Immer noch das genau gleiche Problem...
     
  7. 10. November 2007
    AW: Sonderzeichen Problem

    $test = htmlentities(utf8_decode('äöü')); //sollte &auml;&ouml; und &uuml; bei rauskommen
     
  8. 10. November 2007
    AW: Sonderzeichen Problem

    Hab den Fehler gerade gefunden! War ein kleiner Überlegungsfehler im Code. Trozdem danke vorallem an Murdoc-4D (ps. Edge rockt wirklich )!

    Closed!
     
  9. 10. November 2007
    AW: Sonderzeichen Problem

    und ich sagte, vergiss die header nicht bei html-mails infos24 PHP -Mail versenden mit PHP

    den betreff musste auch noch so bearbeiten.
     
  10. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.