2016-07-29 74 views
-1

出於某種原因,我遇到了設置會話變量的問題,並使用if/else來查看該值是否等於某個特定的值。下面是相關的代碼:帶有if/else的PHP會話變量

function ask_name(){ 
    return "What is your name?\n\n"; 
    $_SESSION['status'] = "name"; 
} 

if (!isset($_SESSION["name"])||!isset($_SESSION['status'])) { 
    $message = ask_name(); 
} 
elseif ($_SESSION["status"]==="name"){ 
$message = hello_name(); 
} 
else{ 
    $message = respond_to_answer(); 
} 

我知道$_SESSION["name"]肯定是確定,但我不能讓我的if/elseif/else移動到elseif因爲它沒有得到那個$_SESSION['status']未設置。

我在這裏錯過了什麼?

+0

試''&&代替''||即' if((!isset($ _ SESSION [「name」]))&&(!isset($ _ SESSION ['status']))){' – Manikiran

+2

閱讀「return」http://php.net/manual/en /function.return.php ;-) –

+0

@ Fred-ii-是的......這是問題所在。當我做了一些複製和粘貼時,我完全錯過了重新排序。 – jonmrich

回答

1
function ask_name(){ 
    return "What is your name?\n\n"; 
    $_SESSION['status'] = "name"; 
} 

return退出當前功能並返回到被叫方,這意味着你的$_SESSION['status'] = "name";代碼是絕然,其切換:

function ask_name(){ 
    $_SESSION['status'] = "name"; 
    return "What is your name?\n\n"; 
} 
+1

呃......就是這樣。不能相信我錯過了這一點。我可以接受。感謝幫助。 – jonmrich