值为value的变量为false

时间:2015-04-08 01:50:55

标签: php

这是我在网站上的第一篇帖子,所以如果我做错了,请告诉我。无论如何我的问题。

我一直在为我正在处理的应用程序编写登录/注册脚本。当他们的电子邮件被提供给脚本时,预计将触发注册过程。但我似乎遇到了一个我不明白的问题。

    $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的值。为什么会这样?有没有更好的方法来检查是否提供了值?

1 个答案:

答案 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

旁注:错误报告应仅在暂存时完成,而不是生产。


参考文献:


  

“有没有更好的方法来检查是否提供了值?”

  • 使用条件empty()很好,这就是你现在正在做的事情。

  • 您也可以使用条件isset(),但不是必需的;请参阅下面的链接。



$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
}