
php表单提交后跳转到answer.php却总显示0,根本原因是header('location: answer.php')触发的是无数据的get请求,导致$_post为空;正确做法是让表单直接提交至answer.php,或在index.php中完成全部逻辑处理。
php表单提交后跳转到answer.php却总显示0,根本原因是header('location: answer.php')触发的是无数据的get请求,导致$_post为空;正确做法是让表单直接提交至answer.php,或在index.php中完成全部逻辑处理。
在您提供的代码中,index.php 接收表单数据后并未将数据传递给 answer.php,而是执行了重定向操作:
if(isset($_POST['submit'])) {
echo header('Location: answer.php'); // ❌ 错误:echo + header 本身已无效,且重定向不携带POST数据
}该写法存在两个关键问题:
- header() 前不能有任何输出(包括空格、换行、echo),此处 echo header(...) 会导致致命错误(Headers already sent),实际可能被静默忽略或报错;
- 更重要的是,header('Location: ...') 发起的是 GET 请求,而 answer.php 中依赖 $_POST 读取数据——但 GET 请求中 $_POST 为空数组,因此 (int)$p、(int)$r、(int)$n 全部转为 0,最终 $si = 0 * 0 * 0 / 100 = 0。
✅ 正确解法一:让表单直接提交到 answer.php
修改 index.php 中的


















