- .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を手動で付けました。
携帯サイト
- 携帯サイトの簡単ログイン
- 2010.01.23
ドコモの場合は、サイトタグにutn属性をつけると、固体識別番号を送信してもらえます。
utn属性付加の記述例<a href=”URL” utn>
<form method=”メソッド” action=”URL” utn>auやソフトバンクはユーザが識別番号送出を許可していてばタグの追加は必要なし。
但し、ソフトバンクは初期設定で識別番号を「通知しない」に設定されているので、事前に設定変更の必要があります。取得方法は以下の通りなので、事前にキャリアを判別し、それぞれのキャリア用の処理を行えばOK
//docomo
$ua = $_SERVER['HTTP_USER_AGENT'];
$id = (preg_match(’/ser(\w{11,15})/’, $ua, $matches)) ? $matches[1] : ”;
//AU
$id = isset($_SERVER['HTTP_X_UP_SUBNO']) ? $_SERVER['HTTP_X_UP_SUBNO'] : ”;
//Softbank
$id = isset($_SERVER['HTTP_X_JPHONE_UID']) ? $_SERVER['HTTP_X_JPHONE_UID'] : ”;
これで$idに個体識別番号がセットされるので、会員DBに既に登録されている個体識別番号とつきあわせてユーザー認証を行います。
- FTPソフトでドットファイルを表示する
- 2010.01.22
使えるネットのVPSサーバを使ってるとFTPソフトで接続した際、.htaccessが表示されないので修正してみました。
まずは、SSH接続して/etc/proftp.confファイルを編集する。
vi proftpd.conf
<Global>ディレクティブ内に「ListOptions “-a”」を追加
<Global>
DefaultRoot ~ psacln
AllowOverwrite on
ListOptions ”-a”
</Global>そして再起動
service xinetd restartこれで無事、.htaccessファイルが表示されるようになりました。
SSH
