Installation
WordPress Admin → Plugins → Add New → Upload Plugin → select
secureexam-2.9.12.zipClick Activate Plugin. Database tables are created automatically on first activation.
Go to Settings → Permalinks and click Save Changes (even without changing anything). Without this, student exam links and the teacher portal will show "Page not found".
SecureExam → Settings → enter school name, initials, and upload logo.
Requirements
| Item | Minimum | Notes |
|---|---|---|
| WordPress | 5.8+ | 6.0+ recommended |
| PHP | 7.4+ | 8.0+ recommended |
| MySQL | 5.7+ | |
| HTTPS/SSL | Required for Strict mode camera | Free via Let's Encrypt or your hosting control panel |
| Student browser | Chrome 80+, Firefox 75+, Safari 14+ | Latest Chrome recommended |
First-Time Setup
After installation go to SecureExam → Settings and configure:
- School Name — shown on all student screens
- School Initials — badge shown when no logo is uploaded (e.g. "TMS")
- School Logo — upload via WordPress Media Library
- Default Anti-Cheat Mode — pre-selected for all new exams
- Notifications — email the teacher and/or student on each submission
Teacher Portal
SecureExam ships with a fully custom front-end portal for teachers. Teachers never see the WordPress admin — they get their own branded dashboard at /teacher/ with everything they need.
Portal URLs
| URL | Who sees it | What it does |
|---|---|---|
/teacher-login/ | Everyone | Teacher sign-in page (standalone, no WP branding) |
/teacher-setup/?token=… | Invited teachers | First-time account setup via invite link |
/teacher/dashboard | Logged-in teachers | Stats, recent exams, active students |
/teacher/exams | Logged-in teachers | List and manage their exams |
/teacher/create | Logged-in teachers | 7-step exam creation wizard |
/teacher/results | Logged-in teachers | View student submissions |
/teacher/grading | Logged-in teachers | Grade manual questions |
/teacher/bank | Logged-in teachers | Question bank |
/teacher/teachers | Admins only | Manage teachers & send invites |
Inviting Teachers
Teachers are added via a token-based invite system — no sharing passwords in plain text.
Pending invites
The Teachers page shows any invites not yet accepted, with the expiry time. Click Resend to issue a fresh link (this invalidates the old one).
Managing existing teachers
| Action | What happens |
|---|---|
| Reset Password | Generates a new random password and emails it to the teacher |
| Change Email | Updates the teacher's email address (duplicate check applied) |
| Suspend / Activate | Suspends the account and destroys all active sessions; activate to restore access |
| Delete | Permanently removes the account; optionally deletes all their exams and submissions |
Portal Pages Reference
Dashboard
At-a-glance stats: total exams, pending grades, active submissions right now, plus a table of recent exams and pending manual grades to action quickly.
My Exams
Full list of the teacher's exams. Actions: Edit (re-opens the wizard), Results (jumps to that exam's results), Copy Link, Delete (draft only). Filter by status: All / Draft / Published / Closed / Expired.
Create Exam
The 7-step exam wizard. Auto-saves at every step. After publishing you land on My Exams. See Creating an Exam below for the full walkthrough.
Results
Select an exam from the dropdown to view all submissions: per-student score, duration, violations, status. Export CSV or view full answers from here.
Grading
Exam cards are shown grouped by exam. Click Open → on an exam card to see all its submissions. Click Grade next to any student to open the grading panel for that submission.
Question Bank
Search, browse, and import banked questions into a new exam. Delete questions you no longer need.
Creating an Exam
Go to New Exam in the portal. A 7-step wizard guides you:
| Step | What to do |
|---|---|
| 1 — Details | Title, instructions, duration (minutes), expiry date |
| 2 — Questions | Add questions of any type with marks and optional tag |
| 3 — Scoring | Review marks breakdown, set optional pass mark % |
| 4 — Anti-Cheat | Choose Basic / Standard / Strict, set violation limit |
| 5 — Preview | Open student preview in a new tab |
| 6 — Settings | Attempts allowed, when students see their score |
| 7 — Publish | Click "Publish Now" to go live and get the student link |
Question Types
Auto-Graded
| Type | Teacher sets up | Student answers |
|---|---|---|
| Multiple Choice | Write question + 2–6 options. Mark ONE correct with a radio button. | Taps one option. Filled circle = selected. Can change before submitting. |
| Multi-Answer | Like MCQ — mark ALL correct options with checkboxes. Full marks only if student picks every correct one and no wrong ones. | Ticks every correct option. Must get all right for marks. |
| True / False | Write a statement, mark it True or False. | Clicks True or False. No partial credit. |
| Short Answer | Enter all accepted answers, one per line. Case-insensitive check. | Types a short word/phrase. Spelling must match. |
| Fill in the Blank | Write sentence with ___ showing the blank. List accepted words below. | Types the missing word. |
| Image MCQ | Paste image URL + write options. Mark one correct. | Studies the image shown above the options, selects one answer. |
| Audio MCQ | Paste audio URL + write options. Mark one correct. | Plays audio (can replay), selects one answer. |
Manual-Graded (you mark after exam)
| Type | Teacher sets up | Student answers |
|---|---|---|
| Essay | Write the question. No correct answer needed — you assign marks in Grading. | Types a long essay. Word counter shown. Auto-saves every 30s. |
| Speaking | Write the question/prompt. Students record audio. You mark after listening. | Presses mic to record, stops when done. Can re-record. |
| Matching Pairs | Add items: FIRST add all Column A items, THEN all Column B items. System splits the list in half automatically. Example: add "Paris", "Berlin", "France", "Germany" → students match Paris→France, Berlin→Germany. | Uses a dropdown next to each Column A item to select the matching Column B answer. |
| Ordering | Add items in the CORRECT order. Students see them shuffled and must rearrange. | Drags items using the ⠿ handle to put them in the right sequence. |
Anti-Cheat Modes
| Feature | Basic | Standard | Strict |
|---|---|---|---|
| Block right-click | ✓ | ✓ | ✓ |
| Block copy / paste / cut | ✓ | ✓ | ✓ |
| Block keyboard shortcuts (Ctrl+C etc.) | ✓ | ✓ | ✓ |
| Log tab switching | ✓ | ✓ | ✓ |
| Force fullscreen | ✗ | ✓ | ✓ |
| Camera required throughout | ✗ | ✗ | ✓ |
| Window blur/focus detection | ✗ | ✗ | ✓ |
When a student hits the violation limit you set (default 3), their session is locked. You can unlock it from the Results page. If "Warn student" is on, they see a popup on each violation before locking.
Publishing & Sharing
On Step 7, click Publish Now. A unique link is generated:
https://yourschool.com/exam/a1b2c3d4
Share via: Copy Link · WhatsApp button · Regenerate Link (old link stops working immediately)
Viewing Results
Go to Results → select an exam. You see:
- Stats: submission count, average score, highest score, pending grade count
- Per-student: name, email, start/submit time, duration, score bar, violations, status
- Actions: View answers · Unlock locked session · Reset attempt · Export CSV
The teacher name who created the exam is shown on each exam card so admins can see at a glance which teacher owns each exam.
Manual Grading
Go to Grading. The page shows exam cards grouped by exam, each card showing how many submissions are pending manual review.
- Click "Open →" on an exam card to see all its submissions in a list
- Click "Grade" next to a student to open their grading screen
- In the grading screen:
- Left: question list with status (Auto ✓/✗, Pending, Graded)
- Right: student's answer, marks input, feedback textarea
- Click Save Grade — total score updates automatically
- Click Next Pending → to move to the next ungraded question
After all manual questions for a submission are graded, the score is released automatically (if "After Grading" score-release is set on the exam).
Question Bank
When adding questions in the wizard, tick "Save to Question Bank" to reuse them in future exams. Go to Question Bank to search, add, or delete banked questions.
Student Flow
Camera & HTTPS
Strict mode requires the student's camera to remain on for the duration of the exam. This uses the browser's getUserMedia API, which browsers only allow on HTTPS. This is an enforced browser security rule that cannot be bypassed.
Free HTTPS setup
- cPanel hosting (Namecheap, HostGator, etc.) — Go to cPanel → SSL/TLS → Let's Encrypt (or AutoSSL). One click, free.
- Cloudflare — Add your domain, proxy DNS through Cloudflare, enable Full SSL. Completely free.
Camera error messages
| Error | Cause | Fix |
|---|---|---|
| "Camera requires HTTPS" | Site on HTTP | Add an SSL certificate (see above) |
| "Permission denied" | Student clicked Block | Click lock icon in address bar → Allow → Refresh page |
| "No camera found" | No camera on device | Student must use a device with a camera for Strict exams |
| "Camera in use" | Another app (Zoom, Teams) using the camera | Close other video apps, then refresh |
Settings Reference
School Identity
| Setting | Description |
|---|---|
| School Name | Shown on every student-facing screen |
| School Initials | Badge shown when no logo uploaded (max 4 chars, e.g. "TMS") |
| School Logo | Upload via Media Library. Shown on registration and exam screens. |
| Accent Colour | Primary colour used throughout the student and teacher UI |
| Sidebar Colour | Background colour of the teacher portal sidebar |
Exam Defaults
| Setting | Description |
|---|---|
| Default Duration | Pre-filled in new exams (minutes) |
| Default Anti-Cheat | Pre-selected mode for new exams (Basic / Standard / Strict) |
Notifications
| Setting | Description |
|---|---|
| Notify teacher on submission | Email sent to the exam's teacher each time a student submits |
| Notify student on submission | Confirmation/receipt email sent to the student after submitting |
Camera & Proctoring
| Setting | Description |
|---|---|
| Store webcam snapshots | When enabled, a webcam image is captured from the student at regular intervals during Strict-mode exams and stored for teacher review |
| Snapshot interval (seconds) | How frequently snapshots are taken. Default is 300 seconds (every 5 minutes). Minimum 30 seconds. |
Security
| Setting | Description |
|---|---|
| Trust proxy / Cloudflare headers | Enable only if your site is behind Cloudflare or a reverse proxy. Allows accurate IP detection for rate limiting. Leave off if unsure — enabling on a direct server allows IP spoofing. |
Danger Zone
| Setting | Description |
|---|---|
| Delete All Data | Type DELETE to permanently remove all exams, questions, submissions, and answers. Cannot be undone. |
Shortcode
[secureexam id="12"]
[secureexam slug="a1b2c3d4"]
Embeds the full exam interface inside any WordPress page or post. Find the exam ID in the URL when viewing the exam in the admin.
REST API
Base: https://yoursite.com/wp-json/secureexam/v1/
| Method | Endpoint | Auth | Description |
|---|---|---|---|
| GET | /exam/{slug} | None | Get exam info + nonce |
| POST | /start | None | Start exam, receive session token + questions |
| POST | /answer | Session token | Save a student answer (max 2 MB payload) |
| POST | /heartbeat | Session token | Sync timer, check session status |
| POST | /submit | Session token | Submit the exam |
| POST | /violation | Session token | Log an anti-cheat violation |
| GET | /exams | WP login | List teacher's exams |
| GET | /exams/{id}/results | WP login | Get submissions for an exam |
| GET | /exams/{id}/stats | WP login | Get exam statistics |
CSV Export
From the Results page → Export CSV:
- Results CSV — One row per student: name, email, phone, started, submitted, duration, score, violations, status
- Answers CSV — One column per question with each student's raw answer text
Files are Excel-compatible (UTF-8 BOM).
FAQ
Student link shows "Page not found"
Go to WordPress → Settings → Permalinks → Save Changes. This re-registers the /exam/ URL pattern. You may need to do this after first installing the plugin.
Teacher portal shows "Page not found"
Same fix: WordPress → Settings → Permalinks → Save Changes. This re-registers /teacher-login/ and all /teacher/* URLs.
Students submitted but nothing shows in Results
Check: (1) Is the exam Published, not Draft? (2) Go to Grading → select the exam → all submissions appear there regardless of grading status.
A student's session is locked
Results → select the exam → find the student → click Unlock. Their session resumes from where they left off with answers preserved.
Can students resume after a browser crash?
Yes. Answers auto-save every 30s and the timer syncs every 15s. If a student returns to the exam link, their previous answers are preserved and the timer continues from where it was.
Camera doesn't turn on in Strict mode
Your site must be on HTTPS — browsers block camera access on HTTP. Also confirm the student clicks Allow when the browser shows the camera permission popup. If they clicked Block, they need to click the lock icon in the address bar, set Camera to Allow, and refresh.
How do I add a teacher?
Portal → Teachers → fill in name + email → Send Invite Email. The teacher receives a secure link to set their own username and password. Invites expire after 48 hours; click Resend to refresh the link.
The plugin updated but something looks wrong
Go to WordPress → Settings → Permalinks → Save Changes. If issues persist, deactivate and reactivate the plugin — this forces a full table check and URL re-registration.
Does it work on mobile?
Yes, the student exam screen is fully responsive. Camera works on Chrome for Android and Safari on iOS 14.3+. The admin and teacher portal are also mobile-friendly, though a desktop is recommended for creating and grading exams.
Audit Log
The audit log provides a tamper-evident record of every significant action taken by admins and teachers. It is visible to admins only — teachers have no access.
Find it in wp-admin → SecureExam → 🔍 Audit Log.
What is logged
| Event | Triggered by | Detail recorded |
|---|---|---|
| Answer graded | Teacher saves a mark on a manually-graded question | Answer ID, marks awarded, updated total score |
| Attempt reset | Teacher resets a student's entire submission | Student name & email (preserved before deletion) |
| Session unlocked | Teacher unlocks a violation-locked session | Student name & email |
| Result email sent | Teacher manually sends the score email to a student | Student name & email, score, total possible marks |
Filtering
The log can be filtered by Exam, Actor (the admin or teacher who performed the action), and Action type. Results are paginated at 50 per page, newest first.
TRUNCATE wp_se_audit_log), but be aware this removes all history permanently.Known Limitations
- Camera requires HTTPS — browser security rule, cannot be bypassed
- Anti-cheat is deterrence, not prevention — a student with a second device cannot be stopped by browser-based tools alone. Strict mode with camera on is the strongest available option.
- No student accounts — students are identified by name and email only; no login system for students
- Answer size limit — text answers are capped at 2 MB per question to protect server resources