2016-09-08 60 views
0

使用一個單獨的php文件「session_info.php」導航到一個新的選項卡,使用以下代碼查看$ _SESSION數組值和$ _POST數組值,只顯示$ _SESSION數組值。

session_start(); 
echo 'SESSION VALUES'; 
echo '<pre>'; 
print_r($_SESSION); 
echo '</pre>'; 
echo '<br>'; 

echo 'POST VALUES'; 
echo '<pre>'; 
print_r($_POST); 
echo '</pre>'; 

的的print_r($ _ POST)只返回

Array 
(
) 

如果我有一個 「的print_r($ _ POST)」 行中的PHP代碼與表單的$ _POSTed值並顯示更新數據庫值在一個單獨的框架中,$ _POST值顯示在框架OK中 那麼爲什麼不在我的「session_info.php」顯示?

+0

如果您直接導航到新選項卡中的頁面,那麼您希望您的'$ _POST'值到底是什麼?你沒有發佈任何內容,爲什麼他們會變成空的東西? – Santi

+1

你實際上是否將POST數據提交給顯示該頁面的頁面?沒有POST數據,'$ _POST'只是一個空數組 – Machavity

+0

你可以分享$ _POST從 –

回答

1

$_POST只有當您向該頁面發送POST請求時,纔會顯示值。如果您打開新選項卡,則發送GET請求,因此您的$_POST變量將爲空。

您的$_SESSION變量會顯示任何類型的請求中的內容,因爲它與您發送到頁面的請求類型無關。


此外,如果您發送二進制數據作爲$_POST要求,你必須能夠讀取原始數據發佈file_get_contents('php://input');

+0

「如果發送二進制數據」 - JSON是文本格式,而不是二進制格式。 – Quentin

+0

好吧,所以我將不得不實際POST值到「session_info.php」頁面,然後... – Skeeter

+0

更正@skeeter,發出一個「POST」請求到session_info。PHP和你應該看到$ _POST – JorgeObregon

1

當你打開瀏覽器頁面的一些,它運行請求服務器基於主機名和IP。這意味着每個請求都是您創建的腳本的新運行。每個請求都有自己的數據發送到服務器。例如,如果您使用method="post"製作表單,則將使用方法發佈將數據發送到服務器。當服務器處理這個請求時,它將填充$_POST數組。

如果你通過url發送數據(GET方法)比你的服務器會用它填充$ _GET數據。但是,如果你只是在地址欄中輸入你的url,那麼根本就沒有POST請求,永遠不會。所以你的POST數組是空的,對於服務器是可以的。

在你的情況下,根本沒有錯誤。我建議你再次閱讀關於預定義變量的文檔。