What Is The Best Way To Achieve This - Experts Needed

Discussion in 'Programming' started by oo7ml, Aug 19, 2011.

  1. #1
    Hi, i am looking for some help on how i should go about achieving the 3 tasks below... i am not looking for any help on coding, just some knowledge / wisdom on how you would tackle / approach these functions / tasks:

    Introduction
    I am creating an e-learning website that allows people to buy Education Courses for other people (college friends etc...). Receivers of these Courses have to sign into the website to complete various tutorials each day. A live activity feed is on the home page of the site and it shows the following events:

    - $buyer has bought a $course_name for $receiver
    - $receiver has just completed tutorial 1 of $course_name
    - $receiver has just completed $course_name
    - etc

    That is the main function of my site and how it will operate... i know some of you probably think it is a crazy idea, however please do not let that influence your help on the below ;)

    For Your Information
    - a buyer is a person who buys a Course for another user
    - a receiver is a person who receives a Course from another user
    - many people can buy one specific person (receiver) many different Courses - hence a receiver might have many Courses to complete
    - one specific person (buyer) can buy many Courses for many people - hence a buyer might have bought many Courses
    - a buyer might also be a receiver on the system as they might have bought a course for someone and someone else might have bought a course for them


    Here are my tasks / questions... i greatly appreciate any help you might be able to give me on all or any of the below, thanks...

    Function / Task 1 (Creating The Record
    When someone is buying an e-learning course for someone, they need to complete various steps / forms as they need to customise the Course and i don't think it is a good idea to do all of this from the one form, so here is a list of how i think the process should work.
    Step 1 - provide: buyer name, receiver name, buyer email address, receiver email address, password, captcha
    Step 2 - customise course, set notifications etc
    Step 3 - payment

    When they click NEXT to proceed to Step 2, i was thinking of creating the $course_id / record at this early state and assigning a status of "new" to the account as soon as the form has been sanitised and passed. As soon as all the steps have been completed and payment has been received, the status of the course will be set to "live". My reason for creating the $course_id / record this early is to allow me to track accounts that did not complete all of the steps (status = "new")

    Question 1 - should i just wait until the very end to create and assign a $course_id or do you think the above method is the correct way


    Function / Task 2 (Logging In)
    As soon as all the steps have been completed and payment has been received, both the receiver and the buyer (the buyer can also log back in to change their notification settings) will receive an email notifying them of the $course_id and the $password because... i am thinking the only way that a buyer can login and complete a tutorial is to log in using the $course_id and the $password... because they can't use their email address and password to log in because someone else might have bought them another Course before so we cannot use the email addresses as the unique record, instead we have to use the $course_id as the unique record to log in

    Question 2 - do you think this is the best way to accomplish this, i can't think of any other way they could login in appropriately


    Function / Task 3 (Interactive Task)
    When a receiver logs into complete a tutorial, they will have to read various guidelines and then complete a simple interactive task in order to complete the task. These tasks will be very very simple such as, dragging an object onto another object, e.g - dragging the round peg onto the round hole

    Question 3 - i do not want to use Flash to create these interactive tasks... can anyone recommend another way of completing this... remember, it will be very simple but at the same time, when the task is completed, it still needs to update the database (mark the task as complete)


    Thanks for reading all of this... i am very excited and looking forward to what suggestions some of you experts might have... thanks so much in advance...
     
    oo7ml, Aug 19, 2011 IP
  2. oo7ml

    oo7ml Well-Known Member

    Messages:
    656
    Likes Received:
    2
    Best Answers:
    0
    Trophy Points:
    105
    #2
    Can anyone give me any advice on any of this... thanks again
     
    oo7ml, Aug 19, 2011 IP
  3. ssmm987

    ssmm987 Member

    Messages:
    180
    Likes Received:
    4
    Best Answers:
    3
    Trophy Points:
    43
    #3
    What you want to achieve with this - showing how many accounts did not complete all the steps, can in fact be done by Analytics. The pro from this is that you keep your database clean. However, I'm pretty sure your approach might give a better result.

    Why don't you assign the courses to an email adress? You can assign multiple courses to one email adress, and when you login with that email adress, you can give an overview of all the bought and recieved courses.
    Anyway, sending the password to the buyer is a very bad idea.
    Html5? gameQuery?
     
    ssmm987, Aug 20, 2011 IP
  4. oo7ml

    oo7ml Well-Known Member

    Messages:
    656
    Likes Received:
    2
    Best Answers:
    0
    Trophy Points:
    105
    #4
    yes, i plan on using an automated script to clean these records that are 6 months old...

    I understand what you are saying, however, i am worried that someone else could just buy a new course using an email address that is already on the system and whatever password they liked... then they could login using those details and access all of the "assigned" courses for that user / email and corrupt their account

    So i was thinking this...

    the buyer buys the course supplying the receivers email address and then an email is sent to the receiver with an action link when payment is received... when the receiver clicks the link, the course is assigned to the receivers email address... now IF the receivers email address is already in the system, direct them to the log in page... but if it is not, then bring them to the new account page so they can create their account...

    however my worry here is... what if the receiver clicks the link in their email but when they are directed to the new account page, they close the page and decide to complete it later... however in the meantime someone else comes along and tries to create a new account using that persons email address... as soon as they create the account using that persons email address... they will have access to their course and could corrupt it...

    I think using the $course_id and the $password would be the most suitable... do you agree

    Ok thanks
     
    oo7ml, Aug 20, 2011 IP
  5. rajmv

    rajmv Peon

    Messages:
    34
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #5
    Question 1 : you answered it already. You want the info of people _not_ completing their forms, so you might aswell create the record in step 1.

    Question 2 : Isn't it better to create a list of $courses for each $email and display that after each person logs in with their email?

    Question 3 : If you don't want Flash, look into jQuery.com, it can do drag and drop interactions too.
     
    rajmv, Aug 21, 2011 IP
  6. oo7ml

    oo7ml Well-Known Member

    Messages:
    656
    Likes Received:
    2
    Best Answers:
    0
    Trophy Points:
    105
    #6
    Thanks...

    I think i have step 2 sorted... what do you think of the following...

    I think i am going to use the $course_id and $password to login as it is the most secure way BUT the receiver must activate a link in their email first... so as soon as the click the link in their email, the course is then assigned to that email in the system and the system will know it is the authorised user of that email address...

    So if someone else buys that receiver another course, again, the user will need to activate the course from their email but the advantage in all of this is that the receiver might have several credentials but all of them will bring them to a landing page with all of their courses IF the course id they are logging in with has been activated
     
    oo7ml, Aug 22, 2011 IP
  7. oo7ml

    oo7ml Well-Known Member

    Messages:
    656
    Likes Received:
    2
    Best Answers:
    0
    Trophy Points:
    105
    #7
    Ok, i have re-designed this area of the site...

    The site will visualise both Buyers and Receivers the same... as just a general "user", regardless of their role (buying, receiving or both), so:

    1 - you must create an account and log in, in order to buy a course for a receiver
    2 - you must create an account and log in, in order to complete a course
    3 - when a user creates an account, they must activate their account by clicking an activation link that will be emailed to them once they complete the new user form
    4 - when a user (buyer or receiver) logs in they will land on the "My Courses" page... which will have 2 tabs, Received Courses and Purchased Courses
    5 - a user has 4 different statuses (WAITING, PENDING, ACTIVE, CLOSED) - i'll explain these in just a moment

    When the buyer logs in and buys a course for a receiver, the system checks to see if the account (receiver emai)l exists in the database and the status of that user.

    When a buyer buys a course for a receiver, and the receiver account (email) does not exist, the receivers account will actually be created at this stage but the status will be set to WAITING. An email will be automatically sent to the receiver notifying them that a course was purchased for them, and to click on the following link to create their account... they will be brought to the new account page and their email address will be automatically in the email field. As soon as they complete the form, their status will change to PENDING and an activation link will be emailed to them... as soon as they click the activation link, their status will change to ACTIVE, where at this stage they will be able to log in and access their account.

    So, their is 2 ways that an account can be created:
    1 - using the create account form
    2 - when a buyer buys a course for a receiver (and an email is sent to the receiver to complete their account)

    The system checks to see if the account (email) already exists and the account status on both of the above processes and determines the course of action to take based on the status

    WAITING: user account was created because a buyer bought a receiver a mission and the receiver didn’t already have an account
    PENDING: user has created an account (1 – to buy a project for someone… 2 – to complete a project that was bought for them) but has not activated their account
    ACTIVE: user has activated their account by clicking on the activation link which was emailed to them
    CLOSED: user has closed their account (unlikely, but required for privacy and terms and conditions purposes)

    Thanks for reading all of the above... can anyone see any flaws in the above method...
     
    oo7ml, Sep 18, 2011 IP
  8. Rukbat

    Rukbat Well-Known Member

    Messages:
    2,908
    Likes Received:
    37
    Best Answers:
    51
    Trophy Points:
    125
    #8
    Unless you're creating different courses each time someone purchases a course, the course_id belongs to the course, not to the purchase, so you'd better assign it to the courses in your course table when you put the courses into the table.


    Are you confusing course_id and purchased_course_id?

    Also, the email address should be the login. No matter how many courses a few buyers buy a receiver, the receiver will see all his courses, and each buyer will see the courses they bought - even if one buys courses for more than one receiver.


    If this is to assure that the user is human, use captcha and a random string that they have to copy from one textarea and paste into another.
     
    Rukbat, Sep 18, 2011 IP
  9. oo7ml

    oo7ml Well-Known Member

    Messages:
    656
    Likes Received:
    2
    Best Answers:
    0
    Trophy Points:
    105
    #9
    Hi, sorry, please ignore my first post... and revert to my last post... i am focusing on the account set up / login and i will be using the email address to login
     
    oo7ml, Sep 19, 2011 IP