我正在尝试创建一个系统,根据用户是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;
}
答案 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";
}