2016-07-29 8 views
-1

Aus irgendeinem Grund habe ich ein Problem, eine Sitzungsvariable zu setzen und mit einem if/else zu sehen, ob der Wert etwas Bestimmtes ist. Hier ist der relevante Code:PHP Sitzungsvariablen mit if/else

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

Ich weiß, dass $_SESSION["name"] definitiv festgelegt ist, aber ich kann nicht mein if/elseif/else zum elseif zu bewegen, weil es nicht wird immer, dass $_SESSION['status'] nicht gesetzt ist.

Was fehlt mir hier?

+0

Versuch '' && statt '' || dh ' if ((! isset ($ _ SESSION ["name"])) && (! isset ($ _ SESSION ['status']))) {' – Manikiran

+2

Lies auf" return "http://php.net/manual/de /function.return.php ;-) –

+0

@ Fred-ii- Ja ... das war das Problem. Ich habe es total vermisst, diese neu zu ordnen, als ich etwas kopiert und eingefügt habe. – jonmrich

Antwort

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

return die aktuelle Funktion und kehrt zum Angerufenen verlässt, bedeutet dies, dass Ihr $_SESSION['status'] = "name"; Code wird es nie lief, wechseln:

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

Ugh ... das war es. Ich kann nicht glauben, dass ich das verpasst habe. Ich werde akzeptieren, wenn ich dazu in der Lage bin. Schätze die Hilfe. – jonmrich