PHP 错误:未定义的索引(_POST 美元变量)


PHP Error : Undefined Index ($_POST Variable)

我正在尝试做一个PHP连接脚本,在同一页面中进行表单和数据处理,但是当我尝试使用代码时,我总是收到2个错误:

注意:未定义的索引:C:''Users''Simon''Documents''Site FTM''connexion.php in line>7 中的密码

致命错误:在第 18 行的 C:''Users''Simon''Documents''Site FTM''connexion.php 中的非对象上调用成员函数 fetch()

我知道 PHP 在 $_POST 中找不到名为"密码"的索引,但我确信表单指向同一页面 (#)...有人能帮我吗?这是整个代码,在粘贴箱上:http://pastebin.com/A9z1HHvf

抱歉,错误消息是法语的,但所有其他变量名称都是英文的。您只需要知道$errDisplay用于存储我的所有自定义错误消息并将它们显示在页面底部。

这一行有问题:

$isFormOK = isset($_POST['username']) AND isset($_POST['password']);

AND的优先级低于=,这就是为什么这一行读成这样:

( $isFormOK = isset($_POST['username']) )
  AND isset($_POST['password']);

换句话说,无论$_POST['password']是否在脚本中,它的工作方式都相同 - 仅根据$_POST['username']存在设置$isFormOk值。

相反,您应该做的是使用布尔and &&形式(它的优先级高于=):

$isFormOK = isset($_POST['username']) && isset($_POST['password']);

。或者,更好的是,只需使用isset可以接受多个参数的事实:

$isFormOK = isset($_POST['username'], $_POST['password']);

引用文档:

如果提供了多个参数,则 isset() 将仅返回 TRUE 如果设置了所有参数。评估从左到右 并在遇到未设置变量时立即停止。

if(isset($_REQUEST['password'])){
$pass = $_REQUEST['password'];
}

现在您可以使用$pass,因为它包含正在发布的值。