2016-09-21 32 views
1

このコードを複数回実行すると、URLにサブ文字列?val=1を追加する理由を説明できますか?

例:私のスクリプトはindex.phpの中に位置しており、私はそれを3回実行した場合、私は私のブラウザでこのURLを持っています:http://localhost/index.php?val=1?val=1?val=1

私はhttp://localhost/index.php?val=1を持っていると思います。 。 。

<?php 
     if(isset($_POST['hidden']) && $_POST['hidden'] == 2){ 
      $page = $_SERVER['HTTP_REFERER']; 
      header("location: $page?val=1"); 
     } 
?> 
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST"> 
     <input name ="hidden" value="2"> 
     <input type="submit"> 
    </form> 
+3

追記を追加する前にテストを追加:あなたは '$ _SERVER [ 'HTTP_REFERER']' http://stackoverflow.com/a/6023980/1415724に頼るべきではありません –

+1

同じファイルを使用しているため、同じファイルにリダイレクトされ、GETメソッドが使用され、 '$ page?val = 1'が追加されます。それはかなり自明である。代わりに別のページにリダイレクトしてください。 –

+0

情報ありがとうございました。 – zm455

答えて

2

ちょうど?val=1

if(isset($_POST['hidden']) && $_POST['hidden'] == 2){ 
    $page = $_SERVER['HTTP_REFERER']; 
    if(strpos($page, '?val=1') === false) $page .= '?val=1'; 
    header("location: $page"); 
    exit; // Avoid further execution if more code is below this. 
} 
+1

あなたは編集を気にしないといいですね;-) –

+2

@ Fred-ii-全くありません。そこにいる必要があります – Machavity

+0

ありがとうございますそれは動作します。良い一日を過ごしてください:-)! – zm455

関連する問題