PHPを学ぼう!

▼PHPを学ぶチャプターです。


660円から使える!

 

素材メニュー

 ◆Chapter 1

 ◆Chapter 2

 ◆Chapter 3

 ◆Chapter 4

 

制作ヒント

 ◆制作のヒント

 

レッスンメニュー

 ◆Chapter2 練習問題

 ◆Chapter3 DB練習問題

 

サイト運営者がPHPを学んだ
お勧めの書籍です!
これ一冊で基本的なPHPの仕組み、簡単なプログラムの作成、SQLiteを使ったデータベースなどかなり学べる要素が詰まっています!

↓↓↓ ↓↓↓

PHPレッスンブック―PHP5対応

新品価格
¥2,520から
(2013/2/24 04:38時点)

 

 

サイバーテロの技法について書かれた書籍です!
ハッカーの手法を知ることでご自身のサイトがハッカーに攻撃されたときそれを防ぐ手法を紹介しています。

↓↓↓ ↓↓↓

PHPサイバーテロの技法―攻撃と防御の実際

新品価格
¥1,890から
(2013/11/5 10:09時点)

 

 

★初年度100円! サブドメインやメールアカウントを無制限に設置できます。
PHPやCGIは勿論、WordPress、Movable Type Open Source、掲示板、ブログ、ショッピングサイトなどが簡単に導入できるので複数サイトを運営したい場合に便利なサービスです。

↓↓↓ ↓↓↓

 

PHPが動作するサーバー

 

はじめてのHP | 無料素材 | タグ辞典 | CSSガイドEX | PHPを学ぼう!

◆Chapter 4 - アクセス端末別にページを振り分ける

PC やスマートフォン、タブレット、携帯別にアクセスしてきた端末を特定するプログラムを紹介します。
このプログラムは細かい機種を特定するではなく大きく4つのカテゴリ、PC やスマートフォン、タブレット、携帯別にページを振分けるプログラムです。
それぞれの端末用のページを用意することを前提にしています。

  

【Terminal_Page_CHK.php】

001<?php
002  #アクセスしてきた端末を判定
003  function Terminal_CHK(){
004    //端末の特定
005    $ua = $_SERVER['HTTP_USER_AGENT'];
006    $terminal = "";
007
008    if((strpos($ua, 'Android') !== false) && (strpos($ua, 'Mobile') !== false) || (strpos($ua, 'iPhone') !== false) || (strpos($ua, 'Windows Phone') !== false)) {
009      // スマートフォンからのアクセス
010      $terminal = "s";
011    }elseif((strpos($ua, 'Android') !== false) || (strpos($ua, 'iPad') !== false)) {
012      // タブレットからのアクセス
013      $terminal = "t";
014    }elseif((strpos($ua, 'DoCoMo') !== false) || (strpos($ua, 'KDDI') !== false) || (strpos($ua, 'SoftBank') !== false) || (strpos($ua, 'Vodafone') !== false) || (strpos($ua, 'J-PHONE') !== false)) {
015      // 携帯からのアクセス
016      $terminal = "g";
017    }else{
018      // PCからのアクセス
019      $terminal = "p";
020    }
021    return $terminal;
022  }
023
024
025
026  #アクセスしてきたページを端末専用ページに遷移させる
027  function Page_CHK($dir1, $dir2, $page){
028    //ファイル名の特定
029    $filename = isset($_SERVER["PHP_SELF"]) ? basename($_SERVER["PHP_SELF"]) : "";
030
031    //クエリ(パラメータ)の特定
032    $query = isset($_SERVER["QUERY_STRING"]) ? $_SERVER["QUERY_STRING"] : "";
033
034    //アクセスページの育成
035    if($query){ $str = "?".$query; }else{ $str=""; }
036
037    $terminal = Terminal_Chk();
038
039    //ページの移動
040    if($terminal == "g" && $page != $terminal) {
041      // 携帯からアクセスされた場合
042      header("Location: {$dir2}g/{$filename}{$str}");
043      exit();
044    }
045    if($terminal == "p" && $page != $terminal) {
046      // 携帯からアクセスされた場合
047      header("Location: {$dir1}/{$filename}{$str}");
048      exit();
049    }
050    if($terminal == "s" && $page != $terminal) {
051      // スマートフォンからアクセスされた場合
052      header("Location: {$dir2}s/{$filename}{$str}");
053      exit();
054    }
055    if($terminal == "t" && $page != $terminal) {
056      // タブレットからアクセスされた場合
057      header("Location: {$dir2}t/{$filename}{$str}");
058      exit();
059    }
060  }
061
062
063
064  function SmartLink($page){
065    $terminal = Terminal_CHK();
066    $v = "";
067
068    if($terminal == "g" && $page != $terminal){
069      $v = '<a href="../mb/g/index.php" style="display:block; text-align:right;">>>携帯の方はこちらへ!</a></div>';
070    }
071    if($terminal == "p" && $page != $terminal){
072      $v = '<a href="../index.php" style="display:block; text-align:right;">>>PCの方はこちらへ!</a></div>';
073    }
074    if($terminal=="s" && $page != $terminal){
075      $v = '<a href="../mb/s/index.php" style="display:block; text-align:right;">>>スマートフォンの方はこちらへ!</a></div>';
076    }
077    if($terminal=="t" && $page != $terminal){
078      $v = '<a href="../mb/t/index.php" style="display:block; text-align:right;">>>Tabletの方はこちらへ!</a></div>';
079    }
080    echo $v;
081  }
082?>

  

  

