MySQLデータベースにデータを挿入するフォームを作成しました。これがフォームフィールドです。これらは一部ですが、ここではフォーム<form>
全体を表示していません。問題を引き起こしているフィールドだけを表示しています。
<tr> <td>Top 728x90 As</td><td><textarea name='topad'><?=$r['topad']?></textarea></td</tr>
<tr> <td>Sidebar 250x250 Ad</td><td><textarea name='sidebarad'><?=$r['sidebarad']?></textarea></td></tr>
コードのこの部分は、入力を処理してデータベースに挿入します。
if(isset($_POST['submit'])) {
$topad = $_POST['topad'];
$sidebarad = $_POST['sidebarad'];
$update = $connection->prepare("UPDATE site SET topad = '$topad' , sidebarad = '$sidebarad' WHERE id=1");
$update->execute(array());
}
このコードの問題は、<a href="#">
&</a>
コードを含むデータの一部を受け入れ/処理していないことです。これは、HTML文字をエスケープすることではありません。これは<img>
、などの他のすべてのHTMLタグがそのまま表示されるためです。これは、私が望んでいることです。
したがって、挿入して<a>
タグを付けると、データベースに挿入されたり、送信ボタンを押した後にフォームに表示されたりすることなく、消えてしまいます。
更新:リンクが二重引用符を使用して挿入されると、受け入れられます。一重引用符を使用すると、処理されません。たとえば<a href="someurl">
、DBで受け入れられますが、受け入れられ<a href='someurl'>
ません。
なぜこのエラーが発生するのですか?