嘿所有,我第一次询问stackoverflow!
反正。所以今天早上(以及昨晚的大部分时间)我一直在做一个我的项目。它是一个简单的小型电子商务网站。
不要陷入网站的细节,我会直接跳到它。
基本上,我的网站托管在我自己域名的网络服务器上。为了将作品提交给我的大学导师,我必须将文件传输到他们的网络服务器。只有在连接到大学网络并在路径http://jawa/handins/...../
下运行时才能访问此选项现在为了让MySQL和PHP运行,我必须从我的个人phpmyadmin面板中提取表格和信息,并将其转储到Uni网络上提供的phpmyadmin面板中。数据库被称为一些不同的东西,但表是相同的,所以一小段时间,以确保我的mysql_connect函数指向正确的数据库,一切正常。或者至少那是计划..
由于某些原因,我的PHP变量(在我的服务器上工作)现在未定义 - 如何?我没有更改过一段代码,除了数据库所在的地方,那就是:
//form data
$firstName = strip_tags($_POST['firstName']);
$lastName = strip_tags($_POST['lastName']);
$Email = strip_tags($_POST['Email']);
$userName = strip_tags($_POST['userName']);
$regPass = strip_tags($_POST['regPass']);
$repeatPass = strip_tags($_POST['repeatPass']);
$date = date("Y-m-d");
$permissions = strip_tags($_POST['permissions']);
所有内容都与相关的提交字段相匹配。我在个人网络服务器上运行的代码与大学网络上托管的代码没有什么不同。但是现在你在这里看到的这些变量都没有定义。请原谅我是愚蠢的,如果它是显而易见的,但我现在已经连续20个小时了,我对小问题感到非常激动。但是我不会向任何人发泄我的沮丧,这不是你的错!
基本上,这些变量用于注册表单。每个sumbit字段都给出了在$ _POST []函数上传递的值。表格是“发布”,所以没有问题。我只是不知所措!
答案 0 :(得分:2)
您自己的计算机上可能有不同的error_reporting级别,然后它位于另一台服务器上。请将error_reporting(E_ALL);
添加到页面顶部,这些会对你大喊大叫。
答案 1 :(得分:0)
正如@Wesley van Opdorp所提到的,您的计算机必须具有不同的报告级别,如果将其设置为E_ALL
,您将看到所有错误,例如警告,通知和致命错误。
你必须记住,如果你在error_reporting
被关闭的情况下编写代码,或者它被设置为隐藏警告甚至通知并且一切正常,如果你打开它,它可能会影响你的代码因为它会报告每个未定义的变量和一些其他警告,就好像它是在严格模式下一样。如果在使用或引用未定义变量之前使用isset
或is_null
,则可能需要添加其他检查。只是一个想法。
答案 2 :(得分:0)
@Wesley可能是关于错误报告的。
尽管尝试这一点。在尝试使用之前检查输入是否已输入:
$firstName = isset($_POST['firstName'])?strip_tags($_POST['firstName']):null;
我知道看起来很粗糙,但看起来它可以像这样简单:
$date = date("Y-m-d");
$inputs = array('firstName', 'lastName', 'Email', 'userName', 'regPass', 'repeatPass', 'permissions');
foreach($inputs as $input)
{
$values[$input] = isset($_POST[$input])?$_POST[$input]:null;
//if it was set/used, store it in the variable, if not store null
}
这可以节省您为每个输入写一行。
因此,例如$values['firstName']
的值为"John"
或null
因此,当使用任何$ values元素时,请检查它是null
还是使用empty()
来查看它们是否存在实际值。