BigPeter: Session Variablen verliert Umlaute bei Seitenwechsel (eMail)

Abend allerseits :)

Ich habe ein kleines Problem mit Session Variablen. Und zwar verlieren diese Ihre Umlaute sobald ich auf eine andere Seite via FORM weiterleite.

Um es zu konkretisieren :

Ich habe die Session Variable
$_SESSION['ort'] die gefüllt ist mit dem String "Köln".
Nun gehe ich via Submit Button über ein Form auf eine andere PHP Seite ... die folgendes macht :

<?php  
# Session starten  
  session_start ();  
# POST & GET in SESSION übergeben  
  foreach($_POST as $k=>$v) {  
    $_SESSION[$k]=$v;  
  }  
  foreach($_GET as $j=>$w) {  
    $_SESSION[$j]=$w;  
  }  
# Zur eMail Weiterleitung  
  if (isset($_SESSION['xyz']) && $_SESSION['p6'] == "1") {  
    header("Location: sendemail.php5"); exit;  
  }  
  else {  
    header("Location: index.php5"); exit;  
  }  
  
?>

Wenn ich die Session Variable nun auf der sendmail.php5 mit einem ECHO ausgeben lasse hat diese jedoch nicht mehr den Inhalt "Köln" sondern "Köln".

Liegt das daran weil die sendmail.php5 keinen HEADER-Bereich hat?
Nun geht es mir aber nicht um die Ausgabe sondern um die eMail-Funktion die auf dieser Seite (wie schon erwartet) stattfindet.
In der eMail kommt nämlich auch "Köln" statt "Köln" an.
Ich dachte dies könnte nicht der Fall sein da ich folgenden Header in der eMail gesetzt habe :

# Header  
$header  = "MIME-Version: 1.0 \n";  
$header .= "Content-type: text/html; charset=iso-8859-1 \n";  
$header .= "To: ". $_SESSION['rvorname'] ." ". $_SESSION['rnachname'] ." <". $_SESSION['remail'] .">\n";  
$header .= 'From: interAir <info@interAir.de>' . "\n";

Wie kann ich also hinkriegen das Köln in der eMail ankommt ?

Ich hoffe meine Ausdrucksweise war nicht zu kompliziert :)

Grüße

Pete

  1. Hallo,

    Ich habe ein kleines Problem mit Session Variablen. Und zwar verlieren diese Ihre Umlaute sobald ich auf eine andere Seite via FORM weiterleite.

    das ist nicht wahr, wie deine weitere Beschreibung zeigt.

    Zur eMail Weiterleitung

    if (isset($_SESSION['xyz']) && $_SESSION['p6'] == "1") {
        header("Location: sendemail.php5"); exit;
      }
      else {
        header("Location: index.php5"); exit;
      }

    Fehler: Der Location-Header erfordert eine absolute Pfadangabe. Die meisten Browser akzeptieren auch relative Pfadangaben und interpretieren sie halbwegs sinnvoll; falsch ist es trotzdem.

    Wenn ich die Session Variable nun auf der sendmail.php5 mit einem ECHO ausgeben lasse hat diese jedoch nicht mehr den Inhalt "Köln" sondern "Köln".

    Das ist die UTF-8-Darstellung von "Köln", wenn man sie fälschlicherweise wieder in einer ISO-Codierung interpretiert. In welcher Codierung werden die beteiligten Ressourcen ausgeliefert?

    Liegt das daran weil die sendmail.php5 keinen HEADER-Bereich hat?

    Was meinst du damit?

    In der eMail kommt nämlich auch "Köln" statt "Köln" an.

    Also wird auch da die Codierung als ISO-8859-x angegeben, obwohl sie in Wirklichkeit UTF-8 ist.

    $header .= "Content-type: text/html; charset=iso-8859-1 \n";

    Genau, sag ich doch.

    Ciao,
     Martin

    --
    Vielseitigkeit: Von vielen Dingen keine Ahnung haben.
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
  2. Hi!

    Ich habe ein kleines Problem mit Session Variablen. Und zwar verlieren diese Ihre Umlaute sobald ich auf eine andere Seite via FORM weiterleite.

    Bitte beschäftige dich mit dem Thema Zeichenkodierung. Wenn du dir keine Gedanken um a) die Kodierung deiner Daten in einer definierten Kodierung und b) das Mitteilen dieser Kodierung an alle beteiligten Systeme machst, kommt es zu den beschriebenene Effekten, weil manche dann eben was anderes als Default-Wert verwenden.

    Wenn ich die Session Variable nun auf der sendmail.php5 mit einem ECHO ausgeben lasse hat diese jedoch nicht mehr den Inhalt "Köln" sondern "Köln".

    Das ist UTF-8-kodiertes ö.

    Liegt das daran weil die sendmail.php5 keinen HEADER-Bereich hat?

    Wie gesagt, wenn du nichts oder es nicht richtig angibst, nehmen deine beteiligten Systeme einfach irgendwas. Das geht oftmals gut und manchmal eben nicht.

    In der eMail kommt nämlich auch "Köln" statt "Köln" an.
    Ich dachte dies könnte nicht der Fall sein da ich folgenden Header in der eMail gesetzt habe :

    Du kannst auch auf Briefumschläge "200€" schreiben. Genauso wie du dabei nicht erwartest, dass sich davon etwas am Inhalt etwas ändert, darfst du auch bei der Datenübertragung nichts dergleichen erwarten.

    Wie kann ich also hinkriegen das Köln in der eMail ankommt ?

    Mach eine Bestandsaufnahme: Welche Systeme sind an der Datenverarbeitung beteiligt? Können die mit der gewählten Kodierung umgehen? Alternativ reicht es, wenn sie die Daten nur unberührt durchreichen. Wie teilt man dem empfangenden System mit, welche Kodierung man verwendet hat? Zusatzfrage: Was muss man gegebenenfalls als Empfäner tun, um Daten in einer bestimmten Kodierung anzufordern? Wenn dir bei der Beantwortung der Fragen der verlinkte Themenkomplex nicht hilft (ja, er hat noch Lücken), dann frag bitte nochmal konkret nach.

    Lo!