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

PHP POST登录表单出现Undefined index错误求助

问题分析与解决办法

错误根源

出现Undefined index: username和Undefined index: haslo提示的核心原因:

  • 表单额外设置了enctype="multipart/form-data",但当前表单无文件上传需求,该属性会改变POST数据编码方式,导致PHP无法正常解析普通文本字段;
  • 处理页面中echo $pagname;的$pagname变量未定义,也会触发Notice级错误(非当前主要报错,但需同步修复)。

修复步骤

1. 调整登录表单(post.php)

移除表单的enctype="multipart/form-data"属性,普通文本表单无需该配置:

<body>
    <div id="form">
        <form name="loginform" method="POST" action="odbierz.php">
            <div id="odbierz">
                <div id="login">
                    Login: <input id="log" type="text" name="username" value="" maxlength="20" size="30" required />
                    <div id="pass">
                        <br />                      
                        Password: <input id="pass" type="password" name="haslo" value="" maxlength="20" size="30" required />
                    </div>
                    <div id="input">
                        <input type="submit" name="submit" value="Zaloguj Się" />
                    </div>
                </div>
            </div>
        </form>
    </div>
</body>

2. 优化处理页面(odbierz.php)

  • 移除未定义的$pagname输出(或先定义该变量);
  • 改用更安全的参数获取方式,避免Undefined index错误:
<?php
// 若需保留页面名称,先定义变量:$pagname = "登录处理页";
// echo $pagname;

if($_SERVER["REQUEST_METHOD"] == "POST"){
    // 空合并运算符兼容PHP7+,避免未定义索引报错
    $username = $_POST['username'] ?? '';
    $haslo = $_POST['haslo'] ?? '';
    
    if(!empty($username) && !empty($haslo)){
        echo "Hello ".$username." ".$haslo;
    }else{
        echo "Coś poszło nie tak<br />";
    }
}else{
    echo "Coś poszło nie tak<br />";
}
?>

补充说明

  • multipart/form-data仅在表单包含<input type="file">时才需要使用,普通文本表单默认编码application/x-www-form-urlencoded即可(无需手动设置enctype);
  • PHP中直接使用未检查的$_POST索引易触发Notice错误,建议用isset()或空合并运算符做前置校验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 03:31:51