常識かもしれませんが、ちと引っかかったのでメモ。
ヘッダーのメタタグに下記を入れたページを作成しました。
<meta http-equiv="Content-Type" content="text/html; charset=UTF8">
これが IE8 だと見事に文字化けしました><;
Content-Type で文字セットしてしているのになんでだ!?スペルミス?
さっそくグーグル先生に問い合わせてみるとどうやら UTF-8 が正解だったようです。大文字小文字の区別はないようです。
うむむ、ちと恥ずかしいミスでした…
2012年11月14日水曜日
PHP フォームでアップロードできるファイル数の上限
ちょいとハマったので覚書です。
PHP は CentOS 5.7 の標準である 5.1.6 を使用しています。
フォームに <input type="file" /> を30個ほど並べたところ、$_FILES に20個分しか入っていません???
アップロードできるファイル数に制限があったかなぁと調べてみたのですが見当たりません???
PHP は CentOS 5.7 の標準である 5.1.6 を使用しています。
フォームに <input type="file" /> を30個ほど並べたところ、$_FILES に20個分しか入っていません???
アップロードできるファイル数に制限があったかなぁと調べてみたのですが見当たりません???
名前 | デフォルト | 変更可能 | 変更履歴 |
---|---|---|---|
file_uploads | "1" | PHP_INI_SYSTEM | PHP <= 4.2.3 では PHP_INI_ALL、PHP 4.0.3 以降で利用可能 |
upload_tmp_dir | NULL | PHP_INI_SYSTEM | |
max_input_nesting_level | 64 | PHP_INI_PERDIR | PHP 5.3.9 以降で利用可能。 |
max_input_vars | 1000 | PHP_INI_PERDIR | PHP 5.3.9 以降で利用可能。 |
upload_max_filesize | "2M" | PHP_INI_PERDIR | PHP <= 4.2.3 では PHP_INI_ALL |
max_file_uploads | 20 | PHP_INI_SYSTEM | PHP 5.2.12 以降で利用可能。 |
上記を見ると 5.2.12 以降では php.ini の設定で変えられるようです。
PHP_INI_SYSTEM となっていますので、httpd.conf のバーチャルホスト設定に下記の1行を追加
php_value max_file_uploads 40
アパッチを再起動してみましたが状況が変わりません。
やっぱ、5.1.6 では実装されていないのかな?と思いましたが諦めきれずに php.ini に直接書いてやりました。
アパッチを再起動すると全部取得できるではないですか!?
max_file_uploads は 5.1.6 でも効果はあるが、php.ini に直接書かなければならないということのようです。
2012年5月11日金曜日
SJIS で HTMLPurifier を使う悩み
ひさしぶりの書き込みです^^;
今回管理画面から設定するメッセージにHTMLを使用できるようにしました。
携帯サイトがあるので文字コードは SJIS です。
管理画面からの入力なので、比較的セキュリティは緩くてもいいかなと思ったのですが、何買ったら心配なので HTML Purifier にて、ヤバいタグや属性を除去するように。
ここで困ったのが © や ® などの HTML 特殊文字です。
フォームからはちゃんと © や ® という形で送られてくるのですが HTML Purifier を通すと消えてなくなっている・・・
で調べてみると、HTML Purifier は、© や ® を © や ® に変換してしまうことが判明、また、set( 'Core.Encoding', 'SJIS' ); していると SJIS に変換できない文字は消してしまうようです。
とりあえず、© ® を別のキーワード(全角が安全?)に変換してから purify() してその後に戻してやるというヤクザな方法で逃げました^^;
今回管理画面から設定するメッセージにHTMLを使用できるようにしました。
携帯サイトがあるので文字コードは SJIS です。
管理画面からの入力なので、比較的セキュリティは緩くてもいいかなと思ったのですが、何買ったら心配なので HTML Purifier にて、ヤバいタグや属性を除去するように。
$config = HTMLPurifier_Config::createDefault(); $config->set( 'Core.Encoding', 'SJIS' ); $config->set( 'Core.Language', 'ja' ); $config->set( 'HTML.AllowedElements', $g_aryHTMLPurifierAllowTag ); $objPurifier = new HTMLPurifier( $config ); $str = $objPurifier->purify( $str );
ここで困ったのが © や ® などの HTML 特殊文字です。
フォームからはちゃんと © や ® という形で送られてくるのですが HTML Purifier を通すと消えてなくなっている・・・
で調べてみると、HTML Purifier は、© や ® を © や ® に変換してしまうことが判明、また、set( 'Core.Encoding', 'SJIS' ); していると SJIS に変換できない文字は消してしまうようです。
とりあえず、© ® を別のキーワード(全角が安全?)に変換してから purify() してその後に戻してやるというヤクザな方法で逃げました^^;
登録:
投稿 (Atom)