在php7中获取和发布

时间:2018-07-03 12:24:32

标签: php forms

想知道,$ErrorActionPreference$_GET在php7中仍然可以正常工作吗?还是它们实际上以不同于旧方法的方式工作? 我试图使此代码以某种方式工作,即当页面url在某个时刻读取$_POST时,它返回参数2,但没有这样做。有人可以帮我吗?

do = update

我认为应该在单击此链接后在$ param = 2时重定向到特定页面

<?php
    if (isset($_GET['do']) == "update") {
        $param=2;
    }
    else{
        $param=1;
    }
?>

2 个答案:

答案 0 :(得分:4)

$_GET$_POST仍然有效。您的条件不应该是:

if (isset($_GET['do']) && $_GET['do'] == 'update') {
    $param = 2;
} else {
    $param = 1;
}

(有趣的是,可以简化为):

$param = (isset($_GET['do']) && $_GET['do'] == 'update' ? 2 : 1);

答案 1 :(得分:1)

不,PHP7中的此功能没有更改。这些变量是与HTTP交互的基础,除非真正更改标准,否则它们不会真正更改。无论如何,这与您无关,您只是做了一个荒谬的比较:

isset($_GET['do'])

将返回truefalse。如果为false,则它将永远不等于字符串“ update”。如果是true,则可能是偶然的,因为您使用的是==而不是===。但是,无论哪种方式,尝试进行比较都没有逻辑意义。这不是有用的比较

此代码可能更像您想要的:

<?php
$do = $_GET['do'];

if(isset($do)) //only continue if the variable is definitely set
{ 
  if ($do == "update")
  {
    $param = 2;
  }
  else
  {
    $param = 1;
  }
}
else
{
 //do something else if the variable is not even set - perhaps an error?
}
?>

或者您可能想在所有情况下都将$ param设置为1,除非将“ do”设置为“ update”。您的意图不是100%清楚,但重点是您if陈述是错误的。