You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP测验页面优化:邮件发分数与下拉框直接传值方案

解决方案

1. 将测验分数一并通过邮件发送

核心思路是把JS计算出的得分存入表单的隐藏字段,随表单一起提交到PHP,再在邮件内容中拼接得分:

步骤&代码示例

HTML(表单中添加隐藏字段)

<form method="post" action="send_email.php">
  <!-- 测验下拉框 -->
  <select name="quiz_answer" id="quiz_answer">
    <option value="a">选项A</option>
    <option value="b">选项B</option>
  </select>
  <!-- 隐藏字段存储得分,会随表单提交 -->
  <input type="hidden" name="quiz_score" id="quiz_score" value="">
  <button type="submit">提交测验</button>
</form>

JavaScript(计算得分并赋值给隐藏字段)

// 假设这里是你的得分计算逻辑
let userScore = 0;
const selectedOption = document.getElementById('quiz_answer').value;
// 示例:正确答案为'a'时得100分
if (selectedOption === 'a') {
  userScore = 100;
}
// 将得分写入隐藏字段
document.getElementById('quiz_score').value = userScore;

PHP(接收数据并发送邮件)

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
  // 获取下拉框答案和得分
  $userAnswer = $_POST['quiz_answer'];
  $userScore = $_POST['quiz_score'];

  // 组装邮件内容
  $to = '你的目标邮箱@xxx.com';
  $subject = '测验提交结果';
  $message = "用户选择的答案:{$userAnswer}\n测验最终得分:{$userScore}分";
  $headers = 'From: 测验系统 <noreply@xxx.com>' . "\r\n";

  // 发送邮件(注意:部分服务器需要配置邮件服务才能正常发送)
  mail($to, $subject, $message, $headers);

  // 跳转至得分页面
  header('Location: result.php?score=' . $userScore);
  exit;
}
?>

2. 直接传递下拉框答案至邮件表单(无需中间输入框)

只需让下拉框本身成为表单的一部分,PHP直接通过下拉框的name属性获取值即可,完全不需要中间输入框中转:

步骤&代码示例

HTML(下拉框直接放在表单内)

<form method="post" action="send_email.php">
  <!-- 直接将下拉框作为表单元素,设置name属性 -->
  <select name="quiz_answer" id="quiz_answer">
    <option value="a">选项A</option>
    <option value="b">选项B</option>
  </select>
  <input type="hidden" name="quiz_score" id="quiz_score" value="">
  <button type="submit">提交测验</button>
</form>

JavaScript(仅处理得分,无需操作中间输入框)

// 计算得分逻辑和之前一致
let userScore = 0;
const selectedOption = document.getElementById('quiz_answer').value;
if (selectedOption === 'a') {
  userScore = 100;
}
document.getElementById('quiz_score').value = userScore;

PHP(直接获取下拉框值)

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
  // 直接通过name获取下拉框答案,无需中间输入框
  $userAnswer = $_POST['quiz_answer'];
  $userScore = $_POST['quiz_score'];

  // 邮件组装和发送逻辑和之前一致
  $to = '你的目标邮箱@xxx.com';
  $subject = '测验提交结果';
  $message = "用户选择的答案:{$userAnswer}\n测验最终得分:{$userScore}分";
  $headers = 'From: 测验系统 <noreply@xxx.com>' . "\r\n";

  mail($to, $subject, $message, $headers);
  header('Location: result.php?score=' . $userScore);
  exit;
}
?>

如果是多道题的情况,只需给每个下拉框设置不同的name(比如answer_1、answer_2),PHP中用$_POST['answer_1']、$_POST['answer_2']依次获取即可。

内容的提问来源于stack exchange,提问作者longus200

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 23:20:39