2013-05-09 83 views
1

好吧,我的mail.php有一個php代碼,這樣如果當前用戶標識與id或id不匹配,它會顯示一條錯誤消息,但我測試了它,任何使用都可以查看消息,下面的代碼:無法通過php查看消息?

if (!$mail['to_id'] == $account['id'] && !$mail['from_id'] == $account['id']) { 
    $system->message(L_ERROR, L_MAIL_ERROR_PERMISSION, './?area=forum&s=mail', L_CONTINUE); 
} 

但是,當我加=的==代替,它顯示給大家一個錯誤信息,包括誰發送消息的人!有誰知道我可以如何解決這個問題?

+1

你應該添加更多的代碼。還是隻是我是一個不好的讀者? – jtheman 2013-05-09 21:30:33

+0

*但是當我加入!=而不是== *你是否刪除每個值後面的'!'? – christopher 2013-05-09 21:30:44

+0

是的,我確實刪除了它們。編輯:我忘了從兩個值中取出來,謝謝你的幫助。 – Malik 2013-05-09 21:32:03

回答

2

請改用此代碼。

if ($mail['to_id'] != $account['id'] && $mail['from_id'] != $account['id']) { 
    $system->message(L_ERROR, L_MAIL_ERROR_PERMISSION, './?area=forum&s=mail', L_CONTINUE); 
} 
+1

請使用格式化工具:) – HamZa 2013-05-09 21:32:18

2

您的邏輯是:(!):

!$mail['to_id'] == $account['id'] 
&& 
!$mail['from_id'] == $account['id'] 

問題從做這源於

!$mail['to_id'] 

!$mail['from_id'] 

逆算子翻轉的價值它被應用於什麼。在這種情況下,您正在翻轉$ mail ID的值。這可能不會做你想做的事情,因爲這些ID,我假設,是整數。

它可能有助於在積極思考這個,然後反向整個事情

值得肯定的是:「!」

$mail['to_id'] == $account['id'] 
&& 
$mail['from_id'] == $account['id'] 

它的倒數被包裹了整個事情的(注意括號):

!(
    $mail['to_id'] == $account['id'] 
    && 
    $mail['from_id'] == $account['id'] 
) 

我們可以使用代數規則將該語句乘以「!」針對每個元素(包括AND運算符)。

!($mail['to_id'] == $account['id']) // Note you apply the inverse of to the whole expression 
!&&         // this isn't an actual code but for demonstration purposes 
!($mail['from_id'] == $account['id']) // Note you apply the inverse of to the whole expression 

它簡化成:

$mail['to_id'] != $account['id'] // Not Equal is inverse of equal 
||         // the inverse of && (AND) is || (OR) 
$mail['from_id'] != $account['id'] // Not Equal is inverse of equal 

其中規定:

「如果MAIL_TO OR Mail_From ID不匹配的帳戶ID,請執行以下代碼」

因此,在一天結束時,您應該可以使用:

if($mail['to_id'] != $account['id'] || $mail['from_id'] != $account['id']) 
{ 
    // do something 
} 

if(!($mail['to_id'] == $account['id'] && $mail['from_id'] == $account['id'])) 
{ 
    // do something 
} 

兩人都說同樣的事情。

我希望有幫助!