2016-03-27 55 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> 

編輯: 在問候的邏輯: 每次當特權用戶(管理員帳戶)修改其他用戶的賬戶狀態或訪問權限,則觸發電子郵件警報。 用戶訪問權是「管理員」或「用戶」,用戶狀態是「活動」或「非活動」。該消息告訴我受影響的帳戶以及這兩個變量的先前和當前狀態。

+0

你能解釋一下你的病情背後的邏輯是什麼?像「Admin」和「Inactive」一樣? –

+1

你的代碼很難跟在這麼長的塊中... –

+0

查看Adam Azad的答案,找到一個更好的方法來做到這一點。將您的邏輯決策與構建電子郵件正文分開,否則很難看到代碼中發生了什麼。 –

回答

2

使用三元以確定變量的值

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

而且,然後打印那些$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

完美的作品,謝謝。儘管如此,我還是喜歡蒂姆的內聯方法,使我無法定義更多的變量。 – Armitage2k

+0

@Armitage2k,你刪除變量並將'(($ action ==「change_access」&& $ access ==「User」)?「Admin」:「User」)'移動到變量中。 :) –

0

您同時還使用塊if語句內聯,並呼應結果輸出,而不是添加他們到變量。

如果必須內嵌的if語句,嘗試

"Access: ".($action == "change_access" && $access == "User") ? "Admin" : "User"."<br> ...