<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<?
session_start();
function my_dl()
{
$name=$_SESSION['my_name'];
$lgtime=$_SESSION['lgtime'];
$ssion_id=$_SESSION['ssion_id'];$mysql_server_name="127.0.0.1";
$mysql_username="admin";
$mysql_password="123456";
$mysql_database="tk";
$cone=mysql_connect($mysql_server_name,$mysql_username,$mysql_password);
$sql="select * from login WHERE users="."'$name'";$result=mysql_db_query($mysql_database,$sql,$cone);
$row=mysql_fetch_row($result);
if ($name==$row[0] and $lgtime==$row[2] and $ssion_id==$row[1])
//   return $name.$row[0].$lgtime.$row[2].$ssion_id.$row[1];
return 1;
else
 return 0;
}
?><script language="JavaScript" type="text/javascript">
function my_time()
{
  if (<? echo my_dl();?>==1)
  alert(<? echo my_dl();?>);
  else
  {
  alert("用户已在别处登录,系统将转到登录界面!");
  location.href="login.php";
  }
t=setTimeout("my_time()",5000)
}
</script><meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<style type="text/css">
<!--
.STYLE3 {font-size: 36px}
-->
</style>
</head>
<body onload="my_time()">
<? echo my_dl();?>;
<p class="STYLE3">&nbsp;</p>
<p class="STYLE3"><a href ="grxx.php" target ="showframe">页面1</a></p>
<p class="STYLE3"><br>
<a href ="http://www.baidu.com" target ="showframe">页面2</a></p>
<p class="STYLE3"><br>
  <a href ="http://www.sodu.org" target ="showframe">页面3</a></p>
</body>
</html>
基本思路如下,用户登录,将登录时间写进SESSION,并更改数据库,每5秒检查SESSION的数据是否数据一致,若第二个用户登录,则数据库中的数据更改,第一个用户的两个数据不一致,则转到登录界面。
出现的问题是:第二个用户登录后,my_dl()函数的返回值始终是1,若刷新页面,my_dl()的返回值才会变成0,请高手指教,问题出在哪?

解决方案 »

  1.   

    t=setTimeout("my_time()",5000)这个东东根本没起到作用,想想吧SESSION在服务器端,你在客户端循环没用,要起作用,请ajax除非你是特别需要,否则没必要去ajax请求,想想,如果用户要操作什么,发现我被人挤掉,登陆资格就好了吧?
      

  2.   

    $lgtime=$_SESSION['lgtime'];语句中$_SESSION['lgtime']不是从服务器端的SESSION文件中读出来的?
      

  3.   

    这个是,但是这只是在输出该页面的那一次my_time()这个js函数,仔细想想,有没有去服务器端比对SESSION的值?