PHP・MySQL

WordPressで全体にパスワードをかけたいとき

WordPressでサイトを構築していて、記事毎ではなく、サイト全体にパスワードをかけたい場合

プラグインでは以下の二つがお薦め。

ac_authenticator

こちらは管理パスがそのままパスワードになる。

wp-password

こちらは管理パスとは別にパスワードの設定が可能。

個別のページやワイルドカード、ディレクトリーでパスワードの有無を設定できるから、管理ページを除外したり一部のみフリーで公開することができる。

Mail_Queueで文字化けするとき(Subject編)

以前、Mail_Queueを使ってメールを送る時、本文内の特定の文字から文字化けすることがあると書いたが、同様にメールのタイトル(Subject)が文字化けすることがある。

本文同様、きちんとコード変換して渡しているのに文字化けする場合、Mail_Queue のBody.phpが原因になっていることがある。

具体的には、Mail/Queue/Body.phpの284行目あたりにある(前回のちょっと上)
function getHeaders()
ここのstripslashesを外す。

$tmp_headers[$key] = stripslashes($value);

となっている行を

$tmp_headers[$key] = $value;

としてやるだけでいい。

タイトルの文字化けで悩んだ時はお試しを。

Mail_Queueで文字化けするとき

Mail_Queueを使ってメールを送る時、特定の文字から文字化けすることがある。

きちんとコード変換して渡しているのに文字化けする場合、Mail_Queue のBody.phpが原因になっていることがある。

具体的には、Mail/Queue/Body.phpの300行目あたりにある
function getBody()
ここのstripslashesを外す。

return stripslashes($this->body);

となっている行を

return $this->body;

としてやるだけでいい。

文字化けで悩んだ時はお試しを。

PHP/SWF Chartsで星形のグラフを作成する。

qolplus.gif

Digital Gateで運営している、車椅子やバギー、福祉製品を選ぶためのクチコミ情報&製品比較サイト『QOL+(Quality of Life Plus)』では「快適性」「耐久性」「価格」「操作性」「デザイン」の5つの項目のクチコミ評価をグラフで表示させている。

使用しているライブラリは以前紹介した『PHP/SWF Charts』

設定は折れ線グラフや棒グラフと同様

$chart[‘chart_type’] = “polar”;

としてやるだけでいい。

PEAR Image_Graphでグラフ作成(その2)

データセットの方法

$Dataset =& Image_Graph::factory('random', array(31, 0, 10, false));

ランダム発生

$img_text = mb_convert_encoding('とあるサイト',"UTF-8","euc");
$Dataset->setName($img_text);

凡例

$Line =& Image_Graph::factory('Image_Graph_Line_Solid', "red");

線グラフの線オブジェクトを生成(赤い実線)

Line->setThickness(1);

線の太さ1ピクセル

$Marker =& Image_Graph::factory('Image_Graph_Marker_Array');

マーカーオブジェクト(線上の印)

$BoxMarker =& Image_Graph::factory('Image_Graph_Marker_Box');

マーカー生成

$BoxMarker->setSize(3);

マーカー/サイズ

$BoxMarker->setLineColor("red");

マーカー/枠色

$BoxMarker->setFillColor("red");

マーカー/中色

$Marker->add($BoxMarker);
$Plot =& $Plotarea->addNew('line', array(&$Dataset));

エリアにラインとして描画

$Plot->setLineStyle($Line);

線のスタイルは上の設定($Line)

$Plot->setMarker($Marker);

$Markerオブジェクトをセット。

別の方法

$Dataset2 =& Image_Graph::factory('dataset');
$Dataset2->addPoint('1', 3);
$Dataset2->addPoint('2', 10);
$Dataset2->addPoint('3', 12);
$Dataset2->addPoint('4', 10);
$Dataset2->addPoint('5', 15);
$Dataset2->addPoint('6', 16);
$Dataset2->addPoint('7', 20);
$Dataset2->addPoint('8', 15);
$Dataset2->addPoint('9', 9);
$Dataset2->addPoint('10', 16);

データを作成

$img_text = mb_convert_encoding('別のサイト',"UTF-8","euc");
$Dataset2->setName($img_text);

凡例

$Line2 =& Image_Graph::factory('Image_Graph_Line_Solid', "blue");

