HTML表单与PHP文件分离后无法触发$_POST['submit']处理逻辑求解
核心问题原因
逻辑无法触发的核心原因是独立HTML文件的提交按钮缺少name="submit"属性,原PHP代码的入口判断isset($_POST['submit'])接收不到对应参数,因此不会进入后续处理流程。
具体调整步骤
1. 修改独立HTML的表单代码
给submit按钮添加name="submit"属性,同时确认action路径和实际文件存放位置匹配,补全缺失的form闭合标签:
<form action="work/add.php" method="POST"> <div id="Group_206"> <div id="Text_ca"> <span>電話號碼</span> </div> <input class="TextBox03" type="text" id="Telephone" name="Telephone"> <div id="Phone_name_position"> </div> <div id="Group_159_m"> <!-- 新增name="submit"属性 --> <input type="submit" name="submit" value="Submit" > </div> </form>
2. 调整PHP文件
首先修正原PHP代码的语法问题:原代码中POST判断的括号闭合位置错误,会导致逻辑异常。如果不需要保留原PHP文件内嵌的表单,可以删除从<!DOCTYPE html>开始的所有HTML代码,仅保留处理逻辑即可。
如果需要保留校验失败的错误提示,可调整逻辑将错误信息存入Session后跳转回独立表单页展示:
<?php session_start(); include('config/db_connect.php'); $Telephone = ''; $errors = array('Telephone' => ''); if(isset($_POST['submit'])){ // 校验手机号 if(empty($_POST['Telephone'])){ $errors['Telephone'] = 'A Telephone number is required'; } else{ $Telephone = $_POST['Telephone']; $_SESSION['Telephone'] = $Telephone; if(!filter_var($Telephone, FILTER_VALIDATE_INT)){ $errors['Telephone'] = 'Telephone must be a valid Telephone number'; } } if(array_filter($errors)){ // 校验失败时存储错误并跳转回表单页 $_SESSION['errors'] = $errors; // 此处替换为你的独立表单页面地址 header('Location: 你的独立表单页地址'); exit; } else { // 校验通过跳转到OTP页 header('Location: OTP.php'); exit; } } ?>
如果需要在独立表单页展示错误提示,可将独立HTML文件后缀改为.php,在对应错误展示位置添加如下代码即可:
<div class="red-text"><?php echo $_SESSION['errors']['Telephone'] ?? ''; unset($_SESSION['errors']['Telephone']); ?></div>
内容的提问来源于stack exchange,提问作者Raza Nayaz
相关产品推荐
相关产品推荐

