我正在尝试做一个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
,因为它包含正在发布的值。