مجید
2 سال پیش توسط مجید مطرح شد
5 پاسخ

ساخت کد قرعه کشی با تابع

سلام وقت بخیر
بنده قصد چاپ کد قرعه کشی روی محصولاتم را دارم که قرار است مشتریان کد ها را پیامک کنند
سایتم با php هست میخوام تابعی بنویسم که با داشتن تعدادی از کد ها نشه فرمول آن را پیدا کرد و سو استفاده ای رخ نده
کسی میتونه راهنکایی کنه ؟


ثبت پرسش جدید
pooya
تخصص : برنامه نویس php
@datamweb 2 سال پیش مطرح شد
0

شما قبل از ایجاد کد در جدول، بررسی کن که وجود نداشته باشه، تابع بررسی کد رو هم به صورتی بنویس که از جدول بررسی کنه، اینطوری تکراری نبودن کد و از واقعی بودن اون مطمین میشی.
روشهای دیگه ای هم هست مثلا استفاده از UUID ولی روش اول پیشنهاد میشه.


مجید
تخصص : برنامه نویس
@majeeddehghan 2 سال پیش مطرح شد
0

در خصوص اینکه شخصی نتونه نمونه کد رو تولید کنه چیکار میشه کرد ؟


pooya
تخصص : برنامه نویس php
@datamweb 2 سال پیش آپدیت شد
0

اقا مجید، وقتی شما کد رو از پایگاه داده بررسی میکنی، دیگه اهمیتی نداره که کد تولیدی قابل حدس باشه یا نه، یه کد رندوم ساده(هش شده) هم کفایت میکنه.


مجید
تخصص : برنامه نویس
@majeeddehghan 2 سال پیش مطرح شد
0

@datamweb
پویای عزیز مهمه
چون وقتی کد تولید میشه و داخل دیتابیس ثبت میشه
ممکنه شخصی قبل از مشتری که فرمول را پیدا کرده کد را حدس بزنه و پیامک کند و اون کد باطل بشه


سید هادی خانیان
تخصص : برنامه نویس PHP
@hadikhanian 2 سال پیش آپدیت شد
1

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

function rand_generator($length = 8, $type = "random")
{
    if ($type == "random") {
        $keyspace = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%&*^(){}[]/?';
    }
    if ($type == "alphanumb") {
        $keyspace = '0123456789abcdefghijklmnopqrstuvwxyz';
    }
    if ($type == "num") {
        $keyspace = '0123456789';
    }
    if ($type == "alpha") {
        $keyspace = 'abcdefghijklmnopqrstuvwxyz';
    }
    $str = '';
    $max = mb_strlen($keyspace, '8bit') - 1;
    if ($max < 1) {
        throw new Exception('$keyspace must be at least two characters long');
    }
    for ($i = 0; $i < $length; ++$i) {
        $str .= $keyspace[random_int(0, $max)];
    }
    return $str;
}

در نهایت توجه داشته باشید طول رشته شما در امنیت آن خیلی تاثیر گذار است.
در قرعه کشی مهم ارائه کالای خریداری شده به همراه کد محصول است پس از قرعه کشی جهت دریافت جایزه است.
پس با نگهداری همه کد های دریافتی در سایت و تعریف سیستمی میتوانید لاگ دریافت هر کد قرعه کشی را نگهداری کنید تا بعدا قابل پیگیری باشد که چه اشخاصی آن کد را ارسال کرده اند.

این مورد در ارتباط با تابع rand خیلی مهم است:

Security warning: rand() is not a cryptographically secure pseudorandom number generator. Look elsewhere for generating a cryptographically secure pseudorandom string in PHP.

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام