Is there a way when creating a form (Web Form for Marketers) to make it so when a person fills out the form and it's successfully submitted that the same person cannot submit the form again?
I would recommend using Sitecore Personalization to hide the form and show different content based on various criteria, like a contact facet that indicates that this particular form has been submitted already. Personalization is a powerful tool that uses the Sitecore Rules Engine to evaluate various conditions. Components can be hidden or shown, have their datasource changed or rendered with a different compatible rendering.
More detail on personalization can be found on the Sitecore Documentation Site.
You can also handle that scenario more simply during the form post and return a message if that contact has already submitted that form (or any other relevant condition).
Agree with @Nathan that you should use Personalization to control the visibility of the form. One option is to use Goals. When you insert a form the wizard gives you the option to create a new form (or select an existing one):
If you have already added the form then you can add a Goal from the Content Editor using the
You can then use Personalization to hide the form is the Goal has previously been triggered (i.e. the form has been completed). Add a new personalization rule for the component, configure the rule to checked if the Goal has been triggered and then set the action to
This relies on the use of xDB, Goals will not be recorded if you are running CMS mode only. You may be able to create a custom Rule in this case to achieve a similar result.