0

どのユーザーがa)ログインしているか、b)ユーザー名がアレイにあるかに応じて、システムを作成しようとしています。

ログインしてその人のfriend_arrayにいる場合は、「Unfriend」ボタンが表示されます。あなたがあなた自身のプロフィールであるページにいる場合、すべてが隠されています あなたのページにも配列にもない場合は、「友達を追加」してください。

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 の動的型キャストは、正の整数または空でない文字列を取り、 のようなブール式を試行すると、それらを TRUE と評価します!$_GET['id']。if をテストする別のブール式があり、が空でTRUE == $joe1['id']ない限り常に true になります。$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";
}
于 2012-11-21T08:23:50.017 に答える