0

だから、私はこのRPGゲームをPHPを使ってずっと取り組んできました。さまざまなページで変数を保存するために、かなり長い間、いくつかのセッションを機能させようとしてきました。私のページから私の問題に関連するコードは次のとおりです。

ライン1:<?php session_start(); ?>

この部分は、ユーザーが「キャラクターを作成する」ために入力したフォームから結果を判断するだけです

if ($_GET["race"]=="Human"){
$_SESSION["race"] = "Human";
$_SESSION["raceadj"] = "Human";
$_SESSION['racestrengthbonus'] = 0;
$_SESSION['raceendurancebonus'] = 0;
$_SESSION['raceintellectbonus'] = 0;
$_SESSION['racewillpowerbonus'] = 0;
$_SESSION['raceluckbonus'] = 0;

そしてクラスのために

if ($_GET["career"]=="Knight"){
$_SESSION["career"] = "Knight";
$_SESSION['classstrengthbonus'] = 10;
$_SESSION['classendurancebonus'] = 10;
$_SESSION['classintellectbonus'] = 0;
$_SESSION['classwillpowerbonus'] = 0;
$_SESSION['classluckbonus'] = 0;
$_SESSION['RightHand'] = "Iron Sword";
$_SESSION['LeftHand'] = "Wooden Shield";
$_SESSION['Armor'] = "Iron Armor";

これらすべてが使用されているコードは次のとおりです。

<?PHP
echo "<div class=\"playerstats\" align=\"center\"><span class=\"playername\">".$_GET["name"]."</span><br><span class=\"redtext\">".$_SESSION["race"]." - ".$_SESSION['career']." - ".$_SESSION["health"]." HP - ".$_SESSION["gold"]." Gold</div>
<div style=\"float:left\"><span class=\"redtext\">Strength: </span>".$_SESSION["strength"]."<br>
<span class=\"redtext\">Endurance: </span>".$_SESSION["endurance"]."<br>
<span class=\"redtext\">Intellect: </span>".$_SESSION["intellect"]."<br>
<span class=\"redtext\">Willpower: </span>".$_SESSION["willpower"]."<br>
<span class=\"redtext\">Luck: </span>".$_SESSION["luck"]."<br></div>";

echo "<div class=\"equipment\"><span class=\"hover right\">".$_SESSION["RightHand"]."</span><span class=\"redtext\"> - Right Hand</span><br>
<span class=\"hover left\">".$_SESSION['LeftHand']."</span><span class=\"redtext\"> - Left Hand</span><br>
<span class=\"hover\">".$_SESSION['Armor']."</span><span class=\"redtext\"> - Armor</span><br></div>"; ?>

このページを初めて読み込むと、すべてが正しく表示されます。名前、人種などはすべて、ユーザーがフォームに入力したものを表示しますが、ユーザーがページ上のアクション (同じページに結果を表示する単純なフォーム) のいずれかを使用した場合、変数は保存されません。名前を保存せずに、レースとクラスの両方の「else」結果に直接移動します。何が間違っているのかわかりません。何か助けはありますか?

4

3 に答える 3

2

session_startセッション変数を使用したいページの最初とすべてのページにあることを確認してください。最初に session_start を宣言するのを忘れると、セッションは忘れられてしまいます。

編集:

page1.php

<?php session_start(); $_SESSION['bar'] = "SAVED SESSION"; ?>

page2.php

<?php session_start(); echo $_SESSION['bar']; ?> // outputs 'SAVED SESSION'

page3.php

<?php echo $_SESSION['bar']; ?> // outputs ''; session is forgotten

編集: ここでテスト ゲームの一部を再作成しました: http://www.huinda.com/test/セッションは機能しますが、誤って処理するだけなので、誤って消去されるか、誤って null に設定されます。

于 2012-07-14T04:27:44.477 に答える
0

フォームが送信されたら、$_GET に 'race' と 'career' がありますか?

于 2012-07-14T04:20:01.210 に答える
0

おそらく form method=POST の場合、 $_GET[var] は変数を見つけられません。最初のビューと言いましたが、正しく表示されるため、値が取得されたようです。

php.ini ファイルでセッション ストアを構成し、Web サーバーを再起動する必要があると思われます。

session.save_path

Web サーバーによる書き込み可能なディレクトリであることを確認してください。

于 2012-07-14T04:49:27.607 に答える