- 携帯サイト用.htaccessの生成(IPアドレス制限)
- 2010.02.10
携帯専用サイトの場合、IPアドレスによるアクセス制限をし、PCからのアクセスを禁止することがあると思いますが、以下のサイトでは各キャリアのIPアドレスのみアクセス許可した.htaccessを生成してくれるのでとても便利です。
- auでhttpsからhttpページへの遷移時にエラーが出る件
- 2010.02.09
携帯サイトでhttps内のページからhttp内のページにリンクをした場合、ドコモとソフトバンクは正常に表示されるが、auだけが「リクエストされたページは表示できません」という画面が表示され、リンク先ページを表示できませんでした。
リンク先は定数で指定しており、以下のようになっておりました。<a href=”<?= HOMR_URL ?>”>トップページ</a>
これだとダメだったのでContent-Typeの指定等をいろいろ変えたりして試してみましたが結局だめだったので、リンク先の指定方法を定数ではなく、通常のURLで指定しなおしたら治りました。
<a href=”http://hoge.com/”>トップページ</a>
実は定数HOME_URLは以下のように設定してあり、環境変数を参照していました。
define(”HOME_URL”, ”http://” . $_SERVER["HTTP_HOST"]);define(”HOME_URL”, ”http://hoge.com”);
このようにすると、リンク指定をHOME_URLでも大丈夫なようになったので、どうやらauでは期待した通りに環境変数が取得できていなかった模様
- .htaccessのdeny from all で apacheのTestPageが表示されてしまう
- 2010.02.07
携帯サイト用にPCからのアクセスを拒否する.htaccessを作成する際、apacheのTestPageが表示されてしまい、対応に時間がかかったため、備忘録として記述します。
【.htaccessの内容】
order deny,allow
deny from all#アクセスを許可するIPアドレスを一行ずつ記入する
allow from 210.153.84.0/24
allow from 210.136.161.0/24#PC用のファイルを指定
ErrorDocument 403 /error_m/pc.html
#error_mディレクトリには.htaccessを設置しdeny from allを記述これで許可しているIPアドレス以外は/error_m/pc.htmlを表示するのですが、トップページを/(スラッシュ)で終了したURLにアクセスするとapacheのテストページが表示されていました。
http://www.hoge.com/ → NG(テストページ表示)
http://www.hoge.com/index.html → OK
http://www.hoge.com/index.htm → OK
http://www.hoge.com/index.php → OKいろいろ調べたところ、/etc/httpd/conf.d/welcome.confにある以下の内容が影響してるよう。
<LocationMatch “^/+$”>
Options -Indexes
ErrorDocument 403 /error/noindex.html
</LocationMatch>これを全部コメントアウトします。
いらないらしいけど、一応バックアップは取っておいたほうが安心
これで、httpd再起動後、正常に動作するようになりました。
service httpd restart
- 携帯サイトでのmailto使用について
- 2010.02.05
携帯サイトを作成していて mailto リンクで件名と本文を指定するのに下記のように指定します。
<a href=”mailto:メールアドレス?subject=件名&body=本文”>
このとき、件名と本文はURLエンコードする必要があるのだが、キャリアによって渡す文字コードに違いがあります。
DoCoMo、au は shift_JIS に変換してから URLエンコード、SoftBankはUTF-8にしてからURLエンコードしないと文字化けが起こります。
ですので、アクセスされた端末を判別し、それに合わせた文字コードに変換しURLエンコードするという手順になります。サンプルコードはこんな感じ
<a href=”mailto:?subject=<?php echo urlencode(mb_convert_encoding(’題名’, ’sjis’));?>&body=< ?php echo urlencode(mb_convert_encoding(’本文’, ’sjis’))?>”>友達に知らせる</a>
- 携帯サイトでのセッションの利用
- 2010.01.26
ブラウザがセッション管理を行う方法には大きく2種類。
●Cookieに保存する
●URLに付与する携帯の場合は、ドコモがCookieに対応していないため、URLに付与する形で保持しなければいけません。
但し、URLにセッションIDを付けている状態の場合、いわゆるセッションハイジャックといわれるセキュリティ攻撃に脆弱になるため、これに対する予防処置が必要になってきます。session.use_trans_sidをonにすると自動でPHPSESSIDが付与されるようですが、ドコモだけonで、他はoffのようにするとauやソフトバンクでクッキーに対応してない機種があった場合対応出来なくなるので、以下のような処理にしてみた。
if (!isset($_COOKIE[session_name()])) {
// COOKIEが無効だったら
$SESSION = “?” . SID;
$AND_SESSION = “&” . SID;
} else {
// COOKIEが有効だったら
$SESSION = “”;
$AND_SESSION = “”;
}それでリンクの末尾に$SESSIONや$AND_SESSIONを手動で付けました。
携帯サイト
