• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
تعیین تاریخ اعتبار برای کاربر
#1
سلام خدمت اساتید عزیز ،
ببخشید ، سرچ زدم و چیزی که مناسب کارم باشه پیدا نکردم ،
البته این مورد رو پیدا کردم :
کد:
http://forum.iranphp.org/Thread-جمع-کردن-زمان-ها-با-هم

من نیاز دارم که در یک سیستم برای هر کاربر محدوده زمانی تعیین بشه که بر اساس اون بعضی امکانات در اختیارش قرار بگیره . . .
مثلا امروز کاربر ثبت نام میکنه ، 30 روز دیگه تاریخ اتمام اعتبارش هست ، این تاریخ اعتبار رو چطور میشه محاسبه کرد ؟
یعنی یکجور که امروز رو در دیتابیس قرار بدیم و هربار که کاربر لاگین شد ، این مقدار چک بشه و در صورتی که از 30 روز ( یا تعداد روز های تعیین شده ) بیشتر بود ، بگه به پایان رسیده و ....

ممنون میشم راهنمایی کنید .

و اگر کسی امکانش رو داره کمی در رابطه با توابع تاریخ و زمان توضیح بده ، زیاد باهاشون کار نکردم

سپاس
  پاسخ
تشکر شده توسط :
#2
خودت سئوال خودتو که جواب دادی ...
زمان رو به صورت timestamp در دیتابیس ذخیره کن
هر بار که کاربر لوگین میکنه: timestamp با جمع یک ماه اگر کوچک تر از زمان حالا باشه به کاربر ارور بده .
کد پی‌اچ‌پی:
if($timestamp+30*24*60*60<time())die(); 
  پاسخ
تشکر شده توسط : hidensoft niman2d webnevesht moh3nmir
#3
بسم الله الرحمن الرحیم
سلام
خوب شما یه فیلدی واسه زمان ثبت نام می زارید و مقدارش رو با تابع time() می کنید واین زمانی است که ثبت نام کرده
یه فیلد هم واسه اعتبار کاربر هست : مثلا 30 رو / 60 روز یا هر چی

خوب الان فرض میکنم کاربری می یاد وارد سیستم بشه و یوزرنیم و پسوردشو وارد می کنه / بعد از اینکه یوزرنیم و پسورد تایید شد اعتبار کاربر رو چک کنید
مثلا با این تابع:
کد پی‌اچ‌پی:
function credit($register_time,$credit){
    
$register_time $register_time;
    
$credit $credit*86400;
    
$new_time $register_time+$credit;
    
$time time();
        if(
$time $new_time){
            die(
'Your account expired!');
        }



خوب اگه اعتبارش تموم شده بود پیعام می ده در غیر اینصورت که ادامه می ده

در مورد این تابع: register_time زمانی که کاربر ثبت نام کرده رو می گیره و credit هم مدتی که اکانت کاربر اعتبار داره
ما با این تابع اومدیم زمان ثبت نام و اعتبار اولیه رو گرفتیم
حال می یاییم اعتبار اکانت رو که روزانه است مثلا 30 روز رو به ثانبه تبدیل می کنیم:
کد پی‌اچ‌پی:
    $credit $credit*86400
حال می آییم زمانی که اعتبار کاربر تموم می شه رو بدست می یاریم:
کد پی‌اچ‌پی:
    $new_time $register_time+$credit

توضیح: خوب ما اومدیم اعتبار اولیه رو به ثانیه تبدیل کریم / بعدش اومدیم اعتبار اولیه به ثانیه تبدیل شده رو با زمانی که کاربر ثبت نام کرده و برحسب ثانیه است رو جمع زدیم و در نتیجه:
زمانی که اعتبار کاربر تموم می شه بدست می یاد ( برحسب ثانیه )

خوب الان می یاییم چک میکنیم که آیا کاربر اعتبار داره یا نه / چطوری:
کد پی‌اچ‌پی:
if($time $new_time
در این قسمت در متغیر time$ زمان فعلی بر حسب ثانیه ثبت شده و در متغیر new_time$ هم جمع زمان ثبت نام + مدت اعتبار اولیه
حال این کد می یاد می گه اگه time بزرگتر از new_time بود یعنی اعتبار اکانت تموم شده و خطا می ده
ولی اگه new_time از time بیشتر باشه دستورات اون شرط اجرا نمی شه مابقی دستورات اجرا می شه و می ره به صفحه کاربری خودش

البته تستش نکردم / همین الان نوشتم / ولی نباید مشکلی باشه
  پاسخ
تشکر شده توسط : hidensoft niman2d shgninc webnevesht moh3nmir
#4
این تابع هم بد نیست .

strtotime
  پاسخ
تشکر شده توسط : farhadfery
#5
سلام

اگر تو سیستم تاریخ انقضا رو داشته باشیم . یعنی تو دیتابیس باشه و نیاز به بدست آوردنش نباشه
بخوایم هر وقت به تاریخ اتمام رسید فقط جلوش بنویسه اعتبار به پایان رسیده چه کار باید کرد ؟
ممنون میشم راهنمایی کنید Shy
  پاسخ
تشکر شده توسط :
#6
خب اول چک میکنین که آیا زمانش به پایان رسیده یا نه.که دوستان بالا توضیح دادن چیکار باید کنین.اگه زمانش به پایان رسیده بود یه پیغام بهش میدین دیگه. کاری نداره که.Blush
بنده طعم ايمان را نمي چشد، تا اينكه دريابد آنچه اتفاق نيفتاده است نمي شد كه اتفاق بيفتد؛و آنچه شده و اتفاق افتاده است,نمي شد كه نشود و اتفاق نيفتد....حضرت علي(ع)
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان