Categories
PHP+MySQL

PHPでパスワード生成

PHPで英数字と記号が混在したパスワードを生成する関数。アルファベットの大文字と小文字、数字、記号で生成。

	function createPassword( $len = 8 ){
		$pwdStrings = array( "sletter" => range( 'a', 'z' ),
							 "cletter" => range( 'A', 'Z' ),
							 "number"  => range( '0', '9' ),
							 "symbol"  => array_merge( range( '!', '/' ), range( ':', '?' ), range( '{', '~') ) );
    	$pwd = array();
		while( count( $pwd ) < $len ){

			// 英(大小)数字と記号を必ず入れる
        	if( count( $pwd ) < 4 ){
            	$key = key( $pwdStrings );
            	next( $pwdStrings );
			// 残りはランダムに取得
        	} else {
            	$key = array_rand( $pwdStrings );
        	}
        	$pwd[] = $pwdStrings[$key][array_rand( $pwdStrings[$key] )];
    	}

		// 生成したパスワードの順番をランダムに並び替え
    	shuffle( $pwd );
    	$pwdTxt = implode( $pwd );

    	return( $pwdTxt );
	}

参考元はこちらのページ