使用javascript,php,pdo,css,html显示谁在线/离线

时间:2013-09-16 21:03:58

标签: javascript php css javascript-events pdo

我一直坚持如何开始这个...我认为需要javascript或php,或者两者兼而有之才能执行我需要的功能。

我在每个成员名称旁边的页面上都有一个成员个人资料列表,我目前只使用了一个占位符,只使用css和html显示登录的成员是否在线(绿点)或者如果某个成员已注销,则表明它们处于脱机状态(灰点)。我根本没有写任何javascript或php,因为我不知道从哪里开始...,但是只需要这个小部分就可以了,并且知道这是我需要让它工作的东西。我所能做的就是提供我拥有的html和我拥有的CSS。我希望它至少每15-30秒执行一次扫描登录/退出,只刷新这个小部分(在线 - 绿点或离线 - 灰点)而不是整个页面(我肯定是javascript)这是最好的)当然,通过在会话[ID]上运行查询来确定成员是否实际上是在线/离线(我确定php / pdo是最佳实践)。有没有人可以帮助我从正确的方向引导我从正确的方向开始?

HTML:

<div id="profile">
    <img src="images/ImagePlacedHere.jpg" width="80" height="80" style="margin: 4px 5px; float: left;" />
    <h2>Jason <online title="Online" /></h2>
</div>

<div id="profile">
    <img src="images/ImagePlacedHere.jpg" width="80" height="80" style="margin: 4px 5px; float: left;" />
    <h2>Nick <offline title="Offline" /></h2>
</div>

CSS:

#profile {
  width: 300px;
  height: 90px;
  padding: 0;
  margin: 10px 0 0 8px;
  background: #222;
  border: 2px solid #444;
    -moz-border-radius: 12px;
    -webkit-border-radius: 12px;
    border-radius: 12px;
    -moz-box-shadow: 0 28px 24px -24px #000, inset 0 -0.3em 0.9em 0.3em #000;
    -webkit-box-shadow: 0 28px 24px -24px #000, inset 0 -0.3em 0.9em 0.3em #000;
    box-shadow: 0 28px 24px -24px #000, inset 0 -0.3em 0.9em 0.3em #000;
  float: left;
    -moz-transition: all .2s ease-in-out;
    -webkit-transition: all .2s ease-in-out;
    -o-transition: all .2s ease-in-out;
    transition: all .2s ease-in-out;
  position: relative;
  top: -10px;
  left: -3px;
}
#profile:hover {
  background: rgba(255, 255, 255, 0.05);
    -moz-box-shadow: 0 0 0 0, inset 0 0.3em 0.9em 0.3em #000;
    -webkit-box-shadow: 0 0 0 0, inset 0 0.3em 0.9em 0.3em #000;
    box-shadow: 0 0 0 0, inset 0 0.3em 0.9em 0.3em #000;
}
#profile h2 {
  width: 195px;
  height: 22px;
  padding: 8px 0 1px 0;
  margin: 0;
  border-bottom: 1px solid #444;
  float: left;
  color: #B45F04;
  font: 18px Arial, Helvetica, sans-serif;
  font-weight: bold;
  font-variant: small-caps;
  text-shadow: 1px 1px 1px #000, -2px -2px 2px #000;
  filter: progid:DXImageTransform.Microsoft.Shadow(direction=315,strength=2,color=000000);
}
#profile h2 online {
  width: 15px;
  height: 15px;
  padding: 0;
  margin: 0;
  background: #009D0D;
  border: 2px solid #444;
    -moz-border-radius: 10px;
    -webkit-border-radius: 10px;
    border-radius: 10px;
    -moz-box-shadow: 0 4px 1px -1px #000, inset 0 -1px 4px 1px #000;
    -webkit-box-shadow: 0 4px 1px -1px #000, inset 0 -1px 4px 1px #000;
    box-shadow: 0 4px 1px -1px #000, inset 0 -1px 4px 1px #000;
  float: right;
}
#profile h2 offline {
  width: 15px;
  height: 15px;
  padding: 0;
  margin: 0;
  background: #222;
  border: 2px solid #444;
    -moz-border-radius: 10px;
    -webkit-border-radius: 10px;
    border-radius: 10px;
    -moz-box-shadow: 0 4px 1px -1px #000, inset 0 -1px 4px 1px #000;
    -webkit-box-shadow: 0 4px 1px -1px #000, inset 0 -1px 4px 1px #000;
    box-shadow: 0 4px 1px -1px #000, inset 0 -1px 4px 1px #000;
  float: right;
}

以下是我所拥有的演示:http://jsfiddle.net/tZpk6/

如果需要更多信息,我可能会提供更多(可能)......

1 个答案:

答案 0 :(得分:1)

您将要使用AJAX(我建议使用jQuery,它隐藏了大量的样板代码)每隔X秒查询服务器一次。

您的服务器上将有一个查询数据库的脚本,询问用户是否在线。您需要跟踪用户上次查看的时间,并确定给定用户在页面展示次数之间需要多长时间来确定他们何时离线(IE 5分钟)。

从那里,您可以从PHP脚本返回一个真/假响应并相应地更新绿色/灰色点。

如果您希望获得更高级的效果,可以查看NodeJS之类的内容,在Socket.IO的帮助下,您可以实时跟踪用户。