Php 用后退按钮关闭怪物并重新提交表单

Php 用后退按钮关闭怪物并重新提交表单,php,jquery,mysql,sql,Php,Jquery,Mysql,Sql,我已经建立了一个地图脚本,用户可以在地图上捕捉怪物。 有一个地图页面,然后他们单击“捕获”,进入另一个页面,将怪物插入到该团队。 问题是,用户单击返回,然后再次单击捕获,然后再次添加相同的怪物 因此,我的问题是,如果你有两个页面,是否会阻止用户单击“后退”和“前进”,并再次获得相同的结果 这是我的地图脚本 <?php $con = mysql_connect("localhost","blah",""); if (!$con) { die('Could not connect:

我已经建立了一个地图脚本,用户可以在地图上捕捉怪物。 有一个地图页面,然后他们单击“捕获”,进入另一个页面,将怪物插入到该团队。 问题是,用户单击返回,然后再次单击捕获,然后再次添加相同的怪物

因此,我的问题是,如果你有两个页面,是否会阻止用户单击“后退”和“前进”,并再次获得相同的结果

这是我的地图脚本

<?php


$con = mysql_connect("localhost","blah","");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("blah", $con);

$qry = mysql_query("SELECT * FROM pokemon
WHERE type1='fire'  AND swap='1' ");
$max = mysql_num_rows($qry) - 3; // i.e.: 5 rows would be 0,1,2,3,4
$random_number = mt_rand(0, $max);
$result = mysql_query("SELECT * FROM pokemon
WHERE type1='fire' AND swap='1'  LIMIT ".$random_number.", 1");

$resultarray = mysql_fetch_array($result);
echo "<br>";
echo "<br>";




?> 
<center>
<br />

<?php




    $username = strip_tags( addSlashes( $_SESSION['username'] ) ); // Remove any nasties
    $pokeID = strip_tags( addSlashes( $resultarray['id'] ) ); // Remove any nasties
    $pokeNAME = strip_tags( addSlashes( $resultarray['type1'] ) ); // Remove any nasties
    $pokePIC = strip_tags( addSlashes( $resultarray['pic'] ) ); // Remove any nasties

    $_SESSION['runonce'] == 1
?>


        <span class="style7"><strong>Pokemon Name :</strong> <?php echo $resultarray['name'] ?>
        <br />
        <strong>Pokemon Type :</strong> <?php echo $resultarray['type1'] ?>        </span><br />
<?php echo '<img src="http://myurl.net/'.$resultarray['pic'].'" width="100" height="100" />'; ?>
</center>
<center>

<form action="test678.php" method="post">
<input type="hidden" name="username" value="<?php echo $_SESSION['username']; ?>" />
<input type="hidden" name="id" value="<?php echo $resultarray['id']; ?>"  />
<input type="hidden" name="poke_name" value="<?php echo $resultarray['name']; ?>"  />
<input type="hidden" name="poke_type" value="<?php echo $resultarray['type1']; ?>"  />
<input type="hidden" name="poke_pic" value="<?php echo $resultarray['pic'] ?>" />
<input type="hidden" name="token" value="<?php echo md5($resultarray['name'].$salt.$resultarray['id']);?>" />
<input type="submit" name="Catch" value="Catch" />
</form>

能否为此添加一个$\u会话变量,以显示它已被捕获。然后在标题部分,只需检查$_会话是否存在?

在发布后重定向用户(通过
标题(“位置:[url]”;
)应该可以解决“后退”和“刷新双重数据”问题。

但正如我所说,用户在浏览器中单击“后退”,这会使他们返回到地图,因为变量将被取消设置。因此,他们捕获怪物,怪物捕获被设置,然后用户单击返回,然后返回地图,然后怪物捕获被取消设置,这意味着如果他们再次单击捕获,插入将起作用,因此他们可以通过单击上一步,然后单击上一步,然后单击上一步,然后单击上一步,然后单击上一步,然后单击上一步,然后单击上一步,然后单击上一步,然后单击上一步,然后单击下一步,从而捕获该怪物……那么您想阻止他们吗点击后退按钮,还是你想要它当你点击后退按钮时,它会创造一个全新的怪物来捕捉?您是否考虑过使用jQuery或AJAX,以便在他们单击怪物后将其添加到数据库中,然后创建一个新的怪物来捕获?最好是创建一个全新的怪物来捕获。我不知道阿贾克斯。只知道php和sql是我整个网站的基础。好的,我会提出一些建议。如果地图脚本是一个单独的页面,请继续添加
标题(“Pragma:no cache”)位于顶部,因此页面不会被缓存。这可能有助于在用户单击后退按钮时完全重新加载页面。如果它在另一个页面中,请确保在执行其他操作之前将其添加到PHP文件的最顶部。您还可以添加
标题(“Expire:Mon,Jan 2000 01:00:00 GMT”)
也可使页面自动过期。它会自动在页面上显示。。我刚刚测试过,他们仍然可以点击返回,同样的结果也在那里。。。
<?php

session_set_cookie_params(1200,'/','.pokemontoxic.net');



$salt = "jsdhgkjshgg";

?>

<?php


$error = Array();
$username  = isset($_POST['username']) ? $_POST['username'] : $error[] = "No Username defined";
$id        = isset($_POST['id']) ? $_POST['id'] : $error[] = "No ID defined";
$poke_name = isset($_POST['poke_name']) ? $_POST['poke_name'] : "No Pokeman Data defined (name)";
$poke_type = isset($_POST['poke_type']) ? $_POST['poke_type'] : "No Pokemon Data defined (type)";
$poke_pic  = isset($_POST['poke_pic']) ? $_POST['poke_pic'] : "No Pokemon Data defined (picture)";




if ( !empty ( $error ) )
{   $html = <<<ERROR_HTML
    <html>
    <head>
        <title>Errors Detected</title>
    </head>
    <body>
        <H3>Errors Have Been Detected</H3>
        <p>
            [ERRORS]
        </p>
    </body>
    </html>
ERROR_HTML;
    $str = "<ol>";
    for ( $i = 0; $i < count($errors); $i++ )
    {       $str .= "<li>". $errors[$i] ."</li>";
    }
    $str .= "</ol>";
    $html = str_replace("[ERRORS]", $str, $html);

    die($html);
}
$con = mysql_connect("localhost","ghgh","");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("iuiiui", $con);
mysql_query("INSERT INTO user_pokemon 
(pokemon, belongsto, exp, time_stamp, slot, level) VALUES('$poke_name','".$_SESSION['username']."', 100,'".time()."','0' ,'5' )
 ") or die(mysql_error());  
 echo $poke_name."<br>";
unset($_POST['username'] ); 
unset($_POST['id'] ); 
unset($_POST['poke_name'] ); 
unset($_POST['poke_type'] ); 
unset($_POST['poke_pic'] ); 
unset($id ); 
unset($poke_name ); 
unset($poke_type ); 
unset($poke_pic ); 
/*
if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }
*/


?>