1

さて、私は私のmail.phpのphpコードを持っているので、現在のユーザーIDがtoまたはfrom IDと一致しない場合、エラーメッセージが表示されますが、私はそれをテストし、どのような使用でもメッセージを見ることができます.コードは次のとおりです。

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);
}

しかし、== の代わりに != を追加すると、メッセージの送信者を含むすべての人にエラー メッセージが表示されます。この問題を解決する方法を知っている人はいますか?

4

2 に答える 2

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);
}
于 2013-05-09T21:31:37.137 に答える
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 IDまたは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
}

どちらも同じことを言っています。

それが役立つことを願っています!

于 2013-05-09T21:47:51.500 に答える