我将为我的网站构建一个私人聊天功能。我基本上有代码但需要更改它并在数据库中为它添加一个表。我将修改一个基本上已有的PM系统。
我已经包含了我的脚本,用于检查我的访问者是否已登录。这是由当前会话完成的,如果他们关闭浏览器而没有在他们返回网站时退出,则会自动登录。< / p>
这是支票用户代码
<?php
session_start();
include_once("db_conx.php");
// Files that include this file at the very top would NOT require
// connection to database or session_start().
// Initialize some vars
$user_ok = false;
$log_id = "";
$log_username = "";
$log_password = "";
// User Verify function
function evalLoggedUser($conx,$id,$u,$p){
$sql = "SELECT ip FROM users WHERE id='$id' AND username='$u' AND password='$p' AND activated='1' LIMIT 1";
$query = mysqli_query($conx, $sql);
$numrows = mysqli_num_rows($query);
if($numrows > 0){
return true;
}
}
if(isset($_SESSION["userid"]) && isset($_SESSION["username"]) && isset($_SESSION["password"])) {
$log_id = preg_replace('#[^0-9]#', '', $_SESSION['userid']);
$log_username = preg_replace('#[^a-z 0-9]#i', '', $_SESSION['username']);
$log_password = preg_replace('#[^a-z0-9]#i', '', $_SESSION['password']);
// Verify the user
$user_ok = evalLoggedUser($db_conx,$log_id,$log_username,$log_password);
} else if(isset($_COOKIE["id"]) && isset($_COOKIE["user"]) && isset($_COOKIE["pass"])){
$_SESSION['userid'] = preg_replace('#[^0-9]#', '', $_COOKIE['id']);
$_SESSION['username'] = preg_replace('#[^a-z 0-9]#i', '', $_COOKIE['user']);
$_SESSION['password'] = preg_replace('#[^a-z0-9]#i', '', $_COOKIE['pass']);
$log_id = $_SESSION['userid'];
$log_username = $_SESSION['username'];
$log_password = $_SESSION['password'];
// Verify the user
$user_ok = evalLoggedUser($db_conx,$log_id,$log_username,$log_password);
if($user_ok == true){
// Update their lastlogin datetime field
$sql = "UPDATE users SET lastlogin=NOW() WHERE id='$log_id' LIMIT 1";
$query = mysqli_query($db_conx, $sql);
}
}
?>
聊天将如何工作是我将一个值为0或1的ENUM设置到users表中的数据库行,这将在线调用。在登录时,这将转到1并在注销时将转到0.当行设置为1时,它们将在聊天菜单(右下角)中显示给他们的朋友,当他们不在线时他们将不会显示在右下角。
只要用户在每次访问网站后注销,这都会很好用,我很确定99%的人不会这样做,这意味着他们将永远在私人聊天中显示为在线。
我知道有一种方法可以检查某人目前是否在线,因为Facebook会这样做,而其他许多网站都会这样做。我只是想知道/希望有人在这里能够指出如何使脚本检查以确定某人当前是否在线并自动更新此ENUM行(如果这是应该的方法)当他们离开网站并在他们回到网站时再次更新它时。
我包含检查登录状态脚本的原因是因为我不确定代码是否需要在此处,因为此脚本包含在网站的每个页面中。
我确实认为可能需要javascript,这就是我标记它的原因。
感谢您的阅读,我期待着您的帮助。