Как передать переменную javascript в PHP без использования $ _GET? - PullRequest
3 голосов
/ 26 февраля 2012

Поэтому я пытаюсь установить часовой пояс php с помощью javascript, чтобы пользователи автоматически установили время, соответствующее их часовому поясу.Теперь я нашел этот код в Интернете, но, к сожалению, он передает определенное значение JavaScript через значение GET.Есть ли способ, которым я могу использовать это, но не требовать включения значения GET в URL?как это происходит, чтобы сломать мой сайт из-за того, что установлены .htaccess ReWriterules.

Вот код для часового пояса.Что мне нужно, это способ передать определенное значение смещения из JavaScript в PHP без использования GET в URL.Возможно ли это?

<?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, но после чтения в Интернете я не могу понять нотацию, чтобы правильно использовать это.

Ответы [ 3 ]

4 голосов
/ 26 февраля 2012

Если вы не хотите использовать GET-запрос, вы можете вместо этого использовать POST-запрос. Вы можете отправлять данные с помощью Ajax-запроса в JavaScript. Используя jQuery, это будет выглядеть примерно так:

$.ajax({
   'url': 'PATH_TO_PHP_SCRIPT',
   'type': 'POST',
   'data': 'timezone=' + timezoneVariable
});
1 голос
/ 26 февраля 2012

Если вы не хотите использовать JSON и ajax (XMLHttpRequest), вы можете использовать cookie . Поскольку и javascript, и php могут читать их, создайте их, используя javascript для хранения часового пояса. Затем в своем php-коде прочитайте этот cookie.

для создания куки в javascript используйте:

document.cookie = 
    'myName=' + value + 
    '; expires=' + now.toGMTString() + 
    '; path=/';

и прочитать его в вашем php:

$_COOKIE['myName']
0 голосов
/ 26 февраля 2012

Вы можете просто ПОЛУЧИТЬ / ПОСТАВИТЬ URL-адрес, например /tz/TIME_ZONE, где TIME_ZONE - любой часовой пояс, который вы хотите установить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...