forms - PHP- Fix problem where sessions only take effect after refreshing -


please review this stackoverflow post.

i have same php problem bob_cobb. here's brad chrisite's answer:

order of operations.

place session creation , test-for-validity check @ top of page rest of page can make judgment calls off existence of $_session['username']

(chances you're trying validate them inside content area "yay" or "ney" message appears in desired section of document. pretty, yes, whole top-half of page can't see it's [potentially] valid session.)

he saying session_start() , conditionals check session variables should @ top, rest of page act based upon that.

however, session-check is @ top of page.

<?php session_start();  if ($_session['username'])  //user logged in, echo log out button. ...      else  //user not logged in, echo log in form & button. ...      //login form validation if user not logged in , submitted form. //at end, create session variable ($_session['username'])  //destroy session if user pressed log out button. session_destroy(); ?> 

everything works fine, but, poster of other question, have refresh page, top script executed (the script checks $_session['username']).

why that?

do not echo before entire control flow finished. mean should work separate logic display (even better: use pattern model-view-controller). in case, maybe can this:

<?php /* place control logic @ beginning.    not echo in block. */  session_start();  if ($_session['username']) {   $loggedin = true; } else {   $loggedin = false;   ...        //login form validation if user not logged in , submitted form.   //if login succeeded, set $loggedin true.   //at end, create session variable. }  //destroy session if user pressed log out button.   session_destroy();  /* display logic below, not change state here */  if($loggedin) {   echo logout button } else {   echo login form } ?> 

Comments

Popular posts from this blog

c++ - Is it possible to compile a VST on linux? -

java - Output of Eclipse is rubbish -

jquery - Confused with JSON data and normal data in Django ajax request -