PHP:isset导致用户注册后406不可接受

PHP:isset导致用户注册后406不可接受,php,apache,Php,Apache,首先,我要说(a)我在JustHost有一个网络托管帐户,(b)我在谷歌上搜索了很多次,试图找到isset和406之间的连接。我发现了很多406个与isset不相关的问题。我还发现了这个链接(),但总体来说这没有帮助 我正在建立我的第二个php站点,我认为我遇到了很多错误。然而,在我的注册页面上,我今天得到了一个新的(对我来说): 406 Not Acceptable: An appropriate representation of the requested resource could n

首先,我要说(a)我在JustHost有一个网络托管帐户,(b)我在谷歌上搜索了很多次,试图找到isset和406之间的连接。我发现了很多406个与isset不相关的问题。我还发现了这个链接(),但总体来说这没有帮助

我正在建立我的第二个php站点,我认为我遇到了很多错误。然而,在我的注册页面上,我今天得到了一个新的(对我来说):

406 Not Acceptable: An appropriate representation of the requested resource could not be found on this server. This error was generated by Mod_Security
我找到了罪魁祸首……当用户注册时,我正在检查以下注册表(节略):

在此之后,单击导航菜单中的任何链接将用户带到406错误页面

我改变了这句冒犯的话:

if (!isset($_POST['fullname']) || !isset($_POST['email']) || !isset($_POST['username']) || !isset($_POST['password'])) {
为此:

if (!$_POST['fullname'] || !$_POST['email'] || !$_POST['username'] || !$_POST['password']) {
不再是406


我正在尽可能多地学习php。谁能解释一下为什么
!isset($\u POST['var'])
可能导致406?

与您的网络主机联系。这个令人困惑的错误消息可能是由于web应用程序防火墙管理过度造成的。好的……可以。他们的客户支持人员知识渊博。isset()不可能发出http头。它所做的一切都是检查特定的变量/数组键是否存在。如果406是因为isset()而发出的,那么是
If(){…}
块中的某个代码发出的,是基于isset结果的决定导致的。所做的只是更改代码路径。基本上它会从
if(true){send 406}
变成
if(false){send 406}
或者类似的东西。但是isset()实际上不能发送http头。如果那样做的话,代码就在后面。您所做的只是更改php在代码中的路径。@TheOneandOnlyChemistryBlob:删除
isset
就足以触发一个通知(如果您的代码尚未确保post参数存在),这将导致发送(可能不完整/不正确)标题。这真的应该引起问题,而不是解决问题。
if (!$_POST['fullname'] || !$_POST['email'] || !$_POST['username'] || !$_POST['password']) {