rdyco — 2013-04-11T20:47:03-04:00 — #1
This is my first time using MySQL and I want to create a membership site. This is the table I outlined so far:
When users of my site pays for a month of subscription, I want to set membership_date to date when they subscribed. Then after that, do I check if their date has expired every time they log in?
What I thought of doing is maybe perform a check when they are logged in and visit the site to see if membership_date + 31 is greater than today's date, if so, then deactivate membership by changing subscription to false.
Something like this...
if membership_date + 31 > today's date
then assign FALSE to subscription
How can I find out the common and secure way to go about this?
coding123 — 2013-04-12T05:37:23-04:00 — #2
You could set up a cron job, It would check in specified interval if any of the users have subscription expired and update records if they do. Perhaps per hour or per day should be enough.
Your approach also works fine.
You can also take a look at some modules from open source CMS solutions that provide subscription functionality and learn from their code.
raju_gautam — 2013-04-12T06:21:46-04:00 — #3
I would recommend you to use the condition in the query itself:
WHEN CURRENT_DATE < DATE_ADD(tm.membership_date, INTERVAL 31 DAY) THEN 'YES'
END) AS expired_flag
FROM tbl_members AS tm
WHERE username='yourpassword' AND `password`='yourpassword';
Now you can check in PHP whether the logged in user's date has expired or not.
Either you can do it in PHP itself, see strtotime() for this.