簡體   English   中英

如何允許用戶更改時區,但停留在同一頁面上

[英]How to allow a user to change timezone, but stay on the same page

基本上,我需要用戶能夠更改時區,但要保持它們在同一頁面上。 這樣做的原因是,我使用的是jQuery / ajax頁面加載器腳本,當我使用form / php時,我目前擁有的只是實際的php文件(php文件工作正常)。 我只需要它留在頁面上。

這是頁面的代碼:

<?php
date_default_timezone_set($_POST['timezones']);
?>

<form action="data4.php" method="post">
<select name="timezones">
  <option>Select your timezone</option>
  <option value="Europe/London">Europe/London</option>
  <option value="America/Mexico_City">Central</option>
  <option value="America/New_York">Eastern</option>
</select>
<input type="submit" value="Submit" />
</form>

我確實計划添加更多時區,這只是為了演示。

如果有人有有用的信息/幫助,我將非常感謝。

一種方式是-您可以觸發ajax請求,當更改時區時,后端時區將被更改。 但是,如果需要在同一頁面的某處更改時間,則還需要使用Ajax刷新該部分。

在下拉列表中添加一個類,名稱為change_time_zone_trigger

<select name="timezones" class="change_time_zone_trigger">
<option>Select your timezone</option>
<option value="Europe/London">Europe/London</option>
<option value="America/Mexico_City">Central</option>
<option value="America/New_York">Eastern</option>
</select>

然后在evner單擊任何時區時創建一個觸發器。

$(document).ready(function() {
  $('body').delegate('.change_time_zone_trigger', 'change', function(evt) {
    // here put your ajax code that will hit the server when ever any timezone will be changed.

  });

});

這是一種方法。

<!doctype html>
<html>
    <head>
<?php
        session_start();
        if(!isset($_SESSION['timezone'])) {
            if(!isset($_REQUEST['offset'])) {
?>

        <script type="text/javascript">
            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, $_REQUEST['offset']);
                $_SESSION['timezone'] = $index[0];
            }
        }
        date_default_timezone_set($_SESSION['timezone']);
?>

    </head>
    <body>
        Current Time Zone is <?php echo $_SESSION['timezone']; ?>
    </body>
</html>

基本上,它的工作方式非常簡單,您可以讓此腳本成為頁面的第一件事,因為時區將保留在會話中。

從session_start()開始; 它將首先檢查SESSION中是否存在時區變量,如果沒有,則將檢查REQUEST for和offset變量。 如果不是,它將使用JavaScript,並使用$ _GET方法檢查偏移量(將返回-12到+12),並使用從瀏覽器檢測到的正確時區重新加載頁面,並與數組匹配。 最后,它將默認的date_time_zone設置為檢測到的JavaScript和所有設置。 您可以讓它顯示時區。

希望能有所幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM