読者です 読者をやめる 読者になる 読者になる

Google Analytics API を PHP から使う

PHP

はじめに この記事は、次の記事を現在(2016年4月)の Google Analytics およびその API の実情に合わせて書き直したものである。 【旧版】Google Analytics API を PHP から使う - メモ用紙 人気記事ランキングを作成する処理等、ユーザが操作を介すること…

(調査中) Windows 版 PHP の ZipArchive クラスで日本語 (CP932) のファイルを扱えない?

PHP

Windows 上で作成した、ファイル名が CP932 の Zip ファイルがどうしても文字化けしてしまう。たとえば “日本語” (93 fa 96 7b 8c ea) というファイルは常に “ô·û{îΩ” (c3 b4 c2 b7 c3 bb 7b c3 ae ce a9) という不可解な化け方をする。 試したこと: set_loc…

PHP 7 を Windows 7 上で動かす

PHP

PHP 7.0.1 がリリースされたので、ひとまず開発環境である Windows 7 上で動かしてみた。 インストール PHP のダウンロードページから「Windows downloads」のリンクをたどり、Windows 版のダウンロードページへ。 PHP For Windows: Binaries and sources Re…

mPDF (5.7.4) はタイムゾーン設定を勝手に書き換えるので注意

PHP

HTML で書かれたコードから PDF を出力できる mPDF という PHP ライブラリがある。HTML と CSS を理解していれば思い通りに、とまではいかないまでも、それなりにレイアウトすることができる。 あるときこの mPDF を使っていたところ、出力される日時がずれ…

古い PHP を使うときに問題となりそうな箇所

PHP

2015年10月28日 PHP 5.5 を追記 PHP 5.4 → 5.5 ジェネレータが追加されました。 yield キーワードで利用します。 try-catch ブロックで finally が使えるようになりました。 新しいパスワードハッシュ API foreach で list() を使って、ネストした配列を個別…

DateTime オブジェクトのタイムゾーンの設定

PHP

タイムゾーンを特に指定しない場合、 date_default_timezone_get() の値が使われる。 getTimezone(); $tz->getName(); // Asia/Tokyo date_default_timezone_get(); // Asia/Tokyo $date->getTimestamp(); // 1410130800 $date->format('Y/m/d H:i:s'); // 2…

【旧版】Google Analytics API を PHP から使う

PHP

2016年4月1日時点、API が更新されて使い方が変わっています。こちらの新しい記事をご覧ください。 Google Analytics API を PHP から使う - メモ用紙 目標 Google Analytics API を使って、人気のページのランキングを作る。次の記事はバージョンの古い PHP…

デスクトップ/モバイル(スマートフォン)を判断するベストプラクティス

PHP

モバイル環境では通信の帯域が限られているため、内容を絞り込んだコンテンツを提供するのが定石となっている。その判定を行うのに現在最も有効な方法は、HTTP リクエストに含まれる User-Agent ヘッダを参照する方法だ。数多くのアクセス解析ツールでも、ユ…

UTC時刻の文字列からローカル時刻を出力する

PHP

SQLite には日付型はないが、 CURRENT_TIMESTAMP で現在時刻を文字列として取得することができる。また、date などの関数で時刻の演算することもできる。 SELECT CURRENT_TIMESTAMP AS now , datetime('now', 'start of month') AS first_day , datetime('no…

serialize/unserialize vs json_encode/json_decode 速度比較

PHP

テストデータとして 金沢市オープンデータ から取得した JSON 形式で 351 KB になるデータを使用した。PHP 5.4.17 (cli) でそれぞれ 1000 回実行したときの実行時間を以下に示す。 エンコード 実行時間 [s] 比 serialize (array) 2.06 +26% serialize (stdCl…

PHPソースコード難読化・暗号化ツール所感

PHP

2014年7月1日追記:この記事は情報が古い可能性がありますPHP ソースコードの難読化・暗号化ツール php-compressor, ibLind, プラセンス SPHP, ionCube PHP Encoder を試してみた。 php-compressor php-compressor はコード実行に必要のない空白や改行、コメ…

セキュリティ上の理由で preg_replace が制限されている環境での代替関数

PHP

preg_replace 関数は使い方によっては任意のコードを実行できる脆弱性を生むことがあるため、php.ini の disable_functions によって使用を禁止されている場合がある。 preg_replaceによるコード実行 しかしライブラリ中でも preg_replace が使われる機会は…

cURLでアクセスできるサイトとできないサイト

PHP

MacPorts で入れた php5 (5.3.12) と php5-curl でテスト。 接続 ドメイン 接続方式 暗号化方式 ビット数 digest 鍵交換 認証局 OK twitter.com TLS 1.0 RC4_128 128 SHA1 RSA VeriSign Class 3 Extended Validation SSL CA OK account.edit.yahoo.co.jp TLS…

Windowsでも非同期でexec()

PHP

/dev/null 2>&1 &'); } else { $fp = popen('start "" ' . $command, 'r'); pclose($fp); } } 解説 PHP_OS で Windows か UNIX 系 OS かを判断する(他の処理系については考えていない) UNIX 系 OS の場合、標準出力を /dev/null に捨て、バックグラウンド…