2012-11-21 123 views
0

我想創建一個系統,根據用戶是什麼登錄或b)如果在數組中找到用戶名。在if語句中創建一個'或'

如果您已經登錄並且在該人的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; 
} 
+8

我很驚訝它在做任何事情,在這裏有'$ cool = $ _GET ['id];'。 – MrCode

+0

確保你沒有在你的例子中引入類型。否則,人們會一直指出它(除非這是導致問題的原因)。 –

+4

什麼是問題? – shadyyx

回答

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"; 
} 
+2

或跟隨OP的邏輯:! 如果(in_array($ joe1 [ '用戶名'],$ friendArray)||($ _ GET [ '身份證'] = = $ joe1 [ '身份證'])) – MortenSickel

+0

@MortenSickel,是的,這可能是他所要尋找的。說實話有點難。無論哪種情況,動態類型鑄造都會讓他陷入困境。 –

+0

+1用於解釋。 –