0

我正在尝试创建一个系统,该系统取决于 a) 登录的用户或 b) 如果在数组中找到用户名。

如果您已登录并在此人的friend_array 中,您应该会看到“取消好友”按钮。如果您在属于您自己的个人资料的页面上,则所有内容都将被隐藏 如果您不在您的页面上且不在数组中,则“添加朋友”。

Unfriend 似乎正在工作,但它似乎只是在我的个人资料中默认“添加朋友”:

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

1 回答 1

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']. 您有另一个布尔表达式测试 if ,除非为空TRUE == $joe1['id'],否则它将始终为真。$joe1['id']

作为旁注,您可以通过使用 Identical 和 Not Identical 运算符(=== 和 !==)来防止发生这种类型转换。

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";
}
于 2012-11-21T08:23:50.017 回答