_onichannn

【PHP】用意した文字をランダムに組み合わせたパスワードを生成する。

めも。

// パスワードの長さを指定
$length = 6;
// 使用する文字を定義
$strList = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
$splitStr = str_split($strList);
// パスワードを生成
for($i = 0; $i < $length; $i++) {
	$pwd[] = $splitStr[array_rand($splitStr, 1)];
}
$res = implode('', $pwd);

var_dump($res);

↓

string(6) "dLLiTU"

 

【PHP】指定ディレクトリに一時ファイルを生成する。

めも。

$tmpFilePath = tempnam(sys_get_temp_dir(), 'tmp');

var_dump($tmpFilePath);

↓

string(14) "/tmp/tmpe4zqQd"

ちなみに第1引数のディレクトリが存在しなかった場合は自動的にPHPが用いる一時ファイル保存ディレクトリが設定されるため、nullを渡しても動作する。
第2引数のファイル名プレフィックスは指定しないと動作しないので注意。

 

【PHP】システムが用いる一時ファイル保存先ディレクトリを取得する。

めも。

$tmpDir = sys_get_temp_dir();

var_dump($tmpDir);

↓

string(4) "/tmp"

 

【PHP】ファイルをzipで圧縮して出力する。

めも。

// zipクラスのインスタンスを生成
$zip = new ZipArchive();

// 出力時のファイル名
$outFileName = 'hoge.zip';

// 作業ファイルパスを生成
$tmpFilePath = tempnam(sys_get_temp_dir(), 'tmp');

// 作業ファイルをオープン
$result = $zip->open($tmpFilePath, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE);
if($result !== true) {
	return false;
}

// 圧縮するファイルを定義
$addFilePath = file_get_contents('/path/to/file.ext');
$addFileName = 'file.ext';
// zipファイルに追加(繰り返せば複数ファイル追加可能)
$zip->addFromString($addFileName , $addFilePath);
// ストリームを閉じる
$zip->close();

// ブラウザに出力
header('Content-Type: application/octet-stream; name="'.$outFileName.'"');
header('Content-Disposition: attachment; filename="'.$outFileName.'"');
header('Content-Length: '.filesize($tmpFilePath));
echo readfile($tmpFilePath);
// 一時ファイルを削除
unlink($tmpFilePath);
die();

 

【PHP】QRコードを生成する。

メモ。

大前提としてphp-gdのライブラリが必須。※image関数を用いるため。

まず下記サイトよりライブラリをダウンロード

http://pear.php.net/package/Image_QRCode/download

ダウンロードしたファイルを解凍し、下記ディレクトリをサーバーにアップロード

/data
/Image
/imagedata

下記ファイルをスクリプト中で読み込む

require_once('/Image/QRCode.php');

※「/data」や「/imagedata」内のファイルをQRCode.phpから参照出来るように若干修正が必要な場合あり。

準備が整ったら下記のようにして使う。

$url = 'http://www.yahoo.co.jp';
// QRコードを生成
$qr = new Image_QRCode();
$image = $qr->makeCode(htmlspecialchars($url, ENT_QUOTES), array('output_type' => 'return'));

ここでは第3引数を渡しているが、もし渡さなかった場合はその場でQRコードがブラウザに出力される。
output_typeにreturnを指定してやると関数が画像リソースを返してくれるので、あとはバッファに溜め込み変数で受け取ったり、他の画像関数に投げたり自分で好きに調理することが可能となる。

 

【PHP】imagejpeg()といったGD関数の出力結果画像を変数に取得する。

めも。

$image = imagecreatetruecolor(120, 20);

ob_start();
imagejpeg($image);
$imageData = ob_get_contents();
ob_end_clean();

$base64 = base64_encode($imageData);

といった具合にob系の関数を駆使すると実現可能。

 

【CentOS】php-gdのインストール手順まとめ。

自分用。

1, yum list でphp-gdがあることを確認

yum list | grep php-gd

2, yumでphp-gdをインストール

yum install php-gd.i686

3, 下記のファイルを生成してエクステンションを読み込む

cd /etc/php.d
vi gd.ini

※下記1行を記述

extension=gd.so

4, apacheを再起動

service httpd restart

5, 最後にphpinfo()やらphp -mやらでgdの項目を確認できればインストールは無事完了。

 

【PHP】bit.lyの短縮URLを生成する関数を作った。

めも。

function createShortedByBitly($url) {
	// クエリストリングを生成する
	$q = array(
		'login' => _BITLY_USERNAME_,
		'apiKey' => _BITLY_API_KEY_,
		'longUrl' => $url
	);
	$params = '?'.http_build_query($q);
	// リクエストURLを生成
	$requestUrl = 'https://api-ssl.bitly.com/v3/shorten'.$params;
	// 結果を取得
	$json = @json_decode(file_get_contents($requestUrl));
	// リクエストに失敗した場合そのままのURLを返却する
	if($json->status_code != 200) {
		return $url;
	}
	return $json->data->url;
}