Moin!
<?php
echo "<pre>\r\n";
echo htmlspecialchars(print_r($_POST, ENT_QUOTES));
echo "</pre>\r\n";
?>
print_r ist genauso eine Funktion wie echo.
Das bedeutet: print_r hat keinen wirklichen Rückgabewert, den du in htmlspecialchars() reintun könntest, der dann escaped wird.
Ausgeführt würde also sowas:
<?php
echo "<pre>\r\n";
print_r($_POST);
echo htmlspecialchars('');
echo "</pre>\r\n";
?>
Ok, jetzt hast du den Parameter ENT_QUOTES fälschlich in print_r reingetan, anstatt ihn in htmlspecialchars() zu verwenden. der zweite Parameter von print_r sorgt dafür, dass diese Funktion eben doch keine direkte Ausgabe macht, wenn dieser Parameter "true" ergibt. ENT_QUOTES ist eine Konstante, die zu "true" evaluiert.
Deshalb kriegst du als Resultat dann eher sowas:
<?php
echo "<pre>\r\n";
echo htmlspecialchars('...der String aus print_r');
echo "</pre>\r\n";
?>
Hier ist von der Wirkung von ENT_QUOTES aber eben nichts zu sehen.
Ist das beim POST Array normal oder mache ich etwas falsch?
Du machst was falsch. Deine beiden Fehler heben sich aber so gegenseitig gegeneinander auf, dass am Ende etwas halbrichtiges rauskommt, und kein kompletter Fail.
- Sven Rautenberg