联系表单遭遇白屏死亡问题,求助排查错误原因
问题分析与修复方案
嘿,我帮你找出了代码里的几个关键问题,这些正是导致浏览器白屏崩溃的核心原因:
1. 非法变量名直接引发PHP语法错误
你定义的$15、$20、$25、$30这些变量名完全不符合PHP的语法规范——PHP要求变量名必须以字母(a-z/A-Z)或者下划线_开头,绝对不能以数字开头。这种语法错误会让PHP解释器直接停止运行,在默认的生产环境配置下(错误显示关闭),就会出现你看到的白屏现象。
修复方法:把这些变量名改成合法的,比如改成$bedrag15、$bedrag20这类可读性强的名称,或者$_15(前者更推荐,代码可读性更高)。
2. 复制粘贴导致的判断逻辑完全错误
看你后面构建消息的代码,所有的if判断都在检查$15:
if ($15 != null){ $message .= '15,-'; } if ($15 != null){ $message .= '20,-'; } if ($15 != null){ $message .= '25,-'; } if ($15 != null){ $message .= '30,-'; }
这明显是复制粘贴时忘记修改变量名了,就算变量名合法了,逻辑也完全不对,根本无法正确识别用户选择的金额。
修复方法:把每个判断里的变量名对应改成各自的金额变量,比如第一个判断对应$bedrag15,第二个对应$bedrag20,以此类推。
3. 未检查POST变量是否存在(潜在的警告/错误)
你直接从$_POST数组里取值,比如$naam = $_POST['naam'];,如果用户提交表单时某个字段没有传值(或者表单没正确提交),会触发“未定义索引”的警告,在严格的错误模式下也可能导致脚本终止。
修复方法:用PHP7+的空合并运算符??或者isset()来安全取值,避免这类警告。
修正后的完整代码示例
// 安全获取表单字段,避免未定义索引错误 $naam = $_POST['naam'] ?? ''; $email = $_POST['email'] ?? ''; $adres = $_POST['adres'] ?? ''; $postcode = $_POST['postcode'] ?? ''; $telefoon = $_POST['telefoon'] ?? ''; $iban = $_POST['iban'] ?? ''; // 使用合法的变量名存储金额选项 $bedrag15 = $_POST['15'] ?? ''; $bedrag20 = $_POST['20'] ?? ''; $bedrag25 = $_POST['25'] ?? ''; $bedrag30 = $_POST['30'] ?? ''; $anderbedrag = $_POST['anderbedrag'] ?? ''; // 构建发送给管理员的消息 $message = $naam . "\n"; $message .= "jaarlijks bijdrage: "; // 修正判断逻辑,对应各自的金额变量 if (!empty($bedrag15)){ $message .= '15,- '; } if (!empty($bedrag20)){ $message .= '20,- '; } if (!empty($bedrag25)){ $message .= '25,- '; } if (!empty($bedrag30)){ $message .= '30,- '; } if (!empty($anderbedrag)){ $message .= $anderbedrag; }
另外,建议你在开发环境下开启PHP的错误显示,这样下次遇到问题时能直接看到错误信息,不用猜原因。可以在脚本开头加上:
error_reporting(E_ALL); ini_set('display_errors', 1);
内容的提问来源于stack exchange,提问作者asgeira
相关产品推荐
相关产品推荐

