2014-07-03 148 views
0

下面是一個簡單的測試代碼,我從我現在面臨的一個錯誤中產生。全局變量保持覆蓋會話變量

session_start(); 
if(isset($_SESSION['views'])) 
$_SESSION['views'] = $_SESSION['views']+ 1; 
else 
$_SESSION['views'] = 1; 

$views = "hi"; 
echo "views = ". $_SESSION['views']; 

從什麼,我相信$views$_SESSION['views']是完全不同的事情。在本地測試中,腳本首次給出正確的響應1然後2然後3繼續。

的錯誤上的iPage主機只存在,there相同的代碼給每個時間輸出hi

我在想什麼?

回答

1

是,在理論上$views$_SESSION['views']應該是完全不同的事情。但是,PHP中曾經有一種叫做register_globals的設置。它已在5.3.0版中被標記爲不推薦使用,並已從版本5.4.0中刪除,但人們使用了相當多,因爲那樣你就不必擔心超全球植物和所有更多涉及的東西,鍵入幾乎任何你想要的。

無論如何。嘗試查明您的主機是否使用舊版本的PHP,以及服務器上是否啓用了此功能。我敢打賭。做到這一點最簡單的方法:把下面的腳本在服務器上搜索register_globals

<?php 
phpinfo(); 
+0

'register_globals'已經很長一段時間前取出,在5.4.0。 – Jon

+0

啊謝謝。我並不是最新版本的最新版本。 ;) –

+0

@TillHelge非常感謝,我看到了register_globals的'on'在服務器 –