我正在处理我的代码问题。我正在尝试根据用户的状态(如果他们付费以及他们是否有无效的电子邮件)来加载包含。从数据库中提取NULL值但是它只发送到entermail.php
这是我的代码,有人看到什么错了吗?
function is_premium() {
$premium_query = mysql_query("SELECT 'authLevel' FROM 'users' WHERE 'fbID' ='".$userId."'");
$premium = mysql_query($premium_query);
if ($premium=='1') {
return true;
} else {
return false;
}
}
function valid_email() {
$validemail_query = mysql_query("SELECT 'parentEmailOne' FROM 'users' WHERE 'fbID' ='".$userId."'");
$validemail = mysql_query($validemail_query);
if ($validemail != 'NULL') {
return true;
} else {
return false;
}
}
if (!empty($session) && is_premium() && valid_email()) {
include 'indexPremium';
} else if (!empty($session) && valid_email()) {
include 'entermail.php';
} else if (!empty($session)) {
include 'indexLoggedIn.php';
}else{
include 'indexNotLogged.php';
}
答案 0 :(得分:2)
你实际上并没有在数据库中存储字符串“NULL”吗? Null与字符串“NULL”不同 - 也许你想要类似的东西:
if (empty($validemail)) {
return false;
} else {
return true;
}
或更短:
return !empty($validemail);
答案 1 :(得分:1)
在validemail
函数中尝试此操作:
if (!is_null($validemail)) {
return true;
} else {
return false;
}
答案 2 :(得分:0)
您的功能未使用任何参数。请使用参数化查询或转义。
答案 3 :(得分:0)
您的函数引用$ userId变量,该变量既不作为未声明为global的参数传入。建议您将其声明为参数并将其传递给.e.g
function is_premium($userId) {
}
答案 4 :(得分:0)
您的代码可能容易受到SQL注入攻击。
答案 5 :(得分:0)
我注意到有几个小问题,可能会导致非工作代码。让我复制你的一个功能并从那里开始工作:
function valid_email() {
$validemail_query = mysql_query("SELECT 'parentEmailOne' FROM 'users' WHERE 'fbID' ='".$userId."'");
$validemail = mysql_query($validemail_query);
if ($validemail != 'NULL') {
return true;
} else {
return false;
}
}
你要做的第一件事就是做一个查询,但你不是从数据库中选择字段,而是选择一个值(请不是那个''的意思是值和``是一个字段)。这将是一个更好的查询:
"SELECT `parentEmailOne` FROM `users` WHERE `fbID` = '" . $userID . "'"
此外,您使用了两次查询,这不是获取结果的正确方法。请使用mysql_fetch_array
获取数组的答案:
$validemail = mysql_fetch_array($validemail_query);
然后返回:
return !empty($validemail['parentEmailOne']);
此外,请将$userID
作为您的功能的输入(就像其他人已提到的那样),因为现在它始终是NULL
(空)。 (我的意思是这样:function valid_email($userID)
,然后对于ID为10的用户,将其称为valid_email(10)
。
小更新:您可能需要检查if-else语句,重复执行大量函数调用和检查。如果你这样做,你只是执行每个函数但得到相同的结果。
if(!empty($session))
{
if(valid_email())
{
if(is_premium())
include 'indexPremium';
else
include 'entermail.php';
}
else
include 'indexLoggedIn.php';
} else
include 'indexNotLogged.php';
这也让我相信您的支票可能存在错误,因为您希望人们在没有有效电子邮件时转到entermail.php
。 (如果我没有犯错,上面的if-else语句就是你的代码将为包含生成的内容,但你可能需要以下内容。)
if(!empty($session))
{
if(valid_email())
{
if(is_premium())
include 'indexPremium';
else
include 'indexLoggedIn.php';
}
else
include 'entermail.php';
} else
include 'indexNotLogged.php';