1

同様の他の投稿を見るように言われる前に、それらを適用しようとしましたが、役に立たなかったことに注意してください.

一連の if ステートメントが true になった後、URL の変数をクリアする必要があります。次のコードがあります。

<?php


$_SESSION['passlevel']='0'; 

if ($_SESSION['passlevel'] == '0')

{
if(isset($_GET['box_1_color']))
{
$color=$_GET['box_1_color'];
    if($color == "#800080")
    {
    echo "you have passed step one.";

    $_SESSION['passlevel'] = '1';

    // add something that removes url string



    }
    else 
    {
    echo "you didn't select purple.";

    }   
}
else echo "login with your colorlock passcode.";

}

if ($_SESSION['passlevel'] == '1')

{
if(isset($_GET['box_1_color']))
{
$color=$_GET['box_1_color'];
    if($color == "#DD7500")
    {
    echo "you have passed step two.";
    $_SESSION['passlevel']='2'; 
            // add something that removes url string

    }
    else 
    {
    echo "you didn't select orange.";

    }   
}
else echo "enter remaining colors.";

}


?>

これは、div をクリックすると、10 個の div のそれぞれの背景が 10 個の色のいずれかに変化する、色依存のパスワード用です (一部のエコーは、デバッグの方法として現在のところのみ存在することに注意してください)。情報は、複数のフォームを介して URL に送信されます。

<form> 
<div id="box1" class="box" onclick='this.parentNode.submit()'></div>
<input type='hidden' name='box_1_color' value='<?php echo $box1color ?>'/> 
<input type='hidden' name='name' value='box1color'/> 
</form>

<form>
<div id="box2" class="box" onclick='this.parentNode.submit()'></div>
<input type='hidden' name='box_1_color' value='<?php echo $box2color ?>'/>
<input type='hidden' name='name' value='box2color'/> 
</form>

<form>
<div id="box3" class="box" onclick='this.parentNode.submit()'></div>
<input type='hidden' name='box_1_color' value='<?php echo $box3color ?>'/> 
<input type='hidden' name='name' value='box3color'/> 
</form>

<form>
<div id="box4" class="box" onclick='this.parentNode.submit()'></div>
<input type='hidden' name='box_1_color' value='<?php echo $box4color ?>'/>  
<input type='hidden' name='name' value='box4color'/> 
</form>

<form>
<div id="box5" class="box" onclick='this.parentNode.submit()'></div>
<input type='hidden' name='box_1_color' value='<?php echo $box5color ?>'/>  
<input type='hidden' name='name' value='box5color'/> 
</form>

<form>
<div id="box6" class="box" onclick='this.parentNode.submit()'></div>
<input type='hidden' name='box_1_color' value='<?php echo $box6color ?>'/> 
<input type='hidden' name='name' value='box6color'/> 
</form>

<form>
<div id="box7" class="box" onclick='this.parentNode.submit()'></div>
<input type='hidden' name='box_1_color' value='<?php echo $box7color ?>'/> 
<input type='hidden' name='name' value='box7color'/> 
</form>

<form>
<div id="box8" class="box" onclick='this.parentNode.submit()'></div>
<input type='hidden' name='box_1_color' value='<?php echo $box8color ?>'/>
<input type='hidden' name='name' value='box8color'/>
</form>

<form>
<div id="box9" class="box" onclick='this.parentNode.submit()'></div>
<input type='hidden' name='box_1_color' value='<?php echo $box9color ?>'/>
<input type='hidden' name='name' value='box9color'/>
</form>

<form>
<div id="box10" class="box" onclick='this.parentNode.submit()'></div>
<input type='hidden' name='box_1_color' value='<?php echo $box10color ?>'/> 
<input type='hidden' name='name' value='box10color'/> 
</form> 

いずれかの色 (紫) が選択された後の URL の例: http://localhost/colorlock/index.php?box_1_color=%23800080&name=box9color

だから私は ?box_1_color=%23800080&name=box9color 部分を削除したいと思います。次のコード ブロックが開始されたときに、ユーザーが次の色を選択できるようになる前に、URL の同じカラー コードですぐに実行されないように、「// URL 文字列を削除するものを追加する」というコードを削除するにはどうすればよいですか?

私の質問が明確であることを願っています(紛らわしいことは理解しています)。ありがとうございました。

4

3 に答える 3

2

あなたは3つのことの1つ/いくつかをする必要があります:

  1. POSTを使用します。これは良い考えですが、それでも...
  2. フォームの処理後、URL引数なしで同じページにリダイレクトします。
  3. ajaxを使用してユーザー入力を処理します。

これらの中で既存のコードと統合するのが最も簡単なのは、おそらく1と2の組み合わせです。これを行うには、コメントの場所に次の行を追加します。

header("HTTP/1.1 303 See Other");
header("Location: http://{$_SERVER['HTTP_HOST']}{$_SERVER['PHP_SELF']}");
exit;

...そして<form>、HTMLのすべての要素を変更して、次のようにします。

<form method="post">

...そして明らかに$_GETPHPコード内のすべての出現を次のように変更します$_POST

于 2012-07-10T21:30:06.377 に答える
1

GET の代わりに POST を使用できますか? PHP で $_GET の代わりに $_POST を使用すると、URL の内容を気にする必要がなくなります - URL は常にクリーンです。

于 2012-07-10T21:22:16.720 に答える
0

試す

unset($_GET['box_1_color']);

コードの適切な場所に

于 2012-07-10T21:29:43.667 に答える