• ベストアンサー

PHP日本語対策

PHP5とpostgreSQLで作成しているWEB登録システムを設計し、開発者に開発してもらっています。 英語のページなので、日本語が入力されるとエラーにしたいと思っております。 しかし、開発者がいうには、PHPでいかなる日本語をはじくチェックをかけても、通りぬけてしまうようです。しかも、こちらで用意しているpostgreSQL環境では、日本語を登録するときにエラーになってしまうとのことです。PHPで文字コードをsjisにしていることが原因といわれてしまいました。 質問は、 PHPでは日本語が入力できないようにすることは不可能なのでしょうか。 また、PHPのdefault charsetをsjisに指定するのは、英語のページを作成するのに不適切なのでしょうか。

noname#14329
noname#14329
  • PHP
  • 回答数2
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

>PHPでいかなる日本語をはじくチェックをかけても、通りぬけてしまうようです。 そんなこと無いんじゃないですかね? 半角英数だけでいいのであれば \x80以上を弾くだけで出来る気がしますが。

その他の回答 (1)

  • tyunji
  • ベストアンサー率19% (68/349)
回答No.2

SJISはコードは逆に楽なはずなのですが。 JISの漢字コードは2byte固定で、1byte目はASCIIで文字に割り当てている部分とは被りませんので、条件分けが楽です。 半角カナは防げませんが、英語でもその部分は他の文字として使用していますので、通さないと逆にまずいです。

