2016-09-21 73 views
1

時,查詢字符串正在附加有人可以解釋爲什麼當我多次執行此代碼時,它將子字符串?val=1附加到我的url?

例子:我的腳本位於index.php文件,如果我執行它3次,我都會有這樣的網址在瀏覽器中: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

相關問題