所以即時嘗試設置通過JavaScript的PHP時區,所以用戶自動有時間設置正確的時間。現在我在網上找到了這個代碼,但不幸的是它通過GET值傳遞了javascript的確定值。有沒有一種方法可以使用它,但不需要在URL中包含GET值?因爲這是由於如何設置.htaccess ReWriterules而導致我的網站崩潰。
這裏是時區的代碼。我需要的是一種將確定的偏移值從javascript傳遞到php而不使用URL中的GET的方法。這可能嗎?
<?php
session_start();
if(!isset($_SESSION['timezone']))
{
if(!isset($_REQUEST['offset']))
{
?>
<script>
var d = new Date()
var offset= -d.getTimezoneOffset()/60;
location.href = "<?php echo $_SERVER['PHP_SELF']; ?>?offset="+offset;
</script>
<?php
}
else
{
$zonelist = array('Kwajalein' => -12.00, 'Pacific/Midway' => -11.00, 'Pacific/Honolulu' => -10.00, 'America/Anchorage' => -9.00, 'America/Los_Angeles' => -8.00, 'America/Denver' => -7.00, 'America/Tegucigalpa' => -6.00, 'America/New_York' => -5.00, 'America/Caracas' => -4.30, 'America/Halifax' => -4.00, 'America/St_Johns' => -3.30, 'America/Argentina/Buenos_Aires' => -3.00, 'America/Sao_Paulo' => -3.00, 'Atlantic/South_Georgia' => -2.00, 'Atlantic/Azores' => -1.00, 'Europe/Dublin' => 0, 'Europe/Belgrade' => 1.00, 'Europe/Minsk' => 2.00, 'Asia/Kuwait' => 3.00, 'Asia/Tehran' => 3.30, 'Asia/Muscat' => 4.00, 'Asia/Yekaterinburg' => 5.00, 'Asia/Kolkata' => 5.30, 'Asia/Katmandu' => 5.45, 'Asia/Dhaka' => 6.00, 'Asia/Rangoon' => 6.30, 'Asia/Krasnoyarsk' => 7.00, 'Asia/Brunei' => 8.00, 'Asia/Seoul' => 9.00, 'Australia/Darwin' => 9.30, 'Australia/Canberra' => 10.00, 'Asia/Magadan' => 11.00, 'Pacific/Fiji' => 12.00, 'Pacific/Tongatapu' => 13.00);
$index = array_keys($zonelist, $_GET['offset']);
$_SESSION['timezone'] = $index[0];
}
}
date_default_timezone_set($_SESSION['timezone']);
有人告訴我,這是可能使用JSON,但閱讀網上即時通訊無法理解的符號正確使用此之後。
如果我理解正確,您正試圖從客戶端的http請求中獲取一段數據到服務器,而不使用URL參數。您可以考慮重寫頁面名稱(取決於您的服務器允許的內容;可能與您所說的不太一樣),或者另一條路徑是Cookie。 – 2012-02-25 21:22:48
是的,這是我想要做的,重寫URL參數結果在404s,我不能。 – JimmyBanks 2012-02-25 21:25:55
如果下面提到的POST解決方案不起作用,我會嘗試將數據寫入cookie客戶端(document.cookie =「.... = ....」)並讀取相同的數據服務器端$ _COOKIE ['....'] – 2012-02-25 21:30:53