-4

特定のphpスクリプトが実行されたかどうか、または特定のフォームが送信されたかどうかを検出したいのですが、それが真の場合、ユーザーは最初に送信ボタンをクリックしなければ、サイトの他の場所に移動できません! 戻って更新したい場合、または私のサイトで何か他のものをクリックしたい場合は、いいえ、前のタスクを完了していないためできません。ウェブサイトは前のフォームまたは結果を再読み込みし、続行するには、フォーム ボタンの [終了] またはヘッダー リンクの [ホームに戻る] をクリックする必要があります。

これを望まない理由は、単純な戦闘ゲームを php でシミュレートしていて、これを達成する方法がわからないからです。多分javascriptで?

私は私をよりよく理解するために写真を提供しています:)誰かがこれのためのphpまたはjavascriptソリューションを持っていることを本当に願っています.

私が話していることの写真

編集:少なくとも反対票を投じる前に、解決策を探して調査を行うためのヒントを私に提供してください...私は迷子になり、何を検索すればよいかわかりません

4

1 に答える 1

0

これを行う最も簡単な方法は、セッション変数とコードへの単一のエントリ ポイントを使用することです。

1 つの index.php ファイルでユーザーがコードを実行し、必要に応じて出力を表示する場合は、セッション オブジェクト内の変数を使用して、別の状態になるまでユーザーを同じページにリダイレクトします。

次のようなコードの何か:

if ($_SESSION['in_combat'])
{
    // redirect user back to the same page
}
else
{
    // allow other action as requested by link clicked
}

セッションが設定されているtrue場合、アクションはユーザーを注意が必要なページにリダイレクトします。それ以外の場合は、クリックしたリンクに基づいてアクションを実行できます。

編集:単一のエントリポイントとは、コードのすべてが単一のindex.phpページから機能し、コードの実行のさらなるフローを制御することを意味します。そのインデックスページは、さまざまなセッション変数をチェックし、さまざまなPOSTGETリクエストなどを解釈して実行します。単一のエントリ ポイントは、ユーザーが実行するはずのアクションのみを実行できるようにするコードを作成するときに実行できる最善の方法です。

編集 2: まず、単一のエントリ ポイントは、PHP が必要に応じて実行されるようにする方法です。つまり、すべての HTML が単一の PHP コードを介して表示されます。私は通常、ベースの index.php ページを作成して、渡された変数に応じて実行フローを指示します (それらがセッションにあるかポスト/取得リクエストにあるか)。

これが常に最も効率的な方法であるとは限りませんが、コードに渡される変数に応じて、表示と実行の両方を制御する case ステートメントを使用するのが一般的です。

すでに MVC をセットアップしている場合、これは明らかに、ユーザーに表示されるページの実行を制御する場所です。これは明らかに index.php ページそのものです。

変数に関しては$_SESSION、これは簡単です。制御フローを MVC に入れると同時に、それをトリガーするコードをプログラムの実行パス内に埋め込みます。つまり、次のような制御フローを意味します。

if($_SESSION['inCombat'])
{
    // This is where you redirect the user to code that ensures that the user cannot get out of the combat sequence if they are in it already.
}
else
{
    // Normal Flow of execution...
}

if($hasInitiatedCombat)
// or something like the following:
// if($_REQUEST['startCombat']==true)
{
    // This is where the code execution path leads to when combat is initiated.
    $_SESSION['inCombat']==true;
}

この単純なコードを使用すると、人が戦闘 (またはその他のもの) に入るたびに、セッション変数が設定されTRUE、要求されたページのリンクがこの変数をチェックして、実行するコードが決定されます。に設定されている場合TRUE、リンクをクリックするだけで現在のコード実行パスを終了して別の場所に移動できるようにするのではなく、コードが自動的に実行されて、戦闘フェーズ内にいることが保証されます。

于 2013-08-04T10:18:04.070 に答える