【问题标题】:PHP Jump RedirectPHP跳转重定向
【发布时间】:2016-10-09 06:23:10
【问题描述】:

我正在尝试根据 php 文件上的查询字符串重定向用户。我创建了一个 php 文件 go.php 并粘贴了以下代码,

<?php
if ($v = 'AAAAA') {$link = 'https://example1.com/';}
if ($v = 'BBBBB') {$link = 'https://exapmle2.com/';}

header( 'Location: $link' ) ;
exit();
?>

我认为我可以使用 mydomain.com/go.php?v=AAAAA 将用户重定向到 example1.com 但它不起作用。该脚本将用户重定向到 mydomain.com/$link 谁能帮我实现这一目标?我使用 nginx 作为 php 7 的网络服务器。

提前致谢。

【问题讨论】:

    标签: php redirect nginx


    【解决方案1】:

    你应该这样做

    $v = $_GET['V'];
    if ($v == 'AAAAA'){
        $link = 'https://example1.com/';
    }elseif ($v == 'BBBBB') {
        $link = 'https://exapmle2.com/';
    }else{
       $link = false;  //you could output an error or put a default redirect in here instead.  Then you wouldn't need the second if condition ( with a default redirection )
    }
    
    if( $link ){
      header( "Location: $link" ) ;
      exit();
    }
    

    需要注意的几点:

    • 您在 if 条件中使用的是赋值 = 而不是比较 ==。在原来的两个条件将通过 $link 的最终值是最后一个(尽管它设置在第一个,第二个替换它),$v 变量也将设置为等于 BBBBB,两者都不这就是你想要的。

    • 变量插值(自动插入值)仅在使用双引号而非单引号时有效。 " $link "' $link ' 第一个将填写 $link 的值,第二个将字面上的 $link 作为字符串。

    • 如果$v 不等于任一条件,您没有默认值,会发生什么?

    • 您应该使用if elseif,因为$v 不能等于两者。在它等于第一个条件的情况下,其余的被跳过,性能方面它更好,但类似的东西并不重要,它只是最佳实践并且更具可读性。

    【讨论】:

    • 酷,我什至没有测试它。但是这么短的代码我可以在我的脑海中运行......
    【解决方案2】:

    当你想在头函数中使用用户变量时,请使用双引号 header("Location: $link") ;

    还要确保您使用 $v = $_GET['v']; 获取 url 参数的值

    【讨论】:

    • 感谢您的快速回复。我是新手,我不明白 $v = $_GET['v'];部分,它去哪里了?
    • php文件的第一行
    • 添加在
    • 你的代码也有错误,这里是更正的代码if ($v == "AAAAA") {$link = "https://example1.com/";} if ($v == "BBBBB") {$link = "https://exapmle2.com/";}
    猜你喜欢
    • 2020-09-16
    • 1970-01-01
    • 2022-11-29
    • 2019-03-05
    • 2011-05-04
    • 1970-01-01
    • 2012-06-21
    • 1970-01-01
    • 2013-03-18
    相关资源
    最近更新 更多