Клонировать монстров с помощью кнопки «Назад» и повторно отправить форму - PullRequest
0 голосов
/ 20 февраля 2012

Я создал скрипт карты, где пользователи могут поймать монстра на карте.Есть страница карты, затем они нажимают кнопку «поймать» и переходят на другую страницу, которая вставляет монстра в команду.Проблема в том, что пользователь щелкает назад, затем нажимает кнопку «поймать» снова, затем он снова добавляет того же монстра.

Так что мой вопрос: если у вас есть две страницы, есть ли у вас возможность не дать пользователю нажать обратно, затем переместиться и получить то же самое?результат опять?

Вот мой скрипт карты

<?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>

Затем здесь test678.php

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


?>

Таким образом, пользователь отправляет форму на map.php, а затем отправляет их вtest678.php и добавляет монстра, затем пользователь щелкает обратно, затем тот же монстр, которого они могут щелкнуть снова, и он добавит того же монстра .... Есть ли способ остановить это?

Ответы [ 2 ]

0 голосов
/ 20 февраля 2012

Перенаправление пользователя (через header("Location: [url]");) после POST должно исправить проблему с возвратом и обновлением двойных данных.

0 голосов
/ 20 февраля 2012

Можете ли вы добавить переменную $ _SESSION для этого показа, что она уже перехвачена.А затем в части заголовка просто проверьте, существует ли $ _SESSION?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...