我有我的$ _SESSION ['ugid'] = 1。但爲什麼它仍然落入IF塊? 我的病情陳述有問題嗎? 請指教。謝謝。PHP:我的IF語句有什麼不對嗎?
if(($_SESSION['ugid']!="1")||($_SESSION['ugid']!="2"))
{
$_SESSION['error']="access";
header("location:../error.php");
}
我有我的$ _SESSION ['ugid'] = 1。但爲什麼它仍然落入IF塊? 我的病情陳述有問題嗎? 請指教。謝謝。PHP:我的IF語句有什麼不對嗎?
if(($_SESSION['ugid']!="1")||($_SESSION['ugid']!="2"))
{
$_SESSION['error']="access";
header("location:../error.php");
}
使用& &代替||
if(($_SESSION['ugid']!="1")&&($_SESSION['ugid']!="2"))
{
$_SESSION['error']="access";
header("location:../error.php");
}
只是因爲您使用的是OR條件。
if(($_SESSION['ugid']!="1")||($_SESSION['ugid']!="2"))
此全文
if session variable 1 doesn't equal 1 **OR** session 2 variable doesn't equal 2
顯然,會話2變量不等於2,因此要輸入該代碼塊。
因爲如果它是1,它仍然不是2(因爲OR)。我想你的意思是把&&
。
請儘量將
if(($_SESSION['ugid']!=1)||($_SESSION['ugid']!=2))
{
$_SESSION['error']="access";
header("location:../error.php");
}
「1」== 1在php中評估爲true。你的答案如何幫助? – TigOldBitties
如果if語句像這樣有:
if (expr1 || expr2) {
// do something
}
與所述第一條件,expr1
是假的,那麼PHP將評估第二個條件。在這種情況下,$ _SESSION ['ugid']!=「2」是true
,所以它執行if塊中的代碼。
答案取決於你想要做什麼。如果1
或2
是唯一有效的值(即,那些值以外的任何值都是您的應用程序中的錯誤),那麼您可以用&&
替換||
。我認爲它可能會讀一點更好做這樣的事情:
$valid_guids = array(1, 2);
if (!in_array($_SESSION['guid'], $valid_guids)) {
// Error code
}
真正的問題是,如果他們應該能夠進入該代碼塊在所有如果'($ _SESSION [「UGID」] ==「1 「)'。如果是這樣,那麼簡單地將它改爲AND語句並不是正確的方法。 –