-1

この機能を機能させるために、さまざまなことを試しました。私が抱えている特定の問題の解決策があるかどうかを確認するために、stackoverflow 全体を検索しましたが、どこにも行きません。ユーザーがリセットボタンを押したときにセッション変数の値を0にリセットしたかったのですが、これは単なる送信ボタンです。それを get に変更してから、サーバーからプルするように if ステートメントを設定して、リクエストが GET かどうかを確認してみました。私は POST でも同じことをしましたが、うまくいきませんでした。セッションはそのまま残り、まったく破棄されません。これは、echo ステートメントを使用してテストを実行しようとしたが、何も返されないため、if ステートメントを無視しているようなものです。問題の原因となっている可能性のあるアイデアはありますか? セッション変数にデータを入力し、それをという変数に設定しています$db_value. これを行った理由は、結果をデータベースに書き込み、ユーザーがプレイを続けたときにデータベースから再度取得できるようにするためです。

<?php session_start();
    $host = "localhost";
    $user = "username here";
    $pass = "";
    mysql_connect($host, $user, $pass) or die(mysql_error());
    mysql_select_db("RPS") or die(mysql_error());
    mysql_query("SET SQL_SAFE_UPDATES=0;"); // allows updating of table
    mysql_query("Create table if not exists RPS (score int);");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Rock, Paper, scissors</title>
</head>
<body>

</body>
</html>

<?php
if (isset($_SESSION['Score'])) {
if ($_POST['user_choice']) {
    $user_choice = $_POST['user_choice'];

    $Choosefrom = array(Rock, Paper, Scissors);
    $Choice = rand(0, 2);
    $Computer = $Choosefrom[$Choice];


    //create a variable for the database to use
    $q = mysql_query("SELECT * FROM RPS;");
    $db_array = mysql_fetch_array($q);
    $db_value = $db_array[0];

    if ($user_choice == $Computer) {
        echo 'Result : Draw +0';
        $_SESSION['Score'] = (int) $_SESSION['Score'];
        $db_value = $_SESSION['Score'];
        mysql_query("UPDATE RPS SET score=$db_value;");
    } else if ($user_choice == 'Rock' && $Computer == 'Scissors') {
        echo 'Result : Win +1';
        $_SESSION['Score'] = (int) $_SESSION['Score'] + 1;
        $db_value = $_SESSION['Score'];
        mysql_query("UPDATE RPS SET score=$db_value;");
    } else if ($user_choice == 'Rock' && $Computer == 'Paper') {
        echo 'Result : Lose -1';
        $_SESSION['Score'] = (int) $_SESSION['Score'] - 1;
        $db_value = $_SESSION['Score'];
        mysql_query("UPDATE RPS SET score=$db_value;");
    } else if ($user_choice == 'Scissors' && $Computer == 'Rock') {
        echo 'Result : Lose -1';
        $_SESSION['Score'] = (int) $_SESSION['Score'] - 1;
        $db_value = $_SESSION['Score'];
        mysql_query("UPDATE RPS SET score=$db_value;");
    } else if ($user_choice == 'Scissors' && $Computer == 'Paper') {
        echo 'Result : Win +1';
        $_SESSION['Score'] = (int) $_SESSION['Score'] + 1;
        $db_value = $_SESSION['Score'];
        mysql_query("UPDATE RPS SET score=$db_value;");
    } else if ($user_choice == 'Paper' && $Computer == 'Rock') {
        echo 'Result : Win +1';
        $_SESSION['Score'] = (int) $_SESSION['Score'] + 1;
        $db_value = $_SESSION['Score'];
        mysql_query("UPDATE RPS SET score=$db_value;");
    } else if ($user_choice == 'Paper' && $Computer == 'Scissors') {
        echo 'Result : Lose -1';
        $_SESSION['Score'] = (int) $_SESSION['Score'] - 1;
        $db_value = $_SESSION['Score'];
        mysql_query("UPDATE RPS SET score=$db_value;");
    }

    echo ' You\'re score is currently: ' . $_SESSION['Score'];
    echo '<a href="rps.php">Play Again ?</a>';
    echo '<form method="POST" action="rps.php"><input type="hidden" name="hidden" /><input type="submit" value ="Reset" name="reset" /></form>';
    if ($_POST['reset']) {
        $_SESSION['Score'] = 0;
        $db_value = $_SESSION['Score'];
        unset($_SESSION['Score']);
        session_start();
        session_destroy();
        mysql_query("UPDATE RPS SET score=$db_value;");
        header('Location:rps.php');
    }
} else if (!$_POST['user_choice']) {
    echo 'Your Current Score is: ' . $_SESSION['Score'] . '<form action="rps.php" method="post" />
     <input type="image" src="images/Rock.png" alt="Rock" name="user_choice" value="Rock" title="Rock" height="115" /> <br /><br />
      <input type="image" src="images/Paper.png" alt="Paper" name="user_choice" value="Paper" title="Paper" height="115"/> <br /><br />
       <input type="image" src="images/Scissors.png" alt="Scissors" name="user_choice" value="Scissors" title="Scissors" height="115"/> <br /><br />
   </form> ';
     }
 } else if (!isset($_SESSION['Score'])) {
      $_SESSION['Score'] = 0;

   echo 'Your Current Score is: ' . $_SESSION['Score'] . '<form action="rps.php" method="post" />
  <input type="image" src="images/Rock.png" alt="Rock" name="user_choice" value="Rock" title="Rock" height="115" /> <br /><br />
  <input type="image" src="images/Paper.png" alt="Paper" name="user_choice" value="Paper" title="Paper" height="115"/> <br /><br />
   <input type="image" src="images/Scissors.png" alt="Scissors" name="user_choice" value="Scissors" title="Scissors" height="115"/> <br /><br />
      </form>';
            }
           ?>
             echo'<form method="POST" action="">
             <input type="hidden" name="hidden" />
             <input type="submit" value ="Reset" name="reset" />
            </form>';
             if (isset($_POST['reset']) && ($_POST['reset'] == "Reset")) {
             $_SESSION['Score'] = 0;
            $db_value = $_SESSION['Score'];
           unset($_SESSION['Score']);
            session_start();
          session_destroy();
          mysql_query("UPDATE RPS SET score=$db_value;");
           header('Location:rps.php');
         }