関連するQ&A

  • PHPのWeb登録システムの日本語対策

    PHP5とpostgreSQLで作成しているWEB登録システムを設計し、開発者に開発してもらっています。 英語のページなので、日本語が入力されるとエラーにしたいと思っております。 しかし、開発者がいうには、PHPでいかなる日本語をはじくチェックをかけても、通りぬけてしまうようです。しかも、こちらで用意しているpostgreSQL環境では、日本語を登録するときにエラーになってしまうとのことです。PHPで文字コードをsjisにしていることが原因といわれてしまいました。 質問は、 PHPでは日本語が入力できないようにすることは不可能なのでしょうか。 また、PHPのdefault charsetをsjisに指定するのは、英語のページを作成するのに不適切なのでしょうか。

  • phpからMySQLへ日本語insert

    phpプログラムからMySQLへ日本語の入力を行おうとしているのですが、 selectで閲覧してみても、文字化けどころか挿入すらされていませんでした。 コードは以下のような実にシンプルなものです <?php require_once'DB.php'; $username = "****"; $password = "*****"; $host = "localhost"; $database = "udb"; $db = DB::connect("mysql://$username:$password@$host/$database"); //DB接続 if (DB::isError( $db )) { die($db->getMessage()); } $sql = "INSERT INTO comments (lec_code, comment) VALUES (0000, 'ああああ')"; $result = mysql_query($sql); ?> 日本語でなく、英語でinsertした場合は問題なく挿入できました。 また、MySQLから直接SQL文での入力であれば日本語をinsertできたので、設定ミスが問題なのであればMySQLではなくphp側だと思われます。 ちなみに、MySQLの文字設定はsjis、phpの設定は以下のとおりです。 output_buffering Off default_charset "Shift_JIS" extension php_mbstring.dll mbstring.language Japanese mbstring.internal_encoding SJIS mbstring.http_input auto mbstring.http_output SJIS mbstring.encoding_translation On mbstring.detect_order auto mbstring.substitute_character none

    • ベストアンサー
    • PHP
  • postgresqlとmysqlの違い

    こんにちは。 OSはRedhatLinux7.1を使っています。 Apache_1.3.26 php-4.2.1 PostgreSQL-7.2.1 mysql-3.23.52 を使ってWebアプリケーションを作ろうとしています。 Apache+php+PostgreSQLで、 SJISで書いたphpプログラム(htmlのページの表示もSJISに指定)を使って表示されたページからPostgreSQLにデータを登録しようとするとエラーになります。 Warning: pg_exec() query failed: ERROR: Invalid EUC_JP character sequence found (0x8971) となります。 同じようにApache+php+mysqlでやってみたら登録できます。 PostgreSQLはSJISでデータを登録できないのでしょうか? どこをどのようにすればいいのかわかりません。 初歩的で申し訳ありませんがアドバイスお願いします。

  • PHP でMysqlを使用して日本語を登録する。

    すいません、教えて下さい。現在、PHPとMYSQLを連携させてデーターベースを構築中なのですが、日本語が登録できません。mysqlモニタにてinsert 文で登録すると日本語が登録できるのですが、phpを経由すると登録できないのです。phpから、既存のデータベースを呼び出すと日本語のところがすべて文字化けしてしまいます。ちなみにmysqlのmy.iniの設定はsjisにしてあります。ujisにするとmysqlモニタからでも日本語が登録できなくなります。どこの設定がいけないのでしょうか?ちなみにWindows Vista php5.1 mysql 5.1 です。

    • ベストアンサー
    • PHP
  • PHPの文字化けに関して

    こんにちは。 現在、PHPでWeb画面を作成しているのですが 日本語がすべて文字化けして困っています。 php.iniの設定はWebなどを参考にして以下のような 設定です。 宜しくお願い致します。 =php.iniの設定= default_charset = SJIS mbstring.http_input = auto mbstring.http_output = pass mbstring.internal_encoding = SJIS mbstring.detect_order = auto mbstring.substitute_character = none =.php内の記述= <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> =環境= サーバー:Vine Linux3.2

    • ベストアンサー
    • PHP
  • FedoraCore4+php5.0.4+Mysql4.1.11で文字化け

    過去のログを見たのですがばしっとした答えがみつからないので質問します。 旧マシンでfedoracore3+php4.3.11+mysql3.23.58を使っていたました。 新しいマシンにはFedoraCore4+php5.0.4+Mysql4.1.11にしました。 Fedora4にしたのはマシンのドライバの関係です。 旧マシンでのphp+Mysqlのwebシステムをそのまま新マシンに移行したのですがphpのwebページ上で文字化けというか[???]と表示されてしまいます。 mysqlとphpをどうしてもsjisで動かしたいのですが、 どうもいい対策がみつかりません。 ソースではなくrpmから展開していますのでオプション指定もできません。 sjisにしたい理由として ・携帯サイト作りはsjisなので今後もsjisでしたほうがなにかと便利だということ ・旧マシンはsjisでつくっている わたしがおこなったことは php.iniに default_charset =sjis mb関連をsjisに変更 my.cnfは [mysqld] default-character-set = sjis [client] default-character-set = sjis [mysql] default-character-set = sjis としています。 どなたかご教授おねがいします。

    • ベストアンサー
    • MySQL
  • 文字化け回避できません

    MYSQL入門以前という本を購入し、MYSQLとPHPの勉強をしています。例題である住所録をPHPを使って作成しました。フォームから氏名等登録すると、登録された内容がブラウザへ表示される形になっています。ブラウザには文字化けも無く日本語がきちんと表示されているのですが、ターミナル、PHPMyadminでテーブルの内容を見てみると文字化けしています。 apache 1.3.3 MYSQL 4.0.26 PHP 4.4.1 Mac OS X 10.4.8 my.cnfの内容 [mysqld] default-character-set=sjis [mysql] default-character-set=sjis [mysqldump] default-character-set=sjis php.iniのdefault_charset部分 default_charset="Shift_JIS" ターミナル→ウィンドウ設定→ディスプレイ部分 文字セットエンコーディングUTF-8 PHPMyAdmin 言語 UTF-8 文字化けを回避するにはどれをどうすればいいのか素人なので全然わかりません。教えてください。

    • 締切済み
    • PHP
  • 日本語表示する方法について

    LAPP環境下での開発を行っていますがまだまだ初心者でなかなか前に進みません。 →PostgreSQL (8.3.4) PHP (5.2.6) 現在、作成したプログラムを確認する際にWebブラウザで確認しているのですが DBから引っ張ってくるデータが文字化けしてその解決策が判らず困っています。EUC→Shift_JISがうまくいきません。 DB側の問題なのか、プログラム側の問題なのかも判断つきません。 <php.ini> php.iniは以下の設定を変更しました。 magic_quotes_gpc=off output_bufferring=on output_handler=mb_output_handler default_charset=Shift_JIS mbstring.language = japanese mbstring.internal_encoding = EUC-JP mbstring.http_input = auto mbstring.http_output = SJIS mbstring.encoding_translation = On mbstring.detect_order = auto mbstring.substitute_character = none <HTML> HTMLは関係するのはheadタグのみかと思い以下のように設定しています。 charset=Shift_JISと設定しています。 以上方法論等どなたかご教授頂けないでしょうか。

    • 締切済み
    • PHP
  • ウェブサイト上での日本語の表示について

    ドリームウィ-バで英語が基本のウェブページを作成中ですが、どうすれば日本語の表示ができるのか、どの様にcharactarを設定すればよいか教えてください。(charset=iso-8859-1 ではだめですよね?/ドリームウィ-バを使わなければ良いのでしょうか?) 宜しくお願いします。 裕子

    • 締切済み
    • CSS
  • PHPでMYSQLのデータを読み込んだ時

    PHPでMYSQLのデータを読み込んで出力した時、日本語の部分だけ、表示されません。 my.iniには、いろいろ調べて、下のように書いてみました。ちなみに、sjisと書いてあるところは、ujisと書き換えたりもしました。 バージョンは、アパッチが2.0.53、PHPが5.0.4、MYSQLは4.0.20dです。 日本語の部分以外は、ちゃんと表示されているので、文字の設定が間違っているのだと思うのですが、 どなたか、分かる方教えてください。 [WinMySQLAdmin] Server=C:/mysql/bin/mysqld-nt.exe [mysqld] default-character-set=sjis language=C:/mysql/share/japanese [mysql] default-character-set=sjis [mysql-dump] default-character-set=sjis

専門家に質問してみよう