ランダムな文字列を作成するこの関数があります:
function genID($length) {
$chars = "0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM@!";
//only allowed chars in the blowfish salt.
$size = strlen($chars); $str = "";
for ($i = 0; $i < $length; $i++)
$str .= $chars[rand(0, $size - 1)]; // strings can be used as char arrays
// Yes, I am aware this salt isn't generated using the OS source.
// use mycrypt_create_iv or /dev/urandom/
return $str;
}
この出力は次のようになります。
@iBUQvldLq
今、私はそのようなものでユーザーリストを持っています:
userid | username | usermail ...
--------------------------------------
@iBUQvldLq test test@gmaik.com ....
誰かが登録すると、新しい文字列をuserid
作成し、新しい文字列をデータベースの行に挿入します。その後、新しい文字列を作成し、作成された新しい文字列が存在しないかどうかを確認します。次のようになります。
function newID()
{
$newid = genID(10);
$query = "SELECT * FROM users WHERE userid = '".$newid."'";
$result1 = mysql_query($query);
$num = mysql_num_rows($result1);
if($num == 1)
{
$newid = genID(10);
return $newid;
}
else
{
return $newid;
}
}
チェック機能をループする方法を知っている人はいますか?
生成関数が新しいランダム文字列を作成し、関数が既に存在するかどうかを確認し、新しいものを作成し、そうでない場合は作成したものを返すことを意味します。
それで、彼が新しいものを作成し、新しいものも同じ other と一致する場合userid
、新しい文字列が他の文字列と一致しないまでループするにはどうすればよいuserid
ですか?
ループのようなもの:
新しい文字列を作成
存在するかどうかを確認する
存在する場合は、新しいものを作成します
新しいものも存在する場合は、新しいものを作成します。
other と一致しないまでuserid
、ループを作成します。何か考えはありますか?
編集済み:
必要に応じてループの新しい関数:
関数 newID(){
$continue = true;
while ($continue) {
$newid = genID(10);
$query = mysql_query("SELECT * FROM users WHERE userid='".$newid."' LIMIT 1");
if (mysql_num_rows($query) != 1)
$continue = false;
return $newid;
}
}
$newid = newID();