このプログラムは、次のディレクトリのイメージで制作しています。

    【 public_html 】
      ├ index.php *"Page_CHK"を設定
      ├ page1.php *"Page_CHK"を設定
      ├ page2.php *"Page_CHK"を設定
      ├ Terminal_Page_CHK.php
      ├ g(携帯用)
      │ ├ index.php *"SmartLink or Page_CHK"を設定
      │ ├ page1.php *"SmartLink or Page_CHK"を設定
      │ └ page2.php *"SmartLink or Page_CHK"を設定
      ├ s(スマートフォン用)
      │ ├ index.php *"SmartLink or Page_CHK"を設定
      │ ├ page1.php *"SmartLink or Page_CHK"を設定
      │ └ page2.php *"SmartLink or Page_CHK"を設定
      └ t(タブレット用))
         ├ index.php *"SmartLink or Page_CHK"を設定
         ├ page1.php *"SmartLink or Page_CHK"を設定
         └ page2.php *"SmartLink or Page_CHK"を設定

  

  

構成プログラムは3つ。
Terminal_CHK は、単純にアクセスしてきた端末が PC なのか、スマートフォンなのか、タブレットなのか、あるいは携帯なのかを判断して Return で返すプログラムです。
PC の場合には " p " 、スマートフォンの場合には " s " 、タブレットの場合には " t " 、携帯の場合には " g " を返します。

アクセスしてきた端末を特定する単体のプロフラムとして使うこともできます。

  

  

Page_CHK は、端末別に用意したページに異なる端末がアクセスしてきたときに専用ページに遷移させるプログラムです。
例えば、pc 用の " page1.php " にタブレットでアクセスすると、タブレット用の " page1.php " に移動します。
次のようにパラメーターが存在すれば、パラメーターも引き継ぐことができます。

page1.php?v=1&i=y

  

Page_CHK の引数 $dir1 には、PC のディレクトリの相対パス " ./ " を入れます。
引数 $dir2 には、スマートフォン、タブレット、携帯のディレクトリの相対パス " ./ " を入れます。

スマートフォンやタブレット、携帯用のページの引数は、 $dir1 に、PC のディレクトリの相対パス " ../ " を入れます。
$dir2 には、スマートフォン、タブレット、携帯のディレクトリの相対パス " ../ " を入れます。
パスは適時、修正してください。

  

  

SmartLink は、例えばタブレットのページに pc でアクセスしてきた場合に、ページ上部(任意)に pc のページリンクを表示させるプログラムです。

MAMPのダウンロード

  

全てのページに Page_CHK を設定すると端末に対応したページに強制的に遷移してしまいます。
Page_CHK ではなく、SmartLink にした場合、対応したページへのリンク表示がされリンクを押さない限り、pc でスマートフォン、タブレット、携帯のページを見ることができます。

  

何故このようなリンク表示を設けたのかといいますと、制作過程においてスマートフォン、タブレット、携帯のページもパソコンで作るで各ページの表示確認もパソコンから簡易的に行う為です。
また一部の端末を持っていないこともあります・・・。

スマートフォン、タブレット、携帯のページが、他の端から見られてしまう欠点があります。

  

  

public_html 以下、pc 用の index.php、page1.php、page2.php のページ上部には次のように記述します。

<?php
  include_once("./Terminal_Page_CHK.php");

  //端末指定
  $page = "p";

  //アクセス端末別にページ遷移
  Page_CHK("./", "./", $page);
?>
<html>
 .
 .
 .

$page の変数には、pc 用として "p" 設定しています。

  

  

pc 以外のページで SmartLink を使用する場合には、リンクを表示させたい箇所に以下のように記述します。

<?php
  include_once("./Terminal_Page_CHK.php");

  //端末指定
  $page = "s";
?>
<html>
<?php
  //端末別にリンクを表示
  SmartLink($page);
?>
 .
 .
 .

$page の変数には、スマートフォン用として " s" を設定しています。
タブレット用には " t " 設定し、携帯用には " g " を設定しています。

  

  

[2017年7月23日 公開]

  

  

一括ダウンロード

 

 

 

 

 

 

 

 

 

 

 

 

ex-mode.net | ツールEX | 素材EX | アフィモール | 初級者向 初めてのホームページ作り | Htmlタグ辞典 | 初めてのプランター菜園 | リンク・ボード
気のみ気のままなブログ | CSSガイドEX | ホビ★コレ | 班長日記!

▲UP

Copyright (C) ex-mode.net 2017. All Rights Reserved.