線グラフの線オブジェクトを生成(青い実線)

$Line2->setThickness(1);

線の太さ1ピクセル

$Plot2 =& $Plotarea->addNew('line', array(&$Dataset2));

エリアにラインとして描画

$Plot2->setLineStyle($Line2);

 

PEAR Image_Graphでグラフ作成(その1)

PEARのライブラリを使うと折れ線グラフも簡単に作ることができる。

使い方は簡単。

require_once 'Image/Graph.php';

ライブラリ読み込み

$w = 600;
$h = 300;

画像サイズを設定

$Graph =& Image_Graph::factory('graph', array($w, $h));

これがキャンバスになる

■日本語フォントを使いたい時は、フリーの日本語フォントをサーバー上に置いて指定する。

$Font =& $Graph->addNew('font', '../../font/ipam.ttf');

フォントオブジェクトを作成

$Font->setSize(10);

フォントサイズも指定できる(10ピクセル)

$Graph->setFont($Font);

キャンバスにフォントを適用

■タイトルとグラフを作成するエリアを設定

$img_text = mb_convert_encoding('日別推移',"UTF-8","euc");

日本語を使う時はUTF-8にするのがポイント

コンバートしてあげればいい

$Graph->add(
Image_Graph::vertical(
Image_Graph::factory('title', array($img_text, 12)),
タイトルエリアは上グラフ関連エリア下
文字サイズ12ピクセル
Image_Graph::vertical(
$Plotarea = Image_Graph::factory('plotarea'),
グラフエリアは上
$Legend = Image_Graph::factory('legend'),
凡例エリアは下
90
グラフの占める縦のパーセンテージ
),
20
タイトルが占める縦のパーセンテージ
)
);
$Plotarea->setPadding(array("top"=>1,"right"=>2,"bottom"=>2,"left"=>2));

グラフ描画エリアのpadding設定はこんな感じ

$Legend->setPlotarea($Plotarea);

データと凡例の関係付け

$Legend->setPadding(0);

Legend の padding

$Plotarea->setFillColor('gray@0.05');

グラフエリアの背景色/透明度

$GridY =& $Plotarea->addNew('line_grid', null, IMAGE_GRAPH_AXIS_Y);
$GridY->setLineColor('gray@0.1');
$GridX =& $Plotarea->addNew('bar_grid', null, IMAGE_GRAPH_AXIS_X);
$GridX->setLineColor('gray@0.1');

升目のグリッド指定

サンプル

http://digital-gate.com/graph/image_graph.php

file_put_contentsをPHP4環境で使う

PHP4のサポートは既に終了しており、全面的にPHP5に移項することが望ましいが、
環境によってはPHP4のままの場所も存在する。

php5になりfile_put_contentsという関数が用意され、
ファイルの保存にとても便利になった。

この関数をPHP4の環境下で使いたい場合、
PEAR のPHP/Compat.phpライブラリを使用すると簡単。

具体的にはPHP/Compat.phpをセットし、読み込むだけでいい。

こんな感じ。

require_once ‘PHP/Compat.php’;
PHP_Compat::loadFunction(‘file_put_contents’);

グラフ生成ライブラリを使う「PHP/SWF Charts編」(その1)

PHP/SWF Charts http://www.maani.us/charts/index.php

PHP/SWF ChartsはFLASHでグラフを出力するライブラリ
視覚的に見栄えのするグラフが簡単に作れる。
スクリプトはPHPを使用。

上記サイトからライブラリをダウンロード
charts.zip他3種類から好きなものを選択。

解凍するとcharts Folderというフォルダができる。
この中にある
charts.swf
charts.php
charts_library(フォルダ)
が必要なので、charts Folderを「charts」などに変えてそのままサーバーにアップするといい。

MySQLで複数のカラムの最大値を取得したいとき

テーブル内で1つのカラムに対しての最大値や最小値が欲しい場合、
max(カラム名)やmin(カラム名)として得ることは多い。

では、1つのレコードに対し、カラム1,カラム3,カラム3の中の最大値が欲しい場合はどうするか。

この場合、3つの値を取得してから比較することもできるが、
GREATESTを使うとそのまま最大値を得ることができる。

ちなみに、最小値はLEASTで得られる。