我想根据用户浏览器时间设置php会话$_SESSION['time']
// gives time difference between utc time and current user local time
var offset = ((new Date().getTimezoneOffset()) * -1) * 60;
我希望将此偏移值存储在像
这样的会话变量中$_SESSION['time'] = offset ; // something like this
实施例
<script type="text/javascript">
I have to set the $SESSION['time'] variable at the beginning of page
so that i can use it down the dom
</script>
<span class="time_stamp"><?php echo $_SESSION['time'];?></span>
答案 0 :(得分:0)
在服务器上的页面加载时创建php会话。 所以在页面加载后有没办法来创建会话。
因此,如果您不想使用ajax,则只有一个/ 2解决方案。
解决方案1
sess.php
<?php
session_start();
$_SESSION['time']=$_GET['time'];
?>
JS
head.appendChild(document.createElement('script')).src='sess.php?time='+offset;
注意:在这种情况下,head只是一个参考。
<强> BUT 强>
这也是异步。
再次如此。页面加载后无法设置会话。解决方案2
使用gd预加载php输出的图像,同时设置你的会话。 ;)
如果你想知道我怎么看它。(这会导致一个自然的页面加载&amp;也会在ie6上大量工作)我只是不记得究竟如何在身体之前预先加载图像的
前段时间我遇到了同样的问题......我使用了ajax。
function ajax(a,b,c){ // Url, Callback, just a placeholder
c=new XMLHttpRequest;
c.open('GET',a);
c.onload=b;
c.send()
}
function LoadThePage(){
//just some milliseconds passed.
//session is set
//load the rest of your page.
//MOST OF THE TIME this loads faster than the body does.(window.onload)
}
ajax('sess.php?time='+offset,LoadThePage);
另一方面......现在大多数现代浏览器都支持localstorage。
所有手机&amp;现代浏览器。
如果我存储这样的东西。为什么要使用php会话?
使用localstorage来替换它。
window.localStorage['offset']=((new Date().getTimezoneOffset()) * -1) * 60;