php - redirect brings up page with outdated information -
i have character creation form enter name of character press submit. brings success page. however, don't want user able use button return character creation page, on character creation page redirect main menu page if detected referring page success page. when brings main menu page, information shows out of date. have refresh page reflect latest changes. it's if redirect bringing cached version of page....
any ideas why latest changes aren't being shown on redirect?
<?php // first execute our common code connection database , start session define('myconst', true); include('database.class.php'); include('table.class.php'); include('user.class.php'); include('loginattempts.class.php'); include('timer.class.php'); include('functions.php'); include('loginf.php'); include('character.class.php'); include('playercharacter.class.php'); $dbo = database::getinstance(); $dbo -> connect("***********", "********", "*********", "********", array(pdo::mysql_attr_init_command => 'set names utf8')); secsessionstart(); // @ top of page check see whether user logged in or not if(empty($_session['user'])) { // if not, redirect them login page. header("location: login.php"); // remember die statement absolutely critical. without it, // people can view members-only content without logging in. die("redirecting login.php"); } // below point in file secured login system if($_server['http_referer'] == "success.php") { // if not, redirect them login page. header("location: mainmenu.php"); // remember die statement absolutely critical. without it, // people can view members-only content without logging in. die("redirecting mainmenu.php"); } if(!empty($_post)) { $character = new character(); $data = array("character_name" => $_post['charactername'], "health" => 0, "money" => 1500, "exp" => 0, "rank" => 0, "points" => 0); $character -> bind($data); $character -> store(); $character_id = $dbo -> getconnection() -> lastinsertid(); $playercharacter = new playercharacter(); $data = array("character_id" => $character_id, "user_id" => $_session['user']['user_id']); $playercharacter -> bind($data); $playercharacter -> store(); $query = "select * playercharacter character_id = :character_id"; try { $stmt = $dbo->getconnection()->prepare($query); $result = $stmt->execute(array(':character_id'=>$row['character_id'])); } catch(pdoexception $ex) { die("failed run query4: " . $ex->getmessage()); } $row = $stmt->fetch(pdo::fetch_assoc); $_session['playercharacter'] = $row; // if not, redirect them login page. header("location: success.php"); // remember die statement absolutely critical. without it, // people can view members-only content without logging in. die("redirecting success.php"); } ?> <!doctype html> <head> <meta http-equiv="content-type" content="text/html" /> <meta name="author" content="lolkittens" /> <title>untitled 5</title> </head> <body> <h1>create character</h1> <form action="createcharacter.php" method="post"> enter name:<br /> <input type="text" name="charactername" value="" /> <br /><br /> <input type="submit" value="create" /> </form> </body>
createcharacter.php
<?php // first execute our common code connection database , start session define('myconst', true); include('database.class.php'); include('table.class.php'); include('user.class.php'); include('loginattempts.class.php'); include('timer.class.php'); include('functions.php'); include('loginf.php'); $dbo = database::getinstance(); $dbo -> connect("*************", "*********", "**********", "***********", array(pdo::mysql_attr_init_command => 'set names utf8')); secsessionstart(); // @ top of page check see whether user logged in or not if(empty($_session['user'])) { // if not, redirect them login page. header("location: login.php"); // remember die statement absolutely critical. without it, // people can view members-only content without logging in. die("redirecting login.php"); } // below point in file secured login system // can display user's username them reading session array. remember because // username user submitted content must use htmlentities on before displaying user. ?> <!doctype html> <html> <head> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"> </script> </head> <body> <a href="mainmenu.php">success!</a></a> </body> </html>
success.php
<?php // first execute our common code connection database , start session define('myconst', true); include('database.class.php'); include('table.class.php'); include('user.class.php'); include('loginattempts.class.php'); include('timer.class.php'); include('functions.php'); include('loginf.php'); $dbo = database::getinstance(); $dbo -> connect("*********************", "******************", "***************", "*****************", array(pdo::mysql_attr_init_command => 'set names utf8')); secsessionstart(); // @ top of page check see whether user logged in or not if(empty($_session['user'])) { // if not, redirect them login page. header("location: login.php"); // remember die statement absolutely critical. without it, // people can view members-only content without logging in. die("redirecting login.php"); } // below point in file secured login system // can display user's username them reading session array. remember because // username user submitted content must use htmlentities on before displaying user. ?> <?php $stmt = $dbo->getconnection()->prepare("select count(character_name) playercharacter join `character` on (playercharacter.character_id = `character`.character_id) user_id = :user_id"); $query_params = array(':user_id'=>$_session['user'][user_id]); // execute prepared query. $result = $stmt->execute($query_params); $rows = $stmt->fetch(pdo::fetch_num); echo $rows[0]; $createcharacters = 4 - $rows[0]; for($i = 0; $i < $createcharacters; $i++) { echo '<a href="createcharacter.php">create character</a><br />'; } for($i = 0; $i < $rows[0]; $i++) { echo '<a href="loadplayer.php?id='.$rows[0].'">play</a> <br />'; // echo '<a href="loadplayer.php">create character</a><br />`; } ?> <!doctype html> <html> <head> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <script src="functions.js"></script> </head> <body> </body> </html>
mainmenu.php
the line
if($_server['http_referer'] == "success.php")
is never going true. $_server['http_referer']
(when set) contains url, not file name. therefore, execution continues. either html code shown or block starting if(!empty($_post)) {
executed , user redirected success.php.
you better results setting session variable upon success. when variable set, redirect mainmenu.php. alternately, can use url parameter in redirect statements:
header("location: success.php?complete=yes")
and check this:
if ($_get['complete'] == 'yes') { // redirect main menu
Comments
Post a Comment