2

我正在尝试从我公司的合作伙伴那里整合一个网站,我在这里遇到了这条线:

header("Location: field/index.php", overwrite); 

我浏览了函数的 PHP 手册header(),但找不到一个名为overwrite. 有人可以给我任何线索吗?

4

4 回答 4

3

第二个参数(replace)与覆盖的含义相同。如果你看到这条线:

header("Location: field/index.php", overwrite);

这很可能是无效的(如果覆盖是一个常数,它在技术上是有效的)。它应该是:

header("Location: field/index.php", true);
于 2013-07-22T22:52:28.583 回答
1

它(覆盖)可以是一个常数,例如

define('overwrite', true);
header("Location: field/index.php", overwrite);

在这种情况下,overwrite表示布尔值true,用于替换先前的标头。

虽然,应该使用大写字母声明常量,但如果有人使用小写字母,它不会引发任何错误。定义常量的推荐方法是

defined('OVERWRITE') or define('OVERWRITE', TRUE);

值得一提的是,以这种方式定义的任何常量在整个脚本/应用程序中都是全局可用的,基本上开发人员在脚本或应用程序的开头定义常量,它可以在不同的文件中定义(在启动时包含/执行up) 因此,您可能在当前脚本中看不到它。

于 2013-07-22T23:00:39.897 回答
1

PHP 有三个参数header()

  • 字符串:("Location: field/index.php"这里)
  • http_response_code: 用于强制 HTTP 响应代码
  • 替换:一个布尔选项,用于覆盖以前的类似标题

文档中

可选的replace参数指示标题是否应该替换以前的类似标题[...]默认情况下它将替换


您的代码中的overwrite值无效,因为它是一个不带引号的字符串,应该是布尔值。使用header("Location: field/index.php", true);是正确的,但是因为true是默认的,所以你只需要header("Location: field/index.php").

于 2013-07-22T22:52:48.950 回答
0

http://us3.php.net/manual/en/function.header.php

php 站点适合这类问题。第二个参数只是告诉它是否“覆盖”(替换)已经设置的值。

请注意,传递给函数的值不一定与参数名称有关。它们只是按顺序使用。在这里,overwrite必须是在其他地方设置的变量,尽管令人惊讶的是它前面没有典型的 $ 将其标记为 PHP 中的变量。对变量覆盖进行评估,并将其值作为头函数中的第二个参数传递。

于 2013-07-22T22:51:40.863 回答