Umlaute und Sonderzeichen nach Übergabe fehlerhaft

deusfalsus

Erfahrenes Mitglied
Salvete!

Ich übergebe den Warenkorbinhalt meines kleinen Shops folgendermaßen per javascript:
PHP:
bf = window.open('bg.html','bestell','top=100,left=200,width=480,height=600','menubar=no' );
   with(bf.document)
    {
     open();
     write("<head><title>bestellmich</title></head><body bgcolor='#000000' text='#FFFFFF'>");
     writeln("<br><form name='bff' action='bestell.php' method='POST'>"); 
    }
   x=korb.length-1;
   for (i=1; i<=x; i++)
   {
    bf.document.write("<input type='hidden' name='bestellung[]' value='"+korb[i][1]+" "+korb[i][0]+"'>");
   }
   bf.document.write("</form><br><script language='JavaScript' type='text/JavaScript'>bff.submit();</script></body></html>");
   bf.document.close();

Im anschließenden php-script lasse ich die Bestellung nochmal Ausgeben:
PHP:
foreach ($_POST['bestellung'] as $pos)
 {
  echo $pos."<br>";
 }

Dabei werden jedoch Umlaute und Sonderzeichen fehlerhaft dargestellt.
Am besten mal hier klicken um die Seite anzuschauen
Am Ende soll das ganze in http://www.honeytoast.net eingebettet werden.
 
In anbetracht der Tatsache, dass es ansonsten auch so ging dachte ich, das wäre egal. Habs trotzdem mal geändert - geht aber trotzdem nicht. :(
 
Mal so am Rande. Ich denke nicht, dass es sich hierbei um ein PHP Problem handelt, da du PHP erst in der Auswertung nutzt.
Es ist aber davon auszugehen, dass die Umlaute u.Ä. bereits falsch übergeben werden.

Deshalb verschiebe ich den ganzen Thread mal ins Javascript Forum und belasse hier im PHP Forum einen Querverweis.

Wer anderer Meinung ist, der möge mich via PN anflamen :)
 
Die Umwandlung der Umlaute hilft da auch nicht weiter,dann hast du wieder neue Zeichen(Ampersand)....welche Probleme verursachen.

escape() die Werte deiner bestellung[]-Felder,bevor du sie in die Seite schreibst:
Code:
bf.document.write("<input type='hidden' name='bestellung[]' value='"+escape(korb[i][1]+' '+korb[i][0])+"'>");
bei der Ausgabe in PHP musst du die Sache dann mit rawurldecode() wieder umdrehen:
PHP:
foreach ($_POST['bestellung'] as $pos)
 {
  echo rawurldecode($pos)."#<br>";
 }

BTW:Wenn du Hilfe möchtest,wäre es netter ,wenn du vorher die "oncontextmenu"-Spielereien entfernst,das macht den Blick in den Quellcode etwas einfacher ;)
 

Neue Beiträge

Zurück