如何在不使用$\u GET的情况下将javascript变量传递给PHP?

如何在不使用$\u GET的情况下将javascript变量传递给PHP?,php,javascript,json,timezone,Php,Javascript,Json,Timezone,因此,我试图通过javascript设置php时区,这样用户可以自动将时间正确设置为他们的timezome。现在我在网上找到了这段代码,但不幸的是,它通过一个GET值传递了javascript的确定值。有没有一种方法可以使用它,但不需要在URL中包含GET值?由于.htaccess重写规则的设置,这会破坏我的网站 这是时区的代码。我需要的是一种将确定的偏移量值从javascript传输到php的方法,而无需在url中使用GET。这可能吗 <?php session_start(); if(

因此,我试图通过javascript设置php时区,这样用户可以自动将时间正确设置为他们的timezome。现在我在网上找到了这段代码,但不幸的是,它通过一个GET值传递了javascript的确定值。有没有一种方法可以使用它,但不需要在URL中包含GET值?由于.htaccess重写规则的设置,这会破坏我的网站

这是时区的代码。我需要的是一种将确定的偏移量值从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']);

var d=新日期()
var offset=-d.getTimezoneOffset()/60;
location.href=“?offset=“+offset;

如果您不想使用GET请求,则可以考虑使用POST请求来代替。您可以使用JavaScript中的Ajax请求从发送数据。使用jQuery,这看起来像:

$.ajax({
   'url': 'PATH_TO_PHP_SCRIPT',
   'type': 'POST',
   'data': 'timezone=' + timezoneVariable
});

如果不想使用JSON和ajax(XMLHttpRequest),可以使用。 因为javascript和php都可以读取这些数据,所以可以使用javascript创建一个来存储时区。然后在php代码中读取cookie

要在javascript中创建cookie,请使用:

document.cookie = 
    'myName=' + value + 
    '; expires=' + now.toGMTString() + 
    '; path=/';
要在php中阅读它,请执行以下操作:

$_COOKIE['myName']

您可以简单地获取/发布一个URL,如
/tz/TIME_ZONE
,其中TIME_ZONE是您想要设置的任何时区。

如果我理解正确,您正在尝试从客户端通过http请求向服务器获取一段数据,而不使用URL参数。您可以考虑重写页面名称(取决于您的服务器允许什么;可能不是来自您所说的很多),或者另一个查看的路径是COKIKE。是的,这正是我正在尝试做的,重写URL参数结果在404s,这是我不能有的。如果下面的POST解决方案也不起作用,我将尝试将数据写入cookie客户端(document.cookie=“…=…=…”),并读取相同的数据服务器端$_cookie[''..']yeh。那就行了。但他想要的是偏移量变量,而不是时区。。。所以,像timothy说的那样发送偏移量,并使用offset=$\u POST['offset']获取它