PDA

View Full Version : ثبت تاریخ انقضای اکانت یک کاربر بر اساس روز و ایجاد روز شمار



saeed-71
پنج شنبه 22 خرداد 1393, 19:08 عصر
سلام.
من میخوام وقتی کاربر اکانتشو شارژ میکنه تایخ انقضاشو تو دیتابیس ثبت کنم و تو پنلش نشون بدم که مثلا چند رو رو تا تاریخ انقضای اکانت شما مونده
چجوری این کار رو کنم؟

cpuram
پنج شنبه 22 خرداد 1393, 20:12 عصر
تو جدول user یه فیلد بزار که مدت زمان انقضا ثبت شده مثلا 30 روز بعد با cron job روزی یه باز ازش کم کن.

saeed-71
پنج شنبه 22 خرداد 1393, 21:20 عصر
هر شب ساعت 12 این کار رو کنم؟
با cron job کار نکردم!چجوریه؟

cpuram
پنج شنبه 22 خرداد 1393, 22:21 عصر
هر موقع دوست داری ولی 12 شب منطقی تره.
یه فایل php بساز که وصل میشی به دیتابیس و هر بار که اجرا میشه یکی کم میکنه.حالا این فایل رو از توی پنل مدیریت هاست میدی به کرون جاب که خودش روزی یه بار اجراش کنه همین.

Mohammadsgh
پنج شنبه 22 خرداد 1393, 23:30 عصر
راههای منطقی تری هم هست.cron jobs برای خود هاسته.پیشنهاد میکنم از راه بهتری استفاده کنید:لبخندساده:

cpuram
جمعه 23 خرداد 1393, 00:29 صبح
راههای منطقی تری هم هست.cron jobs برای خود هاسته.پیشنهاد میکنم از راه بهتری استفاده کنید:لبخندساده:
خوب پیشنهادت رو بگو :لبخند:

Mohammadsgh
جمعه 23 خرداد 1393, 12:01 عصر
یه فیلد تو جدولت درست کن به نام expire حالا هر زمانی کاربر اکانتشو شارژ میکنه یه ماه به اکانتش اضافه بشه.واسه نمایش هم کافیه تو پنل کاربر تاریخ انقضا رو از دیتابیس بخونه از تاریخ امروز کم کنه باقیمانده میشه مهلت اکانت. واسه محدودیت کاربر هم کافیه اونجاهایی که کاربر با اکانت مجازه کافیه شرط بزاره تاریخ امروز از تاریخ انقضا داخل دیتابیس بزرگتر نباشه وگرنه بهش اجازه دسترسی نده و اونو به صفحه شارژ اکانت ریدایرکت کنه کدی که خودت بنویسی بهینه تره و بیشتر بهش اعتماد داری تا cron jobهاست بدیش این رو تو ویندوز نمیتونی تست کنی:لبخندساده:

MMSHFE
جمعه 23 خرداد 1393, 12:07 عصر
البته بجای Cron Jobs توی ویندوز Task Scheduler رو داریم.

Mohammadsgh
جمعه 23 خرداد 1393, 12:14 عصر
یکی از کاربردهای cron jobs برای اجرای اسکریپت در زمان خاصه

saeed-71
جمعه 23 خرداد 1393, 12:18 عصر
خوب چجوری بگم مثلا 30 روز رو به timestamp تبدیل کنه؟
تاریخ امروزو که با time() میگیرم.

MMSHFE
جمعه 23 خرداد 1393, 12:24 عصر
خودتون انجام بدین:

// next 30 days
$future = time() + 30 * 24 * 60 * 60; // or time() + 30 * 86400

cpuram
جمعه 23 خرداد 1393, 12:24 عصر
یه فیلد تو جدولت درست کن به نام expire حالا هر زمانی کاربر اکانتشو شارژ میکنه یه ماه به اکانتش اضافه بشه.واسه نمایش هم کافیه تو پنل کاربر تاریخ انقضا رو از دیتابیس بخونه از تاریخ امروز کم کنه باقیمانده میشه مهلت اکانت. واسه محدودیت کاربر هم کافیه اونجاهایی که کاربر با اکانت مجازه کافیه شرط بزاره تاریخ امروز از تاریخ انقضا داخل دیتابیس بزرگتر نباشه وگرنه بهش اجازه دسترسی نده و اونو به صفحه شارژ اکانت ریدایرکت کنه کدی که خودت بنویسی بهینه تره و بیشتر بهش اعتماد داری تا cron jobهاست بدیش این رو تو ویندوز نمیتونی تست کنی:لبخندساده:
ممنون.
تو ویندوز هم میشه ولی نیازیم نیست دستی ران کنی چن بار کافیه.
cron job هم ماله هاست نیست قابلیت سیستم عامل لینوکسه.پس خیالت راحت.

Mohammadsgh
جمعه 23 خرداد 1393, 12:51 عصر
یه راهشم اینه


date_default_timezone_set('Asia/Tehran');
$time = mktime() + 2592000;
$expire=date('Y/m/d H:i', $time);

saeed-71
جمعه 23 خرداد 1393, 15:27 عصر
من هم تاریخ انقضا و هم تاریخ امروز رو با timestamp میگیرم.

حالا برای تبدیلش به تعداد روز باقی ماندهم میام



$now = time();

$expire = $_SESSION['dore'];

$baghimande = $now - $expire;

$ruz = $baghimande/86400;

echo $ruz;


یه عدد اعشار به دست میاد.مثلا میشه 4 روز و خوردی.چجوری رندش کنم؟مثلا 5 روز مونده رو میخوام همون 5 روز نشون بده نه 4 روز و خوردی

SadeghPro19
جمعه 23 خرداد 1393, 16:11 عصر
با این تابع میتونید اینکار رو انجام بدید.

;()round

(http://www.php.net//manual/en/function.round.php)در ضمن گوگل و جستجو هم چیز بدی نیست.:چشمک:

saeed-71
جمعه 23 خرداد 1393, 16:32 عصر
رند میزنه چهار روز دیگه ولی من میخوام پنج روزو نشون بده.به خاطر همین پرسیدم

SadeghPro19
جمعه 23 خرداد 1393, 16:53 عصر
خب میتونی از تابع ceil استفاده کن.
البته همون تابع round هم اگه روی لینک کلیک کنی میبینی یکسری تنظیمات داره ولی خب از تابع بالای هم میتونی راحت استفاده کنی.

hamedarian2009
جمعه 23 خرداد 1393, 16:57 عصر
رند میزنه چهار روز دیگه ولی من میخوام پنج روزو نشون بده.به خاطر همین پرسیدم

باید از ()ceil استفاده کنی

majid236
پنج شنبه 14 آبان 1394, 00:04 صبح
خودتون انجام بدین:

// next 30 days
$future = time() + 30 * 24 * 60 * 60; // or time() + 30 * 86400

سلام
میدونم تاپیک قدیمی رو بالا آوردم ولی خواستم روش جدیدی رو اضافه کنم تا شاید یه کسی به دردش بخوره
برای مقایسه تاریخ ، میتونید از کد زیر استفاده کنید :

$datetime1 = date_create('2009-10-11');
$datetime2 = date_create('2010-10-11');
$interval = date_diff($datetime1, $datetime2);
$date= $interval->format('%R%a');
echo $date;

موفق باشید . :چشمک: