2016-09-21 80 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

相关问题