2010-04-22 97 views
0

我有兩個文件:PHP變量持久性

的index.php /lib/user.php

指數包含表單:

<div class="<? echo $msgclass; ?>"> 
    <? echo $msg; ?> 
</div> 
<form id="signin" action="/lib/user.php" method="post"> 
... 
</form> 

user.php的,使所有的處理。 它將$ msg設置爲'some error message',將$ msgalert設置爲'error'以防出現任何錯誤。在處理結束時,它使用header()重定向到index.php

但重定向後$ msg和$ msgalert不再存在,並且索引只獲取空變量。 我該如何解決這個問題?

回答

1

編輯:抱歉誤讀您的問題。您可以將這些值存儲在會話中。

/lib/user.php

session_start(); 
$_SESSION['msg']  = $msg; 
$_SESSION['msgalert'] = $msgalert; 

index.php

session_start(); 
$msg  = $_SESSION['msg']; 
$msgalert = $_SESSION['msgalert']; 

注意session_start()使用標頭,以便在發送任何輸出之前,必須把。

+0

thanx。這就像一個魅力:) – 2010-04-22 16:21:05

0

User.php和index.php是獨立執行的,因此可變範圍在這裏沒有多少意義。

您可以通過GET參數或會話變量傳遞這些值。

嘗試例如使用GET參數重定向:

header('Location: http://www.example.com/index.php?msgalert=error&msg=some%20error%20message'); 

然後在index.php中使用:

$_GET['msgalert'] 
$_GET['msg'] 

訪問您的數據。儘管如果可以的話,使用硬編碼到腳本中的一些預定義的錯誤消息會更好(僅傳遞錯誤代碼)。

+0

好吧,你是對的,改變職位的標題,所以它更相關 – 2010-04-22 16:17:14

0

網頁無國籍。如果要維護狀態,您可以將必要的值存儲在$_SESSION變量中,或通過$_GET$_POST傳遞。

0

這不是一個範圍問題,它是一個持久性問題。當您使用header()重定向時,您要求瀏覽器獲取完全不同的頁面,該頁面執行完全不同的腳本。

您需要手動持續或傳遞數據,通過數據庫,會話,$ _GET變量等。