Ankündigung

Einklappen
Keine Ankündigung bisher.

Umlaut in Submit-Button abfragen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Umlaut in Submit-Button abfragen

    Folgendes Problem:

    formular.php:

    (...)
    <form name="Formular" action="bearbeiten.php" method="post">
    (...)
    <input name="knopf" type="submit" value="&Auml;ndern">
    <input name="knopf" type="submit" value="L&ouml;schen">
    </form>
    (...)

    bearbeiten.php:

    (...)
    $knopf = $_POST['knopf'];
    if ($knopf == "Ändern")
    { echo "&Auml;ndern mit Umlaut"; }
    else if ($knopf == "&Auml;ndern")
    { echo "&Auml;ndern mit HTML-Charakter"; }
    else
    { echo "Knopf-Value: ".$knopf; }
    (...)

    Wenn ich im Formular auf den "Ändern"-Knopf klicke, dann lande ich im Auswerte-Skript weder im ersten noch im zweiten IF-Zweig, sondern im letzten ELSE-Zweig. Der dann im Browser angezeigte Value der Variable $knopf ist aber "Ändern". Wenn ich mir den Quelltext anzeigen lasse, steht dort ein Ä, kein &Auml;. Aber ich weiß nicht, welche Kodierung angewendet wird. Offensichtlich ist das angezeigte Ä ein anderes Zeichen als das Ä, mit dem ich den String im ersten IF-Zweig vergleiche.

    Ich hab beide PHP-Dateien als UTF-8 gespeichert und jeweils im Header die Angabe
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    untergebracht.

    Mein Webhoster hat kürzlich auf UTF-8 umgestellt.

    Vorher hat mein Skript funktioniert. Da hatte ich mir keinerlei Gedanken über die Kodierung gemacht, sondern es hat einfach so geklappt. Da hatte ich noch keine meta-Angabe im Header, und der Vergleich $knopf=="Ändern" ergab ein true.

    Jetzt aber bin ich ratlos, wie ich überhaupt nur rauskriegen kann, welche Kodierung an welcher Stelle verwendet wird. Wie kann ich die Strings denn noch vergleichen, bzw. wie finde ich heraus, "welche Art von Ä" mir vom einen ans andere Skript übergeben wird?

  • #2
    Bitte für PHP Code die PHP Tags hier im Forum verwenden.

    wie finde ich heraus, "welche Art von Ä" mir vom einen ans andere Skript übergeben wird?
    Dann... debugge.. schau was im POST tatsächlich ankommt.. var_dump(), print_r() sind deine Freunde.

    http://php-de.github.io/jumpto/leitfaden/

    http://php-de.github.io/#form
    The string "()()" is not palindrom but the String "())(" is.

    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

    Kommentar


    • #3
      Setzt das Encoding vernünftig dann kannst du dir HTML-Entities sparen und das "normal" auslesen.
      [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

      Kommentar

      Lädt...
      X