这是我在网站上的第一篇帖子,所以如果我做错了,请告诉我。无论如何我的问题。
我一直在为我正在处理的应用程序编写登录/注册脚本。当他们的电子邮件被提供给脚本时,预计将触发注册过程。但我似乎遇到了一个我不明白的问题。
$Username = $_REQUEST['Username'];
$EnteredPassword = $_REQUEST['Password'];
$Email = $_REQUEST['Email'];
if (!empty($Email))//Checks for email necessary for sign up
{
//Preform Sign Up Stuff
}
else
{
//Preform Login Stuff
}
由于某种原因,if语句的计算结果为false,即使我POST了Email的值。为什么会这样?有没有更好的方法来检查是否提供了值?
答案 0 :(得分:3)
由于您尚未提供HTML表单以供PHP使用,因此请提交以下内容。
如果您的HTML表单不包含以下内容或类似内容,包括每个都没有拼写错误的名称属性的表单元素,那么就不应该有任何失败的原因。
Nota: name="Username"
和name="username"
是两种不同的动物。
<form action="handler.php" method="post">
Username:
<input type="text" name="Username"><br>
Password:
<input type="password" name="Password"><br>
Email:
<input type="text" name="Email"><br>
<input type="submit" name="submit" value="Submit">
</form>
另外,正如评论中所述,您最好使用表单的实际方法。如果省略,表单默认为GET,因此在使用POST方法时,应明确包含在其中。
重要的旁注:
使用GET通过互联网发送信息是不安全的;特别是密码。
要进行调试,请使用错误报告。
将error reporting添加到文件的顶部,这有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
旁注:错误报告应仅在暂存时完成,而不是生产。
参考文献:
“有没有更好的方法来检查是否提供了值?”
在两个函数上访问此问答堆栈:
$Username = $_POST['Username'];
$EnteredPassword = $_POST['Password'];
$Email = $_POST['Email'];
if (!empty($Email)) //Checks for email necessary for sign up
{
// Perform Sign Up Stuff
}
else
{
// Perform Login Stuff
}
或:
if (!empty($_POST['Email']))
{
// Perform Sign Up Stuff
}
else
{
// Perform Login Stuff
}