2013-07-22 102 views
2

我想一個網站從我公司的合作伙伴整合,我遇到了此行的位置:PHP header()函數

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

我瀏覽header()功能的PHP手冊,但不能找到一個名爲overwrite的參數。 有人可以給我任何線索嗎?

+1

默認情況下,覆蓋參數設置爲true,所以你不必自己設置它 – Philipp

+0

無需投票給這個傢伙。 – VladHQ

回答

1

它(覆蓋)可能是一個常數,例如

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

在這種情況下overwrite表示布爾true和正被用來取代先前的報頭。

雖然,常量應該用大寫字母來聲明,但如果有人使用小寫字母,它不會拋出任何錯誤。定義常量推薦的方法是

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

值得一提的是,這種方式定義的任何常量在全球範圍內,在整個腳本/應用,基本上開發商在腳本的開始或應用程序定義常量,它可能被定義在一個不同的文件中(這是在啓動時包含/執行的),所以你可能不會在當前腳本中看到它。

+0

非常感謝,真的幫助我。 –

+0

不客氣:-) –

0

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

PHP的網站是很好的這樣的問題。第二個參數只是告訴它是否「覆蓋」(替換)已經設置的值。

請注意,傳遞給函數的值不一定與參數的名稱有關。它們只是按順序使用。這裏,overwrite必須是其他地方設置的變量,儘管令人驚訝的是它沒有在PHP中將其標記爲變量的典型$。計算覆蓋變量並將其值作爲頭函數中的第二個參數傳遞。

+0

在PHP中沒有'$'的變量是沒有的。沒有'$',如果定義了這樣一個常數,它就是一個常數。否則它是一個警告和字符串文字「覆蓋」。 – Paulpro

+0

我做了回聲覆蓋並生成「注意:使用未定義的常量」。根據PleaseStand覆蓋變成了一個字符串'覆蓋',它轉換爲布爾值true –

3

第二個參數(替換)意味着與覆蓋相同的東西。如果你看行:

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

這是最有可能無效(這在技術上是有效的,如果改寫爲常數)。它應該是:

header("Location: field/index.php", true); 
+1

覆蓋(沒有美元符號)工作(但會生成一個「注意:使用未定義的常量」),因爲如果未定義,它會變成字符串''覆蓋「'。該字符串轉換爲布爾值「true」。在任何情況下,函數的默認值都是'true',所以不需要。 – PleaseStand

+0

@PleaseStand是的,它會工作,但它仍然無效。 – Paulpro

+0

@PleaseStand真的在教學,但我仍然不明白爲什麼一個字符串可以轉換爲布爾值。 –

1

有三個參數爲PHP header()

  • 字符串:("Location: field/index.php"這裏)
  • http_response_code:用於強制HTTP響應代碼
  • 替換:一個布爾選項覆蓋以前的類似標頭

the documentation

可選的替代參數指示頭部是否應該 替換以前類似的標題[...]默認情況下,它會在你的代碼替換


overwrite值是無效的,因爲它是一個布爾值應該是的未加引號的字符串。使用header("Location: field/index.php", true);是正確的,但由於true是默認設置,因此您只需要header("Location: field/index.php")

+0

我明白了,非常感謝!這是別人的代碼,我不知道他/她用這種方式玩,並花費我一個小時googlling和閱讀PHP手冊。感謝你們,我現在可以理解它。 –