phpでランダムなパスワードを生成

使用例

//パスワード生成クラス読み込み
require_once ‘My/Password.php’;

//デフォルトは8桁のパスワードが生成されます
$password = My_Password::getPassword();
var_dump($password);

//『32桁、小文字英字のみ』のパスワード生成
$password = My_Password::getPassword(32, ‘small’);
var_dump($password);

出力結果は以下のようになります。

string(8) “txRC4hLX”
string(32) “zcyhuypsvbjgrfiacxrfhwusuiuulllb”

説明
int $lenght

パスワードの桁数 (デフォルト 8桁 )
string $mode

文字列の種類を指定 (デフォルト 大小文字英数字 )
small – 小文字英字
large – 大文字英字
smallalnum – 小文字英数字
largealnum – 大文字英数字
num – 数字
alphabet 大小文字英字
alnum – 大小文字英数字
パスワード生成クラスMy_Passwordソース

class My_password
{

/**
* ファイル名・ユニークID・パスワード生成
*
* @param integer $length 文字列長 default:8 (1-256)
* @param string $mode モード default:’alnum’
* @return array
*/
public static function getPassword($length = 8, $mode = ‘alnum’)
{
if ($length < 1 || $length > 256) {
return false;
}
$smallAlphabet = ‘abcdefghijklmnopqrstuvwxyz’;
$largeAlphabet = ‘ABCDEFGHIJKLMNOPQRSTUVWXYZ’;
$numeric = ‘0123456789’;

switch ($mode) {

// 小文字英字
case ‘small’:
$chars = $smallAlphabet;
break;

// 大文字英字
case ‘large’:
$chars = $largeAlphabet;
break;

// 小文字英数字
case ‘smallalnum’:
$chars = $smallAlphabet . $numeric;
break;

// 大文字英数字
case ‘largealnum’:
$chars = $largeAlphabet . $numeric;
break;

// 数字
case ‘num’:
$chars = $numeric;
break;

// 大小文字英字
case ‘alphabet’:
$chars = $smallAlphabet . $largeAlphabet;
break;

// 大小文字英数字
case ‘alnum’:
default:
$chars = $smallAlphabet . $largeAlphabet . $numeric;
break;
}

$charsLength = strlen($chars);

$password = ”;
for ($i = 0; $i < $length; $i++) { $num = mt_rand(0, $charsLength - 1); $password .= $chars{$num}; } return $password; } } また、PEARにも類似のライブラリがありますのでこちらもご参考下さい。 http://pear.php.net/package/Text_Password 参照元:http://www.plusmb.jp/2009/02/06/2439.html

コメントする

メールアドレスが公開されることはありません。

CAPTCHA