在PHP重定向期间保留URL参数

时间:2011-09-09 10:35:57

标签: php html

这不起作用:

<?php
header('Location: www.mysite.com/index.php?foo=bar&var=abc');
?>

我最终得到了www.mysite.com/index.php?foo=bar我认为HTML可能会试图将&amp; var解释为一个角色。传递初始变量(在?之后)但后面的所有变量都不是(在&amp;之后)。

3 个答案:

答案 0 :(得分:2)

if( isset($_SERVER['HTTPS'] ) ) {
  header('Location: https://'.$_SERVER['SERVER_NAME'].'/index.php?'.$_SERVER['QUERY_STRING']);
}
else{
  header('Location: http://'.$_SERVER['SERVER_NAME'].'/index.php?'.$_SERVER['QUERY_STRING']);
} 

使用htmlspecialchars来阻止html注入

答案 1 :(得分:0)

我正在测试这个案例:     

    <?php
    if (isset($_GET['foo']) ) { 
        echo '<pre>';
        print_r($_GET);
        echo '</pre>';
        exit(); 
    }
    $fp='http://server/header.php?foo=bar&var=abc';
    header("Location: ".$fp);
    exit();
    ?>
    

我致电地址:http://server/header.php 并且重定向适用于' http://server/header.php?foo = bar&amp; var = abc '并且_GET已完成:

Array
(
    [foo] => bar
    [var] => abc
)

注意:

  1. 以首字母为大写字母的位置。
  2. “位置”后的冒号和空格
  3. 完整链接
  4. exit()调用。
另一方面,确保在重定向执行之前没有任何内容输出到浏览器。

答案 2 :(得分:0)

将index.php重定向到hompage。同样可以用于其他任何页面重定向。

$url = str_replace('/index.php', '/', $_SERVER['REQUEST_URI']);
header('Location: '. $url, true,302);
exit();