کدی برای انتخاب یک کلمه بطور تصادفی !

fahimehf

Member
سلام

میخوام برای نام عبور و کلمه رمز سیستم اطلاعات دانشجویان یه کدی بنویسم که بطور تصادفی و غیرتکراری این دو کلمه رو ایجاد کنه.
برای شروع به راهنمایی اساتید نیاز دارم.
با تشکر
 

jalilvand

Member
برای اینکه غیر تکراری باشه می تونی از زمان+ip+یه عدد رندوم استفاده کنی، بعد با یه الگوریتم encodeش کنی که کاراکتراش کم شه. مثلا md5 کنی و رندوم 6 کاراکترشو substr کنی.
 

hidensoft

Member
این برای پسورد هست با یکم تغییر می تونی برای یوزر نیم هم درستش کنی !
PHP:
<?php

function passwordgenerator()
{    
    $password = "";
    $loop = 0;
    while ($loop < 12)
    {
        $randomchar = chr(mt_rand(35, 126));
        if (!strstr($password, $randomchar))
        {
            $password .= $randomchar;
            $loop++;
        }
    }
    return $password;
}
$pass = passwordgenerator();
echo "$pass";
?>

موفق باشید
 

fahimehf

Member
برای
PHP:
mt_rand( 10000, 0xffff )
میشه محدوده عبارت رو تعیین کرد.
اما آیا این قابلیت برای
PHP:
uniqid('')
وجود داره من که ندیدم !

و یه سوال :
اگر بخواید این دو رو مقایسه کنید چطور تعریفشون می کنید؟
 
آخرین ویرایش:

tabib_m

Member
کار تابع mt_rand اینه که یک عدد رو به صورت تصادفی انتخاب میکنه. و ممکنه در اجرا های متعدد ، این عدد تکرار بشه.
اما
کار تابع uniqid اینه که یک رشته تصادفی غیر تکراری رو ارائه میده. البته فکر میکنم اگر بخوایم منطقی بحث کنیم، متوجه خواهیم شد که به دست اوردن یک رشته ی غیر تکراری (در دنیا) غیر ممکنه. ولی خوب این تابع ، تا جای ممکن امکان اشتباه رو حذف کرده، من که تا حالا ازش اشتباهی ندیدم! حداقل میتونم تضمین کنم که روی یک سرور هیچ وقت یک رشته رو دو بار ارائه نمیکنه!

خوب طبیعتا وقتی ما میخوایم یک رشته ی غیرتکراری به دست بیاریم، با تعیین محدوده ی عبارت، داریم کاری میکنیم که از هدفمون ، یعنی "عدم تکرار" دور بشیم. پس طبیعتا برای رسیدن به یک رشته ی غیر تکراری ، تعیین محدوده بی معنیه.

فکر کنم دیگه نیازی به جواب سؤال هم نباشه :)

موفق باشید.
 

hidensoft

Member
سلام.
نیازی به اینقد دردسر نیست
نیاز به امنیت که هست ! می تونی کد رو امتحان کنی. من این کد رو ننوشتم ولی خب کارشم درسته :D
استفاده از روشی که tabib_m گفت خوبه. مثالی از منوال :
PHP:
<?php
// no prefix
// works only in PHP 5 and later versions
$token = md5(uniqid());

// better, difficult to guess
$better_token = md5(uniqid(rand(), true));
?>

توضیحات بیشتر در باره uniqid
 

جدیدترین ارسال ها

بالا