nharding99 Posted October 16, 2014 Share Posted October 16, 2014 I'd describe myself as a "basic" php programmer.... I'm trying to build my first multi-page forms. The first page is calculator_q1.php No session variables are needed here, I have omitted a few options, the code looks like this <form id="page1" method="post" action="calculator_q2.php"> <h1>1. Which best describes the primary and secondary sports combination that will be played on your pitch?</h1> <table> <tr><td>Rugby only</td><td><input type="radio" name="1_primary_secondary_combo" value="Rugby only"></td></tr> <tr><td>Rugby/Soccer</td><td><input type="radio" name="1_primary_secondary_combo" value="Rugby Soccer"></td></tr> <tr><td>Soccer/Hockey</td><td><input type="radio" name="1_primary_secondary_combo" value="Soccer Hockey"></td></tr> </table> <input class="blue" type="submit" value="Next"> </form> The 2nd page is calculator_q2.php. This has some php to start the session, copy the result of form 1 to a session var, I do a debug echo and the variable is printed correctly so I think have captured it correctly. In extract, I do this: <?php //Start the session session_start(); //Store our posted values in the session variables $_SESSION['1_primary_secondary_combo'] = $_POST['1_primary_secondary_combo']; ?> <?php $debug=True; if ($debug) { echo ("Debug: session for q1 = ".$_SESSION['1_primary_secondary_combo']); } ?> <form id="page2" method="post" action="calculator_q3.php"> <h1>2. Please choose a preferred surface</h1> <table> <tr><td>3G Rubber Crumb Filled Turf</td><td><input type="radio" name="2_preferred_surface" value="3G Rubber Crumb Filled Turf "></td></tr> <tr><td>Sand Filled Turf</td><td><input type="radio" name="2_preferred_surface" value="Sand Filled Turf"></td></tr> <tr><td>Sand Dressed Turf or<br>a Water Based Surface</td><td><input type="radio" name="2_preferred_surface" value="Sand Dressed Turf or a Water Based Surface"></td></tr> </table> <p> <script> function submitForm(action){ document.getElementById('page2').action = action; document.getElementById('page2').submit(); } </script> <input class="blue" type="button" onclick="submitForm('/calculator_q1.php')" value="Previous" /> <input class="blue" type="button" onclick="submitForm('/calculator_q3.php')" value="Next" /> </form> So far so good, but when I introduce page 3 (calculator_q3.php) then it prints the previous page's (from page 2) variable but can't find the session variable from question 1. This is from calculator_q3.php: <?php //Start the session session_start(); //Store our posted values in the session variables $_SESSION['2_preferred_surface'] = $_POST['2_preferred_surface']; ?> <?php $debug=True; if ($debug) { echo ("Debug: session for q1 = ".$_SESSION['1_primary_secondary_combo']); echo ("<br>Debug: session for q2 = ".$_SESSION['2_preferred_surface']); } ?> <form id="page3" method="post" action="calculator_q4.php"> <h1>3. Please choose one watering option</h1> <table> <tr><td>With a Rain Gun System</td><td><input type="radio" name="3_watering_option" value="With a Rain Gun System"></td></tr> <tr><td>With a Rain gun System + Water Borehole</td><td><input type="radio" name="3_watering_option" value="With a Rain gun System + Water Borehole"></td></tr> <tr><td>Not Required</td><td><input type="radio" name="3_watering_option" value="Not Required"></td></tr> </table> <p> <script> function submitForm(action){ document.getElementById('page3').action = action; document.getElementById('page3').submit(); } </script> <input class="blue" type="button" onclick="submitForm('/calculator_q2.php')" value="Previous" /> <input class="blue" type="button" onclick="submitForm('/calculator_q4.php')" value="Next" /> </form> To see this in action see: http://www.sports.hardingweb.net/calculator_q1.php Any insights would be appreciated. Many thanks. Quote Link to comment https://forums.phpfreaks.com/topic/291699-multi-page-forms-losing-the-session-variable/ Share on other sites More sharing options...
ginerjm Posted October 16, 2014 Share Posted October 16, 2014 Can't find a session var? 1 - you have to start the session at the top of every php script. 2 - Are you doing anything "special" with your sessions such as re-establishing the session id to avoid hackers and such? I doubt that at your level you would be doing it, but I have to ask. 3 - Are you doing any "unset" function on your session vars? Or on $_SESSION itself? PS - you do use uppercase for the name '$_SESSON' all the time, yes? Quote Link to comment https://forums.phpfreaks.com/topic/291699-multi-page-forms-losing-the-session-variable/#findComment-1493820 Share on other sites More sharing options...
mac_gyver Posted October 16, 2014 Share Posted October 16, 2014 your site isn't setting any session id cookie. it's likely that your session_start() statement isn't positioned in the code on your page before you output anything else to the browser. setting php's error_reporting to E_ALL and display_errors to ON or log_errors to ON would help you by displaying or logging all the php detected errors. Quote Link to comment https://forums.phpfreaks.com/topic/291699-multi-page-forms-losing-the-session-variable/#findComment-1493886 Share on other sites More sharing options...
Solution nharding99 Posted October 16, 2014 Author Solution Share Posted October 16, 2014 Thanks, putting session() right at the top fixed this. Thanks for the hints Quote Link to comment https://forums.phpfreaks.com/topic/291699-multi-page-forms-losing-the-session-variable/#findComment-1493916 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.