4

2 に答える 2

1

基地をカバーするためにgetまたはpostする代わりに、$ _REQUEST['Reset']を試すことができます。セッションを破棄する場合にのみ、コードの最上部で次のシーケンスを使用してください...

$session_id = session_id();

if(empty($session_id)){
 session_start();
}

if(isset($_REQUEST['Reset'])){
 session_unset();
 session_destroy();
 $_SESSION = array();
 session_start();
 session_regenerate_id();
}

やがて、あなたの形はかなり間違っています。ここの値からデータを取得しているとは思えません。これに変更します:

echo ' You\'re score is currently: ' . $_SESSION['Score'];
echo '<form method="POST" action="rps.php"><input type="hidden" name="hidden" /><input type="submit" value ="Play Again" name="Reset" /></form>';

..。

次に、ページの上部に、私が置いたものに加えて、あなたの少しを実行します...

$session_id = session_id();

if(empty($session_id)){
 session_start();
}

if(isset($_REQUEST['Reset'])){
 $_SESSION['Score'] = 0;
 $db_value = $_SESSION['Score'];
 session_unset();
 session_destroy();
 $_SESSION = array();
 session_start();
 session_regenerate_id();

 mysql_query("UPDATE RPS SET score = $db_value WHERE unique_field = $unique_field");
 header('Location:rps.php');
 exit;
}

これを使用する場所:

if ($_POST['reset']) {

条件なしで書き込むと、常にtrueが返されます。値のために。さらに、PHPは大文字と小文字を区別するため、私が書いた方法で行う場合は、リセットを使用してください。

XHTML検証を使用しておらず、HTML 4.01 Transitionalを使用しているため、これを行わないでください。

<br />

これを行う:

<br>

また、それはあなたの画像の/にも当てはまります。

最終的に、ステートメントはテーブル全体のすべてのレコードを変更するため、更新を行うときは一意の値を使用してください。WHERE句を使用した私の例を参照してください。

于 2012-12-07T10:35:40.773 に答える
0

申し訳ありませんが、これは書き直されたコードです... (インデントについて申し訳ありません。この wysiwyg エディターは非常に貧弱で、役に立ちません...)

<?php
//error_reporting(E_ALL);
$session_id = session_id();

if(empty($session_id)){

session_start();
$ DB_Server
= "ホスト"; //MySQL サーバー
$DB_Username = "user"; //MySQL ユーザー名
$DB_Password = "pass"; //MySQL パスワード
$DB_DBName = "db"; //MySQL データベース名
$db = mysql_connect($DB_Server, $DB_Username, $DB_Password);
// ベースの
選択 $host = $DB_Server;
$user = $DB_Username;
$pass = $DB_Password;
$db = mysql_connect($host, $user, $pass) または die(mysql_error());
mysql_select_db($DB_DBName,$db) または die(mysql_error());
//mysql_query("SET SQL_SAFE_UPDATES=0;"); // テーブルの更新を許可します

//mysql_query("存在しない場合はテーブルを作成する RPS (スコア int);");
/*
SET FOREIGN_KEY_CHECKS=0;
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

CREATE TABLE IF NOT EXISTS RPS (
score int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

RPS (スコア) 値 (0) に挿入します。
SET FOREIGN_KEY_CHECKS=1;*/

?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//FR" " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> ; <html xmlns=" http://www.w3.org/1999/xhtml"> ;
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15" />

<title>じゃんけん</title>
<style type="text/ css">
.rock {

background-image:url(pierre.png);
高さ: 159px;

幅: 159px;
}
.paper {

background-image:url(feuille.png);
高さ: 159px;

幅: 159px;
}
.

ハサミ { background-image:url(ciseaux.png);
高さ: 159px;

幅: 159px;
}
</style>

</head>
<body>
<?php
if (isset($_SESSION['Score'])) {
if (isset($_GET['user_choice'])) {
$user_choice = $_GET['ユーザー選択'];

$Choosefrom = array('Rock', 'Paper', 'Scissors');

srand((double)microtime()*1000000);
$チョイス = ランド (0, 2); $Computer = $Choosefrom[$Choice];

//データベースが使用する変数を作成
$q = mysql_query("SELECT score FROM RPS");
$db_array = mysql_fetch_array($q); $db_value = $db_array[0];

if ($user_choice == $Computer) {
echo 'Result : Draw 0';
$_SESSION['Score'] = (int) $_SESSION['Score'];
$db_value = $_SESSION['スコア'];

mysql_query("UPDATE RPS SET score='".$db_value."'");
} else if ($user_choice == 'Rock' && $Computer == 'Scissors') {

echo 'Result : Win +1';
$_SESSION['Score'] = (int) $_SESSION['Score'] + 1;
$db_value = $_SESSION['スコア'];
mysql_query("UPDATE RPS SET score='".$db_value."'");
} else if ($user_choice == 'Rock' && $Computer == 'Paper') {

echo 'Result : Lose -1';
$_SESSION['Score'] = (int) $_SESSION['Score'] - 1;
$db_value = $_SESSION['スコア'];
mysql_query("UPDATE RPS SET score='".$db_value."'");
} else if ($user_choice == 'Scissors' && $Computer == 'Rock') {

echo 'Result : Lose -1';
$_SESSION['Score'] = (int) $_SESSION['Score'] - 1;
$db_value = $_SESSION['スコア'];
mysql_query("UPDATE RPS SET score='".$db_value."'");
} else if ($user_choice == 'はさみ' && $Computer == '紙') {

echo '結果: 勝利 +1';
$_SESSION['Score'] = (int) $_SESSION['Score'] + 1;
$db_value = $_SESSION['スコア'];
mysql_query("UPDATE RPS SET score='".$db_value."'");



$_SESSION['Score'] = (int) $_SESSION['Score'] + 1;
$db_value = $_SESSION['スコア'];
mysql_query("UPDATE RPS SET score='".$db_value."'");
} else if ($user_choice == 'Paper' && $Computer == 'Scissors') {

echo 'Result : Lose -1';
$_SESSION['Score'] = (int) $_SESSION['Score'] - 1;
$db_value = $_SESSION['スコア'];
mysql_query("UPDATE RPS SET score='".$db_value."'");
}

echo '現在のスコア: ' . $_SESSION['スコア'];
echo '<form method="GET" action="shifumi.php"> <input type="hidden" name="reset" value="Reset" />
<input type="submit" value="Play Again" / >

</form>';
if ($_GET['reset']) {

$_SESSION['Score'] = '0';
$db_value = $_SESSION['スコア']; mysql_query("UPDATE RPS SET score='".$db_value."'");

unset($_SESSION['Score']);
//session_start();

session_destroy();
if (!headers_sent()){

header('Location:shifumi.php');
}else{
echo '<script language=\"JavaScript\">window.location=\'shifumi.php\';</script>'; }
}
} else if (!isset($_GET['user_choice'])) { echo 'あなたの現在のスコアは: ' . $_SESSION['スコア'] . '<form action="shifumi.php" method="GET" />

<input type="hidden" name="user_choice" value="Rock" />
<input type="submit" class="rock" value= "" alt="Rock" />
</form>
<br /><br />

<form action="shifumi.php" method="GET" />
<input type="hidden" name="user_choice" 値="用紙" />

<input type="submit" class="用紙" value="" alt="用紙" />

</form>
<





</form> ';
}
} else if (!isset($_SESSION['Score'])) {
$_SESSION['Score'] = '0';

echo '現在のスコア: ' . $_SESSION['スコア'] . '<form action="shifumi.php" method="GET" />

<input type="hidden" name="user_choice" value="Rock" />
<input type="submit" class="rock" value= "" alt="Rock" />
</form>
<br /><br />
<form action="shifumi.php" method="GET" />

<input type="hidden" name="user_choice" 値="用紙" />
<input type="submit" class="用紙" value="" alt="用紙" />
</form>
<br /><br />
<
form action="shifumi.php" method="GET" /> <input type="hidden" name="user_choice" value="Scissors" />

<input type="submit" class="scissors" value="" alt="はさみ" /> <br /><br />
</form>';
}

echo'<form method="GET" action="shifumi.php">

<input type="hidden" name="reset" value="Reset" />
<input type="submit" value="Reset" />

</form>';
if (isset($_GET['reset']) && ($_GET['reset'] == "リセット")) {
$_SESSION['Score'] = '0';
$db_value = $_SESSION['スコア'];

mysql_query("UPDATE RPS SET score='".$db_value."'");

unset($_SESSION['Score']);
//session_start();

session_destroy();
if (!headers_sent()){

header('Location:shifumi.php');
}else{
echo '<script language=\"JavaScript\">window.location=\'shifumi.php\';</script>'; }

}

?>

</body>
</html>

于 2013-09-30T17:07:13.887 に答える