2009-12-23 75 views
0

請看下面的示例代碼,當我運行它時,定義的部分在頭函數調用中沒有被轉換,是否有特殊的方法來執行語法,或者這種方法是不可能的?你可以在函數調用中調用一個PHP定義的值嗎?

<?PHP 
session_start(); 
define('SITE_URL', 'http://testsddf.com'); 
$_SESSION['user_role'] = 0; 


//if a user is not active, redirect to verification/suspended page 
if($_SESSION['user_role'] == 0){ 
    header('Location: SITE_URL'); 
} 

?> 

回答

10

你不能做這樣的事情:

define('SITE_URL', 'http://testsddf.com'); 
header('Location: SITE_URL'); 

恆定不插,字符串裏:它不是一個變量(和你使用單引號串,所以它止跌「T具有可變工作,要麼,在這裏)


你必須使用字符串連接,在這種情況下:

define('SITE_URL', 'http://testsddf.com'); 
header('Location: ' . SITE_URL); 


而且,只是把一個鏈接到手冊作爲參考,可以看看Variable parsing:沒有什麼有大約常數 - 即使這是不幸的。

+0

你好,我想你的方法很好,但它仍然不會與定義的變量工作,假設這是唯一的方法標題:(「位置」 $ SITE_URL)。而不是標題('Location:'。SITE_URL);然後定義$ SITE_URL而不是SITE_URL? – JasonDavis 2009-12-23 16:48:33

+0

如果您使用的是定義(並以此方式創建常量),則不應使用$:$符號僅適用於變量。 – 2009-12-23 16:54:19

+0

是的,我明白這一部分,它只是該頭('Location:'。SITE_URL);即使使用define('SITE_URL','http://testsddf.com')也不起作用; – JasonDavis 2009-12-23 16:56:30

0

你要麼需要做的......

header('Location: ' . SITE_URL); 

......或者......

header("Location: SITE_URL"); 

...單引號不擴展變量。 (更多信息請參見this manual page

+0

我已經試過這個了,但由於某種原因,它似乎不能用於一個已定義的變量 – JasonDavis 2009-12-23 16:57:40

+0

這是因爲它不是一個「已定義的變量」,它是一個常量。當你在一個字符串中時,沒有變量引用標識符('$')的東西已經是一個常量。您必須跳出字符串常量才能訪問定義的常量的內容。 – Dereleased 2009-12-23 17:03:21

相關問題