رفتن به مطلب
iranwebserver
piuploa

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

پست های پیشنهاد شده

با سلام خدمت دوستان گرامی

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

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

باتشکر

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

اطلاعاتتون نصب به php چقدره؟

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

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

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

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

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

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

موفق باشی

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

باید با تابع rand یک عدد تولید بشه و در بانک ذخیره بشه و وقتی کد جدید تولید میشه با کد های قبلی که ساخته شده و در بانک اطلاعاتی ذخیره شده مقایسه بشه که تکراری هست یا نه. اگه تکراری نبود که ادامه کار و اگه تکراری بود یه کد تصادفی دیگه تولید بشه.

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

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;
}
}

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

برای ساخت عدد تصادفی میتونید از time-stamp استفاده کنید. به وسیله تابع time در php

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

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

دوستمون william درست میفرمایند. ولی چون به برای کد رهگیری میخواد استفاده بشه بهتره با رندم کار بشه که هر کسی نتونه کد رهگیری با timestamp تولید کنه. (مورد امنیتی)

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

بله، البته میشه اون مشکل رو هم یه کاری کرد. مثلا یه همچین تابعی میشه نوشت:

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);

فقط تنها مشکل زیاد شدن تعداد کاراکتر هست.

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

برای ارسال دیدگاه یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید دیدگاهی ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در سایت ما ثبت نام کنید. عضویت خیلی ساده است !

ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید

ورود به حساب کاربری

×