テキストボックスにはhtmlspecialcharsにて変換された文字列が表示されていると思います。例えば&ampです。
valueに&ampを入れるとテキストボックスには&と表示されます
簡単な例を作りましたので確認してみてください
<html> <body> <form method="get"> <input type="text" name="input1" size="30" value="<a>"><br /> <input type="text" name="input2" size="30" value="&"><br /> <input type="submit" /> </form> </body> </html>
再度保存するときは特に何もしなくてもセキュリティ的には問題ないのでしょうか
クライアントで何が行われているかはわからないのでバリデーションは常に必要です
保存する前にはhtmlspecialchars_decodeで変換を戻してから保存し、表示する時にまたhtmlspecialcharsにて変換するべきなのでしょうか
valueに&ampを入れるとテキストボックスには&と表示されて&が送信されます
<>’”なども同様です
上に書いたフォームをsubmitしてみるとアドレス欄に結果が現れるので確認してみてください
保存前のhtmlspecialchars_decodeは不要で、表示する時にまたhtmlspecialcharsが必要なことがわかるはずです