制作'或'在if语句中

时间:2012-11-21 08:18:21

标签: php sql session

我正在尝试创建一个系统,根据用户是a)登录,或b)如果在数组中找到用户名。

如果您已登录并在该人的friend_array中,您应该会看到' Unfriend'按钮。 如果你在自己的个人资料页面上,一切都被隐藏了 如果您不在自己的网页上而不在数组中,请添加好友'。

Unfriend似乎工作正常,但它似乎只是违约' Add Friend'每当我'在我的个人资料中:

$cool = $_GET['id'];
$evan = mysql_query("SELECT * FROM users WHERE username='{$_SESSION['user_login']}'");
$joe1 = mysql_fetch_assoc($evan);

$cookie = mysql_query("SELECT * FROM users WHERE id='{$_GET['id']}'");
$joe = mysql_fetch_assoc($cookie);

$i = 0;
$berbs = $joe['username'];
error_reporting(E_ERROR | E_PARSE);

if (in_array($_SESSION['user_login'], $friendArray)) {
$addAsFriend = '<input type="submit" name="removefriend" value="UnFriend">';
echo $addAsFriend;

}
error_reporting(E_ERROR | E_PARSE);

if ($_GET['id'] == $joe1['id']) {
$addAsFriend = '<input style="display:none;" type="submit" name="addfriend" value="Add Frimm1end">';
echo $addAsFriend;

}
error_reporting(E_ERROR | E_PARSE);

if (!in_array($joe1['username'], $friendArray) || !$_GET['id'] == $joe1['id']) {
$addAsFriend = '<input type="submit" name="addfriend" value="Add Friend">';
echo $addAsFriend;
}

1 个答案:

答案 0 :(得分:2)

!$_GET['id']很可能总是评估为TRUE。以下一行:

if (!in_array($joe1['username'], $friendArray) || !$_GET['id'] == $joe1['id']) 

可以阅读

if (!in_array($joe1['username'], $friendArray) || TRUE == $joe1['id']) 

你可能想要

if (!in_array($joe1['username'], $friendArray) || $_GET['id'] != $joe1['id']) 

<强>解释 PHP的动态类型转换将采用任何正整数或非空字符串,并在尝试使用布尔表达式(例如!$_GET['id'])时将它们计算为TRUE。你有另一个布尔表达式测试TRUE == $joe1['id'],除非$joe1['id']为空,否则它将永远为真。

作为旁注,您可以使用相同和不相同的运算符(===和!==)来防止发生这种类型转换。

if (false == 0) {
    echo "This will be true";
}

if (true == 1) {
    echo "This will also be true";
}

if (false === 0) {
    echo "This will never echo";
}

if (true === 1) {
    echo "This will also never echo";
}