راکت

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

5 پاسخ

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

ثبت پرسش جدید

پاسخ‌ها

5
pooya
pooya
@datamweb

تخصص: برنامه نویس php

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

مجید
مجید
@majeeddehghan

تخصص: برنامه نویس

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

شاید پاسخ شما همین‌جا باشد

pooya
pooya
@datamweb

تخصص: برنامه نویس php

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

مجید
مجید
@majeeddehghan

تخصص: برنامه نویس

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

سید هادی خانیان
سید هادی خانیان
@hadikhanian

تخصص: برنامه نویس PHP

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

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.

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

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