タグ: php

PHP Google Analyticsのデータを扱う GAPI Version 1.3

Google Analyticsのデータを取得してウニャウニャする必要が
あったのでデータの取得方法から調べてみた。
(昔APIができたとかいう時にちょっと触ったけど完全に覚えていないのでやり直し。。)

とりあえず今回取得したいデータはgoogle analyticsを仕込んであるサイトの指定期間内の
コンテンツ単位のページビューランキング※ただし特定の形式のURLのみのランキング
まずはgoogle analyticsのサイトで調べる。
使うのはこれ。

Data Export API

Google Analytics Data Export API を使用すると、クライアント
アプリケーションを作成して、許可したユーザーの既存のアナリティクス
プロファイルからのデータをリクエストしたり、クエリ
パラメータを使用してリクエストの結果を絞り込むことができます。
現在、Data Export API は Google アナリティクス データへの読み取り専用
アクセスをサポートしています。

とりあえずスタートガイドを読んでおく。

Read More PHP Google Analyticsのデータを扱う GAPI Version 1.3

PHP5 fgetcsv 日本語文字が消える場合

PHP5 で fgetcsvを使ってマルチバイト文字列を読込む際に
日本語が消える、もしくは一部消える現象が起きるのでその対策。

fgetcsvの使い方はここに書いてあります。

fgetcsv — ファイルポインタから行を取得し、CSVフィールドを処理する

注意点

この関数はロケール設定を考慮します。もし LANG が例えば en_US.UTF-8 の場合、 ファイル中
の 1 バイトエンコーディングは間違って読み込まれます。

wonder on server sideにも書いてます。
csvファイルを読み込む

Read More PHP5 fgetcsv 日本語文字が消える場合

GDとImageMagickでリサイズ時の画質の比較

CodeIgniter1.7.3の画像操作クラス「image_lib」でgd2を使って画像をリサイズしてましたが、
なんか元画像と較べると色が少し変と言われてので調査。

qualityを100にしても少し色が違うと・・・。

少し調べると以下のようなサイトが・・・。

GDとImageMagickの画質比較(Asial blog)
GDとImageMagick比較(プログラミングを始める10の理由)

ImageMagickのほうが画質はいいんですね。

で、image_libではGD/GD2、NetPBM、および ImageMagickに対応しているようなので
ImageMagickに変更してみた。

※以下メモ。処理は少し省いています。ファイルアップロード部分とか。

$data = $this->CI->upload->data();

$this->CI->load->library('image_lib');
$config = array();
$config['image_library'] = 'imagemagick';
$config['library_path'] = '/usr/local/bin/convert';
$config['source_image'] = $data['full_path'];
$config['maintain_ratio'] = TRUE;
$config['quality'] = 100;
$config['master_dim'] = 'auto';
$config['new_image'] = $data['file_path'] . $data['raw_name'] . "-" . $size . $data['file_ext'];

$setting = $this->CI->config->item('resize');

if($data['image_width'] >= $data['image_height']) {
    $config['width'] = 400;
    $config['height'] = 240;
} else {
    $config['width'] = 240;
    $config['height'] = 400;
}

$this->CI->image_lib->initialize($config);
$this->CI->image_lib->resize();
$this->CI->image_lib->clear();

だいたい上記の用な感じでリサイズしたら元画像と比較しても遜色の無い
綺麗な画像ができました。

※ちなみに上がgd2下がimagemagickです。

わかりずらいけどimagemagickのほうが背景色がより白く元画像に近い。。

ブログだとおなじみ見えるかも。。

CodeIgniter xss_cleanの謎

ぺらたんからのタレコミ。

CodeIgniterの1.7.3や2系でxss_cleanの挙動が不思議らしい。

例えば「EPA&DHA」の文字列をxss_cleanにかけると「EPA&DHA;」となるらしい。

xss_cleanの該当箇所を抜き出して試してみた。

<?php
$str = 'EPA&DHA';

$hash = '901119URL5918AMP18930PROTECT8198';

$str = preg_replace('|\&([a-z\_0-9]+)\=([a-z\_0-9]+)|i', $hash."\\1=\\2", $str);
echo $str . "\n";

$str = preg_replace('#(&\#?[0-9a-z]{2,})([\x00-\x20])*;?#i', "\\1;\\2", $str);
echo $str . "\n";

$str = preg_replace('#(&\#x?)([0-9A-F]+);?#i',"\\1\\2;",$str);
echo $str . "\n";

$str = str_replace($hash, '&', $str);
echo $str . "\n";

$str = rawurldecode($str);
echo $str . "\n";

実行結果

$ php ci_xss_test.php
EPA&DHA
EPA&DHA;
EPA&DHA;
EPA&DHA;
EPA&DHA;
$str = preg_replace('#(&\#?[0-9a-z]{2,})([\x00-\x20])*;?#i', "\\1;\\2", $str);

ここが原因みたい。
&のあと2文字以上なら「;」挿し込む?
ちょっと意味が分かっていない・・・。

そもそもxss対策を全部自前でやってるのはどうなのかな?

ちょっとぐぐってみたら

CodeIgniterのGlobal XSS Filteringには要注意?

CodeIgniter XSS対策

とか出てきた。

あんまり使わないほうがいいのかなー。