トップページをパソコン携帯スマフォで切り替える

 掲示板スクリプトのバージョンアップ用にindex.cgiを作成したのですが、掲示板サイト以外でも使えそうなので記事として書いておきます。
 もっともApacheを使っているサーバーなら.htaccessの変更で対応できるのですけど。

index.cgi
#!/usr/bin/perl

$file1 = 'top.html';
$file2 = 'mobile.html';
$file3 = 'smart.html';

use CGI;
$cgi = CGI->new();
$parm = $cgi->param('mode');

if ($parm eq 'p') {            #パソコン
    $fname = $file1;
} elsif($parm eq 'm') {    #携帯
    $fname = $file2;
} elsif($parm eq 's') {   #スマートフォン
    $fname = $file3;
} else {               #自動判定
    if (check_mobile()) {
        $fname = $file2;    #携帯用
    } else {
        $fname = $file1;    #パソコン用
        $agent =$ENV{'HTTP_USER_AGENT'};    #スマフォ用
        if ($agent =~ /mobile/i) {$fname = $file3;}
        if ($agent =~ /android/i) {$fname = $file3;}
        if ($agent =~ /Windows.*Phone/i) {$fname = $file3;}
    }
}

open(TOP,"<$fname") or error_exit();
flock(TOP,1);
print "Content-type: text/html¥n¥n";
while(<TOP>) {
    print;
}
close(TOP);
exit;

sub error_exit {
    print "Status: 404 Not Found¥n";
    exit;
}

sub check_mobile {
    my $host = $ENV{'REMOTE_HOST'};
    my $addr = $ENV{'REMOTE_ADDR'};
    if ($host eq "" || $host eq $addr) {
        $host = gethostbyaddr(pack("C4",split(/¥./,$addr)),2) || $addr;
    }
    if ($host =~ /.+docomo¥.ne¥.jp$/) {return(1);}  #ドコモ
    if ($host =~ /.+jp-.¥.ne¥.jp$/) {return(1);}  #ソフトバンク
    if ($host =~ /.+ezweb¥.ne¥.jp$/) {return(1);}  #au
    if ($host =~ /.+pool¥.e-mobile¥.ne¥.jp$/ && $ENV{'HTTP_X_EM_UID'}) {return(1);} #イーモバイル
    if ($host =~ /.+pool¥.emobile¥.ad¥.jp$/ && $ENV{'HTTP_X_EM_UID'}) {return(1);} #イーモバイル
    if ($host =~ /.+ppp¥.prin¥.ne¥.jp$/) {return(1);} #Willcom
    return(0);
}

 使い方としては、file1にパソコンで表示させたいファイル名、file2に携帯で表示させたいファイル名、file3にスマフォで表示させたいファイル名を記述しておきます。
 スマフォを厳密に判定する方法は現在のところ有りません。ユーザーエージェントはブラウザによって変わりますし、リモートホストはWi-Fi接続すればパソコンと同じ物になります。
 その為にオプションを付けました。?mode=pでパソコン、?mode=mで携帯?mode=sでスマフォのページを表示するようにしています。
 ファイルの表示ではなくページ移動にすれば良さそうですが、携帯ではページ移動しない場合が有るのでこんな仕様になっています。

 掲示板スクリプトではfile1=〜file3=までの所をスクリプトで書き換えるようにします。もっともスマフォビューアーの予定はまだまだ先なのですけど。


コメント
コメントする








   
この記事のトラックバックURL
トラックバック

calendar

S M T W T F S
      1
2345678
9101112131415
16171819202122
23242526272829
30      
<< September 2018 >>

テスト

笑える霊体験まとめサイト
の表紙作成に使ったソフト

Poser 10

新品価格
¥14,316から
(2014/4/9 14:19時点)

広告だったり

オリジナル電子書籍

selected entries

categories

archives

recent comment

links

profile

search this site.

others

mobile

qrcode

powered

無料ブログ作成サービス JUGEM