مشکل ساخت عدد تصادفی در php

piuploa

تازه وارد
13/3/14
33
0
6
با سلام خدمت دوستان گرامی

میخواستم یه کدی بزارم توی سایتم که عددی تصادفی و غیرتکراری بسازه

واسه کد رهگیری تراکتش بعد از پرداختش تا هم در table ذخیره بشه هم مشتری بعدا بتونه با کد رهگیریش , رهگیری کنه.

باتشکر

 

zegersot

کاربر عضو
23/4/08
626
0
16
اطلاعاتتون نصب به php چقدره؟

برای این کار یه تیبل میخوای که کدایی که ساخته میشه رو ذخیره کنی

و بعد2 تابع بنویسی

1- تایع ای که کد راندوم بسازه

2- تابع بازگشتی که کد غیرتکراری رو بده بیرون

فک نکنم کسی باشه اینو واستون انجام بده

ولی اگه خودتون اطلاعی دارید سئوال بپرسید یا حداقل 50% کار رو انجام بدید ما واستون کاملش کنیم

موفق باشی

 

parsaphp

تازه وارد
25/2/14
19
0
1
باید با تابع rand یک عدد تولید بشه و در بانک ذخیره بشه و وقتی کد جدید تولید میشه با کد های قبلی که ساخته شده و در بانک اطلاعاتی ذخیره شده مقایسه بشه که تکراری هست یا نه. اگه تکراری نبود که ادامه کار و اگه تکراری بود یه کد تصادفی دیگه تولید بشه.

 

piuploa

تازه وارد
13/3/14
33
0
6
سلام عزیز

باتشکر که جواب دادی

میشه کدش رو بزاری تا دیگران بدون تفکر و سریع کارشون راه انداخته شه؟؟؟

 

parsaphp

تازه وارد
25/2/14
19
0
1
کد:
for($k=0; ; $k++){

    $random_code=rand(100000,999999);
    $select = mysql_query("select * from `table` where `col` = '$random_code'");
        $Row = mysql_fetch_array($select);
        $col = $Row['col'];
    if($col!=$random_code){
        echo $random_code;
        mysql_query("INSERT INTO table VALUES ('NULL','$random_code')");
        break;
    }
}
 

william

کاربر عضو
15/7/13
170
0
16
برای ساخت عدد تصادفی میتونید از time-stamp استفاده کنید. به وسیله تابع time در php

اینجوری دیگه نیازی به چک کردن تکراری بودن عدد نیست.

 

parsaphp

تازه وارد
25/2/14
19
0
1
دوستمون william درست میفرمایند. ولی چون به برای کد رهگیری میخواد استفاده بشه بهتره با رندم کار بشه که هر کسی نتونه کد رهگیری با timestamp تولید کنه. (مورد امنیتی)

 

william

کاربر عضو
15/7/13
170
0
16
بله، البته میشه اون مشکل رو هم یه کاری کرد. مثلا یه همچین تابعی میشه نوشت:


کد:
function code_generator() {
    $time = time();
    $random_string = str_shuffle('1234567890ABCDEF');
    $code = hash('md5', $time.$random_string);
    return strtoupper($code);
}
فقط تعداد کاراکترش یه مقدار زیاد میشه. اگه دوست دارید فقط عدد باشه میشه کد رو از مبنای 16 به 10 تبدیل کرد:


کد:
echo base_convert(code_generator(), 16, 10);
فقط تنها مشکل زیاد شدن تعداد کاراکتر هست.