2010年7月アーカイブ

その悲劇は、PHPの巨大なクラスをリファクタリングしたのが原因で起こりました。


「フォームの送信ボタンを連打すると発生するとDB上で2重登録されてしまうバグがあり、その問題に対処するために確認画面に遷移したときに重複レコードを削除することになっているはずが削除されない」というものでした。


携帯サイトを作成しているときに、AUやドコモの端末でフォームの送信ができないことがあります。
DocomoのSH505iSでこの現象を確認しました。

症状

送信ボタンを押しても何の反応もない。

原因


formタグのaction属性を指定していない。


<form>
<input ... />
<input ... />
</form>

対処法

formタグのaction属性をきちんと指定してやると、送信できます。

<form action="hoge.php"  >
<input ... />
<input ... />
</form>

FormのAction属性は必須です!

この現象は決してDocomoさんやSharpさんのせいではありません。

HTMLの仕様上、form要素のaction属性は必須です。
http://www.w3.org/TR/html401/interact/forms.html#edef-FORM
action属性はきちんと書きましょう!
携帯サイトを作るときは、brタグの書き方に気をつけましょう。

正しい例
br と /の間に半角スペース
<br />


悪い例
下記のように書くと改行されないことがあります

<br/>


携帯サイトで、空メールから会員登録するときに、あて先のメールアドレスを「reg+12345@example.com」などとしてパラメータを渡すことができます。

宛先メールアドレスの"+"以降をパラメータとして扱う

まず、"reg+123@"宛てに送っても"reg+foo@"宛てに送っても、"reg@"にメールが届くようにします。
Gmailで使われているテクニックですね。

main.cfを編集する
Postfixの/etc/postfix/main.cfの"recipient_delimiterという項目がコメントアウトされているので、 #を削除して有効にします。
# recipient_delimiter = +
recipient_delimiter = +
(Ubuntu9.04ではデフォルトで有効になっていました。)

変更を反映させる
変更したらPostfixを再起動します。
/etc/init.d/postfix restart

スクリプトでパラメータを抜き出す
あとは、PHPなどスクリプト側で、宛先メールアドレスを正規表現で解析します。

/**
 *  "reg+12345@example.com"から"12345"部分を抜き出す
 */
function getParam($mailaddress)
{    
        if(preg_match('/reg\+(.+)/i', $mailaddress, $matched )) {
            return $matched[1];
        } else {
            return false;
        }
}

参考

ケータイサイトでメール送受信をする際のポイントをご紹介 : Media Technology Labs (MTL) : メディアテクノロジーラボ ブログ

No route to host (port 25)の原因と対策

自宅サーバから自分の携帯やらGmailやらにメール送信しようしたら、送れませんでした。
Postfixのメールログを見るとこんな感じでした。

上記のエラーが出るのは、GDモジュールが入ってないのが原因です。

GDをインストールする方法 ( Ubuntu + PHP5 )

sudo apt-get install php5-gd
sudo /etc/init.d/apache2 restart     # apache再起動
C言語で上記のようなエラーが出た場合の解決方法。

原因

ヘッダーファイル"stdlib.h"を読み込み忘れている

対処法

ソースコードの先頭に、下記のように書きます。
#include <stdlib.h>

PHP 5.3.1や PHP 5.3.2の場合、何をどうやってもImagickをインストールすることができませんでした。

結局、PHPのバージョンを5.2.13にしたらうまく行きました。

人気記事

このアーカイブについて

このページには、2010年7月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2010年6月です。

次のアーカイブは2010年8月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

最近の人気記事