- 携帯サイトでのセッションの利用
- 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/proftpd.confファイルを編集する。
vi proftpd.conf
<Global>ディレクティブ内に「ListOptions “-a”」を追加
<Global>
DefaultRoot ~ psacln
AllowOverwrite on
ListOptions “-a”
</Global>そして再起動
service xinetd restartこれで無事、.htaccessファイルが表示されるようになりました。 😛
- 空メールでPHPを起動する
- 2010.01.21
空メール処理を作成したので、メモします。
1.空メール送信用メールアドレス作成
2.受信メールボックスにメールが来たらPHPを起動するため、.qmailを編集。
使えるネットの場合、/var/qmail/mailnames/自分のドメイン/追加したメールアカウント/に.qmailがあるので、SSHで接続し、該当ディレクトリに移動してmoreコマンドなどで内容を表示してみると[root@*********]# more .qmail
| true
| /usr/bin/deliverquota ./Maildirとなっているので、1行目に以下の行を追加。
| /usr/bin/php -d safe_mode=off /var/www/vhosts/自分のドメイン/private/mail.php
※この例では、privateディレクトリのmail.phpを起動する
(セキュリティの為、ウェブでアクセス出来ないディレクトリに保存)
privateディレクトリのパーミッションは705※PHPプログラムの起動のみで、メールは受信したくない場合は、最初から入っている記述をコメントアウト。
#| true
#| /usr/bin/deliverquota ./Maildir3.mail.phpに処理を記述
ただし、PHPプログラムの中で、絶対パスで読み込むと上手くいかないっぽいので要注意!
【×】→ require_once( “/var/www/vhosts/自分のドメイン/httpdocs/hogehotge/hogehoge.php” );
と、このような処理になるのだが、動かなくて大分苦労しました。
結局privateディレクトリのパーミッションが原因だと分かり無事解決 :emoji92: