Mollom client implementation guidelines
Entities
- Mollom session
entity_type VARCHAR(32), entity_id INT- Or whatever is suitable for your app; required to map a
contentIdorcaptchaIdto a locally stored entity.
- Or whatever is suitable for your app; required to map a
content_id VARCHAR(32) NULL- Text analysis only.
- Note: Certain database engines/drivers care for case-sensitivity (e.g., Postgres); for maximum compatibility use
content_idinstead ofcontentId.
captcha_id VARCHAR(32) NULL- Only exists when a post involved a CAPTCHA in any way.
- Note: Certain database engines/drivers care for case-sensitivity (e.g., Postgres); for maximum compatibility use
captcha_idinstead ofcaptchaId.
created INT(11)/DATE NOT NULL DEFAULT NOW()- Used to prune out obsolete session data older than 6 months.
Terminology
- CMP: Content Moderation Platform
- Form flow: Basic assumed form workflow stages:
- Form construction (initial; no user input)
- Form validation (user input, possibly throwing errors that cause the form to be re-rendered)
- Form submission (only reached if there are no validation errors)
Form elements
- Content ID, commonly
contentIdormollom[contentId]. - CAPTCHA ID, commonly
captchaIdormollom[captchaId]. - Honeypot field
- Wrap the text input element in a container with a CSS class that gets
display: none;applied. - Use an "attractive" name for the input element; e.g.,
name="mollom-homepage"orname="mollom[homepage]".
- Wrap the text input element in a container with a CSS class that gets
Mollom privacy policy link
By submitting this form, you accept the <a href="//mollom.com/web-service-privacy-policy" target="_blank" rel="nofollow">Mollom privacy policy</a>.
Form flows
Text analysis
- On form construction:
- --
- On form validation:
- Check (unsure) CAPTCHA, if a CAPTCHA ID was submitted.
- Regardless of whether the
solutionis empty.
- Regardless of whether the
- Check content (using submitted content ID, if any).
- Output new content ID as hidden form input value.
- React to
spamClassification:spam: Throw form validation error (blocking submission).unsure: Retrieve + output CAPTCHA associated withcontentId+ throw form validation error (blocking submission).ham: Accept post- Remove the CAPTCHA ID from the form's HTML markup to not re-trigger the CAPTCHA validation again.
- Check (unsure) CAPTCHA, if a CAPTCHA ID was submitted.
- On form submission:
- Store MollomSession data locally, including entity type + ID mapping.
- If CMP integration is enabled, mark content as stored + provide meta/context info:
stored=1url=http://example.com/articles/123#comment-456contextUrl=http://example.com/articles/123contextTitle=Article title
CAPTCHA-only (discouraged)
- On form construction:
- Retrieve a new CAPTCHA.
- Start local session to store CAPTCHA ID + URL with
solved=0+url=http://... - Disable page caching + ensure to send proper HTTP headers to notify reverse-proxies.
- Output CAPTCHA + CAPTCHA ID as hidden form input +
solutiontext form input element.
- On form validation:
- Check CAPTCHA
solutionusing submitted CAPTCHA ID. - Output new CAPTCHA ID as hidden form input value.
- React to
solved:0: Throw form validation error (blocking submission) + output CAPTCHA again.1: Accept post.
- Check CAPTCHA
- On form submission:
- Store MollomSession data locally, including entity type + ID mapping.