私はPHPでランダム化された文字列を作成しようとしています、そして私はこれで全く出力を得ません:
<?php
function RandomString()
{
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$randstring = '';
for ($i = 0; $i < 10; $i++) {
$randstring = $characters[Rand(0, strlen($characters))];
}
return $randstring;
}
RandomString();
echo $randstring;
何がおかしいのですか?
この質問に具体的に答えると、2つの問題があります。
$randstring
はスコープ外です。これが修正されたコードスニペットです。
function generateRandomString($length = 10) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[Rand(0, $charactersLength - 1)];
}
return $randomString;
}
以下の呼び出しでランダムな文字列を出力します。
// Echo the random string.
// Optionally, you can give it a desired string length.
echo generateRandomString();
これは予測可能なランダムな文字列を生成することに注意してください。安全なトークンを作成したい場合は、 この回答を参照してください 。
注:
str_shuffle()
は内部的にRand()
を使用します。これは暗号化の目的には不適切です(例:ランダムなパスワードの生成)。 安全な乱数発生器が欲しい 代わりに。文字を繰り返すこともできません。
_更新_ (これにより任意の長さの文字列が生成されます):
function generateRandomString($length = 10) {
return substr(str_shuffle(str_repeat($x='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', ceil($length/strlen($x)) )),1,$length);
}
echo generateRandomString(); // OR: generateRandomString(24)
それでおしまい。 :)
この質問に対する答えはたくさんありますが、どれも 暗号的に安全な擬似乱数生成器 (CSPRNG)を利用していません。
簡単で、安全で、正しい答えは RandomLib を使うことです、そしてホイールを作り直さないでください。
あなた自身の解決策を発明することを主張するあなたのために、PHP 7.0.0はこの目的のために random_int()
を提供するでしょう。まだPHP 5.xを使用している場合は、 PHP 5 _ random_int()
を作成したので、_にアップグレードする前でも新しいAPIを使用できますPHP 7。
PHPにランダムに整数を安全に生成する は簡単な作業ではありません。本番アルゴリズムを本番環境にデプロイする前に、常に 常駐するStackExchange暗号化の専門家 に確認する必要があります。
安全な整数生成器が配置されているので、CSPRNGを使用してランダムな文字列を生成するのは簡単です。
/**
* Generate a random string, using a cryptographically secure
* pseudorandom number generator (random_int)
*
* For PHP 7, random_int is a PHP core function
* For PHP 5.x, depends on https://github.com/paragonie/random_compat
*
* @param int $length How many characters do we want?
* @param string $keyspace A string of all possible characters
* to select from
* @return string
*/
function random_str($length, $keyspace = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ')
{
$pieces = [];
$max = mb_strlen($keyspace, '8bit') - 1;
for ($i = 0; $i < $length; ++$i) {
$pieces []= $keyspace[random_int(0, $max)];
}
return implode('', $pieces);
}
使用方法 :
$a = random_str(32);
$b = random_str(8, 'abcdefghijklmnopqrstuvwxyz');
デモ : https://3v4l.org/b4PST (PHP 5の失敗は無視してください。これはrandom_compatが必要です)
20文字の16進数の文字列を作成します。
$string = bin2hex(openssl_random_pseudo_bytes(10)); // 20 chars
PHP 7( random_bytes() ):
$string = base64_encode(random_bytes(10)); // ~14 chars, includes /=+
// or
$string = substr(str_replace(['+', '/', '='], '', base64_encode(random_bytes(32))), 0, 32); // 32 chars, without /=+
// or
$string = bin2hex(random_bytes(10)); // 20 chars, only 0-9a-f
@ tasmaniski:あなたの答えは私のために働いた。私は同じ問題を抱えていました、そして私は今まで同じ答えを探している人たちにそれを提案します。これは@tasmaniskiによるものです。
<?php
$random = substr(md5(mt_Rand()), 0, 7);
echo $random;
?>
あなたのアプリケーションによっては(私はパスワードを生成したい)、あなたは使用することができます
$string = base64_encode(openssl_random_pseudo_bytes(30));
Base64であるので、それらは要求された文字と同様に=
または-
を含むかもしれません。あなたはもっと長い文字列を生成し、それからそれらを削除するためにフィルタリングしてトリミングすることができます。
openssl_random_pseudo_bytes
は、phpで適切な乱数を生成するための推奨される方法です。なぜRand
が/dev/random
を使わないのかわからない。
私はこれがゲームに少し遅れるかもしれないことを知っています、しかしここにスクリプトレベルのループやopensslライブラリの使用なしで本当のランダムな文字列を生成する単純なワンライナーがあります。
echo substr(str_shuffle(str_repeat('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', mt_Rand(1,10))),1,10);
パラメータが明確になるように分解する
// Character List to Pick from
$chrList = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
// Minimum/Maximum times to repeat character List to seed from
$chrRepeatMin = 1; // Minimum times to repeat the seed string
$chrRepeatMax = 10; // Maximum times to repeat the seed string
// Length of Random String returned
$chrRandomLength = 10;
// The ONE LINE random command with the above variables.
echo substr(str_shuffle(str_repeat($chrList, mt_Rand($chrRepeatMin,$chrRepeatMax))),1,$chrRandomLength);
このメソッドは、文字リストをランダムに繰り返して結合した文字列をシャッフルし、指定した文字数を返します。
返される文字列の長さをランダム化し、$chrRandomLength
をmt_Rand(8, 15)
に置き換えることで、これをさらにランダム化できます(8〜15文字のランダムな文字列の場合)。
この機能を実装するためのより良い方法は次のとおりです。
function RandomString($length) {
$keys = array_merge(range(0,9), range('a', 'z'));
$key = "";
for($i=0; $i < $length; $i++) {
$key .= $keys[mt_Rand(0, count($keys) - 1)];
}
return $key;
}
echo RandomString(20);
mt_Rand
はphp7の this と this に従ってランダムになります。 Rand
関数はmt_Rand
のエイリアスです。
function generateRandomString($length = 15)
{
return substr(sha1(Rand()), 0, $length);
}
多田!
関数スコープ内の$randstring
は、それを呼び出すスコープと同じではありません。戻り値を変数に代入する必要があります。
$randstring = RandomString();
echo $randstring;
あるいは単に戻り値を直接エコーする:
echo RandomString();
また、あなたの機能には、少し間違いがあります。 forループ内では、各文字が文字列に追加されるように.=
を使用する必要があります。 =
を使用することによって、あなたはそれを追加する代わりにそれぞれの新しい文字で上書きしています。
$randstring .= $characters[Rand(0, strlen($characters))];
まず、使用したいアルファベットを定義します。
$alphanum = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
$special = '~!@#$%^&*(){}[],./?';
$alphabet = $alphanum . $special;
次に、 openssl_random_pseudo_bytes()
を使用して適切なランダムデータを生成します。
$len = 12; // length of password
$random = openssl_random_pseudo_bytes($len);
最後に、このランダムなデータを使ってパスワードを作成します。 $random
内の各文字はchr(0)
からchr(255)
までのいずれかにすることができるので、コードはアルファベットからの文字だけが選択されるように$alphabet_length
で序数を除算した後の余りを使用します。
$alphabet_length = strlen($alphabet);
$password = '';
for ($i = 0; $i < $len; ++$i) {
$password .= $alphabet[ord($random[$i]) % $alphabet_length];
}
代わりに、そして一般的にもっと良いのは、 RandomLib と SecurityLib を使うことです。
use SecurityLib\Strength;
$factory = new RandomLib\Factory;
$generator = $factory->getGenerator(new Strength(Strength::MEDIUM));
$password = $generator->generateString(12, $alphabet);
私はそこで最もポピュラーな関数の性能をテストしました、私の箱の上に32個のシンボルの1000文字列を生成するのに必要な時間は以下の通りです:
2.5 $s = substr(str_shuffle(str_repeat($x='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', ceil($length/strlen($x)) )),1,32);
1.9 $s = base64_encode(openssl_random_pseudo_bytes(24));
1.68 $s = bin2hex(openssl_random_pseudo_bytes(16));
0.63 $s = base64_encode(random_bytes(24));
0.62 $s = bin2hex(random_bytes(16));
0.37 $s = substr(md5(Rand()), 0, 32);
0.37 $s = substr(md5(mt_Rand()), 0, 32);
それが実際にどれだけの期間であったかは重要ではありませんが、どれがより遅く、どれがより高速であるかに注意してください。
32シンボルより短い文字列が必要な場合、MD5の周りのsubstr()が正確さのために追加されました。
答えとして、文字列は連結されずに上書きされ、関数の結果は保存されませんでした。
これは、ランダムな文字列を生成するための最短の方法です。
<?php
echo $my_Rand_strng = substr(str_shuffle("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), -15);
echo substr(md5(Rand()), 0, 7);
echo str_shuffle(MD5(microtime()));
?>
function rndStr($len = 64) {
$randomData = file_get_contents('/dev/urandom', false, null, 0, $len) . uniqid(mt_Rand(), true);
$str = substr(str_replace(array('/','=','+'),'', base64_encode($randomData)),0,$len);
return $str;
}
これは 管理者のソースから取られました :
/** Get a random string
* @return string 32 hexadecimal characters
*/
function Rand_string() {
return md5(uniqid(mt_Rand(), true));
}
管理者 、データベース管理ツールはPHPで書かれています。
Laravel 5フレームワークのヘルパー関数
/**
* Generate a "random" alpha-numeric string.
*
* Should not be considered sufficient for cryptography, etc.
*
* @param int $length
* @return string
*/
function str_random($length = 16)
{
$pool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
return substr(str_shuffle(str_repeat($pool, $length)), 0, $length);
}
非常に簡単な方法の1つは、次のようなことをすることです。
substr(md5(Rand()),0,10);
これは10文字の長さのランダムな文字列を生成します。もちろん、計算面ではもう少し重いと言う人もいるかもしれませんが、最近のプロセッサはmd5またはsha256アルゴリズムを非常に速く実行するように最適化されています。そしてもちろん、Rand()
関数が同じ値を返す場合、結果は同じになり、1/32767の確率で同じになります。セキュリティが問題なのであれば、Rand()
をmt_Rand()
に変更してください。
/**
* @param int $length
* @param string $abc
* @return string
*/
function generateRandomString($length = 10, $abc = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")
{
return substr(str_shuffle($abc), 0, $length);
}
http://www.xeweb.net/2011/02/11/generate-a-random-string-a-z-0-9-in-php/ からのソース
1行.
いくつかのユニークさを持つ巨大な文字列に対しては速い.
function random_string($length){
return substr(str_repeat(md5(Rand()), ceil($length/32)), 0, $length);
}
編集したバージョンの関数は問題なく動作します。1つだけ問題があります。$文字を囲むのに間違った文字を使用したため、 '文字が生成されるランダム文字列の一部になっている場合があります。
これを修正するには、次のように変更します。
$characters = ’0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ’;
に:
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
この方法では囲まれた文字のみが使用され、 '文字は生成されるランダムな文字列の一部にはなりません。
もう一つのワンライナー。文字と数字で10文字のランダムな文字列を生成します。 range
(サイズを設定するために2番目のパラメータを調整する)で配列を作成し、この配列をループしてランダムなascii-char(範囲0〜9またはa〜z)を割り当て、配列を分解して文字列を取得します。
$str = implode('', array_map(function () { return chr(Rand(0, 1) ? Rand(48, 57) : Rand(97, 122)); }, range(0, 9)));
注:PHP 5.3以降でのみ機能します
私はopenssl_random_pseudo_bytesを使った最後のコメントが好きでしたが、望まない文字を削除しなければならなかったので解決策にはなりませんでした。これが私の解決策です...
function rndStr($len = 20) {
$rnd='';
for($i=0;$i<$len;$i++) {
do {
$byte = openssl_random_pseudo_bytes(1);
$asc = chr(base_convert(substr(bin2hex($byte),0,2),16,10));
} while(!ctype_alnum($asc));
$rnd .= $asc;
}
return $rnd;
}
function randomString($length = 5) {
return substr(str_shuffle(implode(array_merge(range('A','Z'), range('a','z'), range(0,9)))), 0, $length);
}
_ php _ にランダムな文字列を生成するもう1つの方法は、次のとおりです。
function RandomString($length) {
$original_string = array_merge(range(0,9), range('a','z'), range('A', 'Z'));
$original_string = implode("", $original_string);
return substr(str_shuffle($original_string), 0, $length);
}
echo RandomString(6);
簡単なコードがあります。
echo implode("",array_map(create_function('$s','return substr($s,mt_Rand(0,strlen($s)),1);'),array_fill(0,16,"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")));
簡単なガイドがあります。
16
を別の値に変更してください。これに代わるより良い代替方法があります、多くはすでに掲示されていますので私はあなたのものだけを修正で返します
<?php
function RandomString()
{
global $randstring ;
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$randstring = '';
for ($i = 0; $i < 10; $i++) {
$randstring .= $characters[Rand(0, strlen($characters))];
}
return $randstring;
}
RandomString();
echo $randstring;
?>
あなたも興味があるかもしれません:
<?php
function RandomString()
{
global $randstring ;
$characters = str_split('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ');
array_filter ($characters,function($var)use($characters,&$randstring){
$randstring .= $characters[Rand(0, count($characters)-1)];
});
return $randstring;
}
RandomString();echo $randstring.'<hr>';
//.. OR ..
$randstring='';echo(RandomString());
?>
または別のもの:
<?php
function s($length){
for($i=0;($i<$length)and(($what=Rand(1,3))and( (($what==1)and($t=Rand(48,57) ))or (($what==2)and ($t=Rand(65,90))) or (($what==3)and ($t=Rand(97,122))) ) and (print chr($t)));$i++);
}
s(10);
?>
<?php
/**
* Creates a random string
*
* @param (int) $length
* Length in characters
* @param (array) $ranges
* (optional) Array of ranges to be used
*
* @return
* Random string
*/
function random_string($length, $ranges = array('0-9', 'a-z', 'A-Z')) {
foreach ($ranges as $r) $s .= implode(range(array_shift($r = explode('-', $r)), $r[1]));
while (strlen($s) < $length) $s .= $s;
return substr(str_shuffle($s), 0, $length);
}
// Examples:
$l = 100;
echo '<b>Default:</b> ' . random_string($l) . '<br />';
echo '<b>Lower Case only:</b> ' . random_string($l, array('a-z')) . '<br />';
echo '<b>HEX only:</b> ' . random_string($l, array('0-9', 'A-F')) . '<br />';
echo '<b>BIN only:</b> ' . random_string($l, array('0-1')) . '<br />';
/* End of file */
PHPネイティブ関数のみを使用してパラメータ化されたワンライナー、PHP 5.1.0以降で動作
str_shuffle(implode('', (array_intersect_key(($map = array_map('chr', array_merge(array_map('mt_Rand', array_fill(0, $length = 25, 48), array_fill(0,$length,57)),array_map('mt_Rand', array_fill(0, $length, 65), array_fill(0,$length,90)),array_map('mt_Rand', array_fill(0, $length, 97), array_fill(0,$length,122))))), array_flip($keys = array_Rand($map, $length))))))
私はこれが複数の答えを持つ古い質問であることを知っていますが、私は私の解決策を投稿しようとすることができます...カスタムのランダムな英数字文字列を生成するためにこの私の関数を使います.
<?php
function random_alphanumeric($length) {
$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ12345689';
$my_string = '';
for ($i = 0; $i < $length; $i++) {
$pos = mt_Rand(0, strlen($chars) -1);
$my_string .= substr($chars, $pos, 1);
}
return $my_string;
}
$test = random_alphanumeric(50); // 50 characters
echo $test;
?>
例(テスト):Y1FypdjVbFCFK6Gh9FDJpe6dciwJEfV6MQGpJqAfuijaYSZ86
あなたが2つ以上のユニークな文字列を必要とするなら、あなたはこれをすることができます...
$string_1 = random_alphanumeric(50);
$string_2 = random_alphanumeric(50);
while ($string_1 == $string_2) {
$string_1 = random_alphanumeric(50);
$string_2 = random_alphanumeric(50);
if ($string_1 != $string_2) {
break;
}
}
echo $string_1;
echo "<br>\n";
echo $string_2;
$ string_1:KkvUwia8rbDEV2aChWqm3AgeUZqyrRbUx2AxVhx5s4TSJ2VwA4
$ string_2:XraO85YfxBBCInafvwipSOJwLmk6JMWiuWOxYQDnXohcn2D8K6
これが助けになれば幸いです。
このPHP関数は私のために働きました:
function cvf_ps_generate_random_code($length=10) {
$string = '';
// You can define your own characters here.
$characters = "23456789ABCDEFHJKLMNPRTVWXYZabcdefghijklmnopqrstuvwxyz";
for ($p = 0; $p < $length; $p++) {
$string .= $characters[mt_Rand(0, strlen($characters)-1)];
}
return $string;
}
使用法:
echo cvf_ps_generate_random_code(5);
上記の議論からいくつかの機能を持つクラス。
$options['numeric'] = true;
$options['uppercase'] = true;
$options['lowercase'] = true;
$new = new RandomString($options);
class RandomString
{
/**
* @var array
*/
private $default = ['numeric' => true, 'uppercase' => true, 'lowercase' => true];
/**
* @var array
*/
private $options;
/**
* array
*/
private $whitelist = ['numeric', 'uppercase', 'lowercase'];
/**
* RandomString constructor.
*
* @param array $options
*/
public function __construct(array $options = [])
{
$this->options = $this->default;
if(!empty($options))
{
$options = array_intersect_key($options, array_flip($this->whitelist));
if(empty($options))
{
$this->options = $this->default;
}else
{
$this->options = $options;
}
}
}
/**
* @return string
*/
private function returnCharacters(){
$options = $this->options;
$numbers = '0123456789';
$uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$lowercase = "abcdefghijklmnopqrstuvwxyz";
$characters = '';
if(isset($options['numeric']) && $options['numeric'] === true){
$characters .= $numbers;
}
if(isset($options['uppercase']) && $options['uppercase'] === true){
$characters .= $uppercase;
}
if(isset($options['lowercase']) && $options['lowercase'] === true){
$characters .= $lowercase;
}
return $characters;
}
/**
* @param $length
* @param $quantity
* @return string
*/
public function randomString($length, $quantity) {
$string = '';
$characters = $this->returnCharacters();
for ($j = 0; $j < $quantity; $j++) {
for($i = 0; $i < $length; $i++){
$string .= $characters[mt_Rand(0, strlen($characters) - 1)];
}
$string .= "\n";
}
return $string;
}
/**
* @return array
*/
public function getOptions()
{
return $this->options;
}
/**
* @return mixed
*/
public function getWhitelist()
{
return $this->whitelist;
}
最後に、私はランダムでユニークな値を得るための解決策を見つけました。
substr(md5(time()), 0, 12)
時間は常にタイムスタンプを返し、それは常にユニークです。あなたはそれを良くするためにmd5と一緒に使うことができます。
次の関数は any lengthの疑似文字列を生成します。
/**
* Returns random string of a given length.
*/
function get_random_string($length) {
$pull = [];
while (count($pull) < $length) {
$pull = array_merge($pull, range(0, 9), range('a', 'z'), range('A', 'Z'));
}
shuffle($pull);
return substr(implode($pull), 0, $length);
}
function getRandomString($length) {
$salt = array_merge(range('a', 'z'), range(0, 9));
$maxIndex = count($salt) - 1;
$result = '';
for ($i = 0; $i < $length; $i++) {
$index = mt_Rand(0, $maxIndex);
$result .= $salt[$index];
}
return $result
}
文字ではなく数字に依存していて、ランダムな出力を単なる数字にしたいのかどうかわからないので、あなたはそれをまったく間違って行っています。関数を宣言する前に変数$randstring
を初期化するのを忘れたにもかかわらず、なぜRand(0, 62)
?を使用しないのですか。
とにかくPHPはこの目的のために非常に便利な機能を提供していますstr_shuffle()
、これはあなたの必要性に合った例です。
<?php
function randomString() {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
return str_shuffle($characters);
}
echo randomString();
これが私がどのようにして真のユニークなランダムキーを得るのかです:
$Length = 10;
$RandomString = substr(str_shuffle(md5(time())), 0, $Length);
echo $RandomString;
Time()はUnixのタイムスタンプであり、上記の他の乱数と比較して常に一意であるため使用できます。その後、そのmd5sumを生成し、生成された MD5 文字列から必要な長さにすることができます。この場合、私は10文字を使っています、そしてもっとユニークにしたいのならもっと長い文字列を使うことができます。
これが役に立つことを願っています。
function randomString() {
return md5(Rand(100, 200));
}
function strgen($len) {
$buf = '';
for ($i = 0; $i < $len; $i++) {
$j = mt_Rand(0, 61);
if ($j >= 36) {
$j += 13;
} else if ($j >= 10) {
$j += 7;
}
$buf .= chr(48 + $j);
}
return $buf;
}
シンプルでエレガント。
1行の解決策は
str_shuffle(base64_encode(date('mdyhis').date('mdyhis')));
これがワンライナーです。少なくとも1つの小文字、1つの大文字、1つの数字、および1つの記号が表示されます。暗号的に安全であるとされているrandom_int
を使用します。私はこれが安全だとは主張していません。私はセキュリティの専門家ではありません。
コピー&ペーストするには:
for ($chars = array('0123456789','abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ','!@#$%^&*()_+-='),$randomString="",$i=0;$i<12;$i++)$randomString .= substr($chars[$i%4], random_int(0,strlen($chars[$i%4])), 1);
そしてもう少し詳しく説明します。
for (
$chars = array('0123456789','abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ','!@#$%^&*()_+-='),
$randomString="",
$i=0;
$i<12;$i++)
$randomString .=
substr($chars[$i%4],
random_int(0, strlen($chars[$i%4])), 1);
ループ内で$chars[$i%4]
を使用して、ランダムにする文字のセットを選択します。配列内の各文字セットから複数の文字が保証されます。
確実に改善することができます(そこにある各文字セットの数を無作為化する)が、私の目的にはそれで十分です。
コードには3つの問題があります。
=
を.=
に置き換えます。Rand
は暗号学的に安全な擬似乱数を生成しません。代わりにrandom_int
を使用してください。下記参照:
<?php
function RandomString()
{
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$randstring = '';
for ($i = 0; $i < 10; $i++) {
$randstring .= $characters[random_int(0, strlen($characters))];
}
return $randstring;
}
$randstring = RandomString();
echo $randstring;
function randomName($length = 8) {
$values = array_merge(range(65, 90), range(97, 122), range(48, 57));
$max = count($values) - 1;
$str = chr(mt_Rand(97, 122));
for ($i = 1; $i < $length; $i++) {
$str .= chr($values[mt_Rand(0, $max)]);
}
return $str;
}
こんにちはあなたはこれを試すことができます
<?php
function random($len){
$char = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
// ----------------------------------------------
// number of possible combinations
// ----------------------------------------------
$pos = strlen($char);
$pos = pow($pos, $len);
echo $pos.'<br>';
// ----------------------------------------------
$total = strlen($char)-1;
$text = "";
for ($i=0; $i<$len; $i++){
$text = $text.$char[Rand(0, $total)];
}
return $text;
}
$string = random(15);
echo $string;
?>
md5を時間どおりに使用することもできますが、注意が必要です。microtime()
関数ではなくtime()
関数を使用する必要があります。
<?php
$string = md5( microtime() );
echo $string;
?>
この方法では、作成中に文字の長さを選択できます。
<?php
$random_string="";
$character_count=12;
for($i=1; $i<=$character_count; $i++)
{
$random_string.=chr(Rand(97,122));
}
echo $random_string;
?>