سلام وقت بخیر
بنده قصد چاپ کد قرعه کشی روی محصولاتم را دارم که قرار است مشتریان کد ها را پیامک کنند
سایتم با php هست میخوام تابعی بنویسم که با داشتن تعدادی از کد ها نشه فرمول آن را پیدا کرد و سو استفاده ای رخ نده
کسی میتونه راهنکایی کنه ؟
شما قبل از ایجاد کد در جدول، بررسی کن که وجود نداشته باشه، تابع بررسی کد رو هم به صورتی بنویس که از جدول بررسی کنه، اینطوری تکراری نبودن کد و از واقعی بودن اون مطمین میشی.
روشهای دیگه ای هم هست مثلا استفاده از UUID ولی روش اول پیشنهاد میشه.
اقا مجید، وقتی شما کد رو از پایگاه داده بررسی میکنی، دیگه اهمیتی نداره که کد تولیدی قابل حدس باشه یا نه، یه کد رندوم ساده(هش شده) هم کفایت میکنه.
سلام
از تابع زیر برای ایجاد کد قرعه کشی استفاده نمایید:
طول و نوع رشته خروجی قابل تعریف است.
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.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