heinetz: magic quotes

Hallo Forum,

ich habe folgendes Problem mit magic quotes:

<input type="text" name="values['test']">

... ist nach dem Abschicken des Post-Forms unter php als:

$_POST['values']['test']

... vorhanden. Klar, ich könnte eine für diesen Fall spezielle
Lösung bauen aber wie sieht eine vernünftige allgemeongültige
aus ?

die magic quotes über ini_set() abschalten und die per POST
verschickten Daten mit mysql_real_escape maskieren?

danke für Tipps und

beste gruesse,
heinetz

  1. Hallo,

    values[test]?

    Gruß

    jobo

    1. values[test]?

      is richtich ;)

      danke,
      heinetz

  2. Hi!

    <input type="text" name="values['test']">
    ... ist nach dem Abschicken des Post-Forms unter php als:
    $_POST['values']['test']

    In Wirklichkeit ist es $_POST["values"]["'test'"]. Nicht nur die Werte (Inhalt des value-Attributes und textarea-Inhalts) sondern auch die name-Attribute werden von Magic Quotes behandelt. Solange ein generelles Abschalten nicht möglich ist, hilft nur ein händisches Rückgängigmachen. Die dortige Funktion berücksichtigt aber nicht die Slashes in den Keys, was ich als Userkommentar bemerkte. Da der Key eines Arrayelements nicht geändert werden kann, hilft nur ein Löschen und Neuschreiben.

    ... vorhanden. Klar, ich könnte eine für diesen Fall spezielle Lösung bauen aber wie sieht eine vernünftige allgemeongültige aus ?

    Die Frage ist: Wozu brauchst du die Magic Quotes? Nebenfrage: Brauchst du wirklich die '' um test, oder war das nur ein Versehen?

    Wenn du um die Existenz des MQ-Features weißt, so vermutlich, weil du über die damit verbundenen Probleme gestolpert bist. Diese Probleme lassen sich vernünftig nur lösen, indem man es komplett abschaltet, was "demnächst" auch generell passieren wird (PHP 6).

    die magic quotes über ini_set() abschalten und die per POST verschickten Daten mit mysql_real_escape maskieren?

    ini_set() ist zu spät für das MQ-Abschalten, denn das Feature arbeitet vor dem Script-Start, ini_set() erst danach. mysql_real_escape_string() ist auch kein genereller Ersatz für Magic Quotes. Vielmehr solltest du dein Augenmerk auf die für den jeweiligen Kontext gültige Behandlung legen. Und das nicht nur für deine Script-Eingabewerte sondern für alle Ausgaben.

    Lo!