パブリックタグ登録申請サンプルサイト ソース解説

共通部分

概要

各ファイルで共通して使用される機能について解説する。

解説

各ファイル先頭には次のような記述がある。
<?php
include 'lib.php';
deny_path_info();
if(empty($_SESSION['token'])){
    header("Location: token.php");
    exit();
}
lib.phpではプログラムの実行に必要な初期化作業やセッション関係の処理が行われ、また各ファイルで共通して必要になる関数が定義されている。 deny_path_info()はセキュリティ対策である。 それ以降の行は、アクセストークンが入力されセッションに保存されているか否かを確認し、保存されていなければトークン入力ページへ自動的に遷移する。 トークン入力ページ以外のファイルに記述する。

ソースコード

lib.php
<pre class="code"><span class="tag">&lt;?php
require 'config.php';
mb_internal_encoding('UTF-8');
mb_language('Japanese');
setlocale(LC_ALL, 'ja_JP.UTF-8');
date_default_timezone_set('Asia/Tokyo');

$parsed_base_url = parse_url(BASE_URL);
session_set_cookie_params(0,$parsed_base_url['path'],$parsed_base_url['host'],!empty($_SERVER['HTTPS']),true);
ini_set('session.gc_maxlifetime', SESSION_LIFETIME);

session_start();

//セッションタイムアウトを実装 環境によってセッションのGCがうまく働かないため
if(isset($_SESSION['last_access'])){
    if(time() - $_SESSION['last_access'] &gt;</span> SESSION_LIFETIME){
        session_destroy();
        session_regenerate_id();
        session_start();
    }
}
$_SESSION['last_access'] = time();

//fram内表示を拒否する クリックジャッキング対策
header('X-FRAME-OPTIONS: SAMEORIGIN');

//config.php内で定数DEBUGが定義されているときは、PHPの実行時エラーを画面上に表示する。
if(defined('DEBUG')){
    ini_set('display_errors',1);
    ini_set('error_reporting',E_ALL);
}

//環境によってはマジック・クォートという機能が有効になっており、誤動作の原因となるので、無効にするよう求めるメッセージを表示して終了
if(get_magic_quotes_gpc()){
    die('Disable magic_quotes');
}

//文字列をhtmlエスケープして画面に出力
function h($str){
    echo htmlspecialchars($str,ENT_QUOTES);
}
function deny_path_info(){
    if($_SERVER['PHP_SELF'] != $_SERVER['SCRIPT_NAME']){
        header(&quot;Location: &quot;.$_SERVER['SCRIPT_NAME'], true, 307);
        exit();
    }
}
//データが存在しない場合は空出力
function _d($data,$key=null){
    if($key){
        return isset($data[$key])?$data[$key]:&quot;&quot;;
    }else{
        return isset($data)?$data:&quot;&quot;;
    }
}
//指定された長さのランダムな文字列を返す
function rand_str($num){
    $seed = &quot;0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ&quot;;
    $str = '';
    for($i=0;$i&lt;$num;$i++){
        $str .= substr($seed,rand(0,strlen($seed)),1);
    }
    return $str;
}
</pre>
config.php
lib.phpから読み込まれるファイルで、サイト名やサイトのURL、APIのURLやGoogleのAPIキーなどを設定する。
<?php
define('SITE_NAME','パブリックタグ即時登録申請サンプルサイト');

define('BASE_DIR','/var/www/html/ucode_sample/');

//URLの先頭部分を設定する。最後の"/"を含める。例:http://xxxx.yyyy.zz/
define('BASE_URL','https://ucopendb2.gsi.go.jp/ucode_sample/');

//session lifetime
define('SESSION_LIFETIME',1800);

//申請用API
define('UCODE_APPLY_API','https://localhost/ucode_app/api/ucode.php');

//デバッグ用出力
//define('DEBUG',1);

//場所情報コード検索API
define('UCODE_SEARCH_API',"http://ucopendb.gsi.go.jp/ucode/api/search.json?");

//フォーマットバージョン、種別などのCSVファイルのパス
define('CODE_CSV_PATH',"https://ucopendb2.gsi.go.jp/ucode/");

//Google Maps JavaScript API で使用可能なキー
define('GOOGLE_API_KEY','.............................');
?>