2016-03-27 7 views
0

私のデータベースでアカウントのアクセス/ステータスが変更された後に送信される電子メールメッセージに取り組んでいます。しかし、私は以下の単純なIF文を動作させるようには思えません。私はANDと& &の間で切り替えることで構文を使いこなしましたが、ここで問題を見つけることはできません。文字列のif文に対するPHPの複数の条件

$email_message = " 
<h1>User Account Update</h1><hr> 
User <b>".$_SESSION['myusername']."</b> has just made changes to the following user account:<br> 
<br> 
Date: ".date("Y-m-d H:i:s", strtotime('+13 hours'))." (UTC+8)<br> 
User: ".$user."<br> 
<b>Action: ".str_replace("_"," ",$action)."</b><br> 
<br> 
Updated Access: ".if($action == "change_access" AND $access == "User") { echo "Admin"; } else { echo "User"; }."<br> 
Updated Status: ".if($action == "change_status" AND $status == "Active") { echo "Inactive"; } else { echo "Active"; }."<br> 
<hr> 
If you suspect suspicious activity, you can suspend the account by following the link below: 
"; 

if文が文字列で発生すると、特別な構文はありますか?

Updated Access: ".if($action == "change_access" AND $access == "User") { echo "Admin"; } else { echo "User"; }."<br> 
Updated Status: ".if($action == "change_status" AND $status == "Active") { echo "Inactive"; } else { echo "Active"; }."<br> 

EDIT:ロジックに関しては :特権ユーザ(管理者アカウント)が別のユーザーのアカウントの状況やアクセス権を変更 毎回、電子メールアラートがトリガされます。 ユーザーACCESSは "Admin"または "User"で、ユーザーSTATUSは "Active"または "Inactive"です。このメッセージは、影響を受けるアカウントと、その2つの変数の以前の状態と現在の状態を通知します。変数を決定する

+0

をしようとした場合、あなたをインライン化しなければならない場合は、あなたの状態の背後にあるロジックを説明できますか? 「Admin」と「Inactive」の場合のように –

+1

あなたのコードは、このような長いブロックに従うのは非常に難しいです... –

+0

これを行うためのより良い方法については、Adam Azadの答えをご覧ください。あなたの論理的意思決定を電子メール本体の構築から分離するか、コードで何が起こっているかを見るのが非常に難しくなります。 –

答えて

2

使っ三元は

$userType = (($action == "change_access" && $access == "User") ? "Admin" : "User"); 
$newStatus = (($action == "change_status" && $status == "Active") ? "Inactive" : "Active"); 

を値とし、あなたはまた、if文インラインブロックを使用し、出力に結果をエコーの代わりに追加されている$email_message

$email_message = " 
<h1>User Account Update</h1><hr> 
User <b>".$_SESSION['myusername']."</b> has just made changes to the following user account:<br> 
<br> 
Date: ".date("Y-m-d H:i:s", strtotime('+13 hours'))." (UTC+8)<br> 
User: ".$user."<br> 
<b>Action: ".str_replace("_"," ",$action)."</b><br> 
<br> 
Updated Access: ".$userType."<br> 
Updated Status: ".$newStatus."<br> 
<hr> 
If you suspect suspicious activity, you can suspend the account by following the link below:"; 
+0

これは良い答えです。私よりも良いです:) –

+0

完璧に動作します、ありがとう。それでも、私はTimのインライン・アプローチが好きです。より多くの変数を定義するのを防ぎます。 – Armitage2k

+0

@ Armitage2k、あなたは変数を削除し、 '(($ action ==" change_access "&& $ access ==" User ")?" Admin ":" User ")'を変数の中に移動します。 :) –

0

のものを印刷しますそれらを変数に追加します。

文は、

"Access: ".($action == "change_access" && $access == "User") ? "Admin" : "User"."<br> ... 
関連する問題