
PHPのissetにひそむ罠?
Category PHP
Date 2009年09月09日
PHPを使っている人ならしっているであろう、issetという関数。
読んで字のごとく、変数がセットされているかどうかを確認する関数です。
・・・と、つい最近まで信じていました。
たとえば、以下のような時
$data = aray( 'a' => 'hoge', 'b' => NULL ); print (isset($data['a'])) ? "a:TRUE" : "a:FALSE"; print (isset($data['b'])) ? "b:TRUE" : "b:FALSE"; print (isset($data['c'])) ? "c:TRUE" : "c:FALSE";
「a:TRUE」「b:TRUE」「c:FALSE」
となると思っていたのですが、実際は
「a:TRUE」「b:FALSE」「c:FALSE」
となります。
そんな馬鹿なと思って公式を確認してみると、
「変数がセットされており、それが NULL でないことを調べます。 」
と、しっかり書いてあります。
気づいた瞬間、「マジですか。。。」と、ちょっと口がポカーンとなりました。
多分そこを勘違いしている人はかなり多いと思うので、もし知らなかったという人は注意が必要です。
この記事の続き?を書きました。
PHPのissetとarray_key_exists


auの携帯で、PHPからprintされた1バイトの文字は出力されるようになったのかな?
Category PHP
Date 2009年09月03日
今でもそうなのか分からないのですが、1年前にハマった現象のお話。
シンプルだったauのPOST問題 – 畝田ブルースマンの休憩室
↑このブログの記事にもあるのですが、私も携帯サイトのメールフォームを作っている時に1バイトの
print出力ではまったことが。
その時はこんな感じで
<input name="shop_id" value="<?php print $shop_id; ?>" type="hidden" />
みたいな感じで書いていたんですが、shop_idが飛んでくる時と飛んでこない場合があって、おかしいおかしいと思っていたら、どうも1バイトのコードが飛んでこないことが判明。
PHPがおかしいのかと思ったりもしたけれど、softbankやdocomoだと問題なく、auだけでおこる現象。
最終的に、shop_idをゼロパディングして2桁にするようにして解決したんだけれど、この記事を書こうと思って調べてたらこんな記事が。
au携帯のSSLで文字化け – LAPISLAZULI HILL#Hatena
output_bufferingをonにするなんて想像しなかったので、私の時の問題がこれで解決したのかどうかはわからないのですが、もし同じ問題に直面した人は試してみるといいと思います。

- 脱出ゲームを作成しました
- Studio Yuksのサイト制作のお手伝いをさせていただきました
- よみがな.netを公開しました
- Slug or PostIDプラグインがバージョン1.0になりました。
- お問い合わせフォームへの連投を防ぐ方法+α
- phpMyAdminのsetup.phpに脆弱性があるみたいです
- 1つのデータベースに複数のWordPressをインストールする方法
- 仕事とプライベートで使っているマウスをご紹介
- WordPressでiFrameが消えないようにする記述が必要なくなったようです
- CSS3で横並びのメニューを簡単に作る方法
- Windows7にIllustratorCS2入れたけど日本語入力ができなかった
- FFFTPでファイルをダウンロードしたのに、ファイルがその場所になかった時
- PHPでurlの日本語パラメータをGETで受け取ると文字化けする場合
- JavaScriptでブラウザのテキスト選択を解除する
- お問い合わせフォームへの連投を防ぐ方法+α
- PHPのSmartyでゼロパディングする
- WordPressでiFrameが消える時の解決方法
- CSS3で横並びのメニューを簡単に作る方法
- MT5インストール時に「LWP::UserAgentがありません」とエラーが出てインストールできない時
- WordPressでiFrameが消えないようにする記述が必要なくなったようです
- HTML+CSS (8)
- JavaScript (12)
- PHP (21)
- PostgreSQL (4)
- WordPress (8)
- WordPressプラグイン (1)
- Movable Type (13)
- Photoshop (2)
- Illustrator (2)
- Firefox (5)
- ツール (2)
- 雑記 (23)
- 未分類 (3)
- Android (1)