Is there a way to make sure that a survey is only taken once by a user?
By default, the survey part will only allow one submission. The best way to ensure this, is to require a login for the users to fill out the survey.
If a logged in user fills out the form, they will not be able to fill out the form again while logged in with that same username.
If a user is not logged in, the user will not be able to submit another survey while still in the same browser session. For example, If a person is logged in and submits a survey using the Chrome browser, as long as that same Chrome browser is open the user cannot submit another survey in that browser. The user would have to open a different browser, like Internet Explorer, and then they would see the option to submit the survey again. Users will also be able to return another day and submit another survey if they are not logged in.
If you want to guarantee that a user will not be able to submit a survey more than one time, place the survey page behind targeting and security for a certain role. This will require users to log in to see and fill out the survey, and thus they will not be able to submit more than one survey. Here is information on how to add targeting and security to a page.