ど素人から毛を生やす。<延>

MySQL-PHP-HTML の文字列保存・表示備忘録

Web > PHP 2020年4月24日(最終更新:28日前)

どもです。
textareaやinputで自由入力できるようにすると、クォーテーションや特定のhtmlタグを入れたときに、処理や表示がバグったり、クロスサイトスクリプティングの被害に遭ったりします。
回避のための処理をいちいち調べるのも面倒なので、備忘的にまとめておくことにします。

PHP←→MySQL

//PHP→MySQL
//文字列をMySQL用にエスケープ
mysqli_real_escape_string($mysqli_connect, $string);
//PHP5以下
mysql_real_escape_string($string);
//text型の場合、バイト超過分は切り捨てずエラーになるので
mb_strcut(mysql_real_escape_string($string, 0, 65535, 'UTF-8');

//MySQL→PHP
//エスケープした文字列を戻す これをやらないと一部のクォーテーションがエスケープされたままになる
stripslashes($string);

PHP→HTML

//タグ等を含んだ文字列をtextarea(input)用にエスケープ
htmlspecialchars($stripslashes_string);
//htmlspecialchars(stripslashes($string));

//textareaで入力した文字列を入力欄外に出力(エスケープ後に改行コードを改行タグに変換)
nl2br(htmlspecialchars($stripslashes_string));
//nl2br(htmlspecialchars(stripslashes($string));
この記事は役に立ちましたか?
  • _(:3」∠)_ 面白かった (0)
  • (・∀・) 参考になった (0)
  • (`・ω・´) 役に立った (0)