Billing Service

Отображение онлайн-списка пользователей с помощью PHP

Привет всем, поэтому у меня есть частично рабочий код. Однако у меня также есть проблемы с этим. Но позвольте мне начать рассказывать вам, чего я пытаюсь достичь … На моем сайте у меня есть логин, который отправляет всех пользователей на домашнюю страницу один раз и только в том случае, если пользователь вошел в систему. Я хотел бы показать, кто еще зашел на мою страницу, показывая там имена пользователей в списке.

Мои коды текущей способности …

Хорошо, поэтому я могу закодировать его, чтобы добавить пользователей к подключению сайта к базе данных, а затем отобразить каждого пользователя в этой базе данных в div, который отлично подходит для отображения всех онлайн …

Где проблема стоит …

Однако, когда пользователь покидает страницу, имя пользователя должно быть удалено из базы данных онлайн-пользователей. Раньше я просто делал это с опцией закрытия окна в java. Но из-за того, что Safari Google и Firefox больше не поддерживают этот вариант, я вынужден найти другой способ сделать это.

Что делает код ниже …

Поэтому приведенный ниже код загружает интервал, поэтому после такого количества времени он будет повторять код внутри него. Код сначала добавляет пользователя в базу данных, затем отображает пользователя в списке на сайте, а затем удаляет пользователя из базы данных на случай, если он будет отправлен в автономный режим.

Где проблема стоит …

Это все очень хорошо для одного пользователя, но как только второй пользователь участвует, интервалы падают в другое время. Таким образом, я удалил пользователя из базы данных после того, как он отобразил список, но затем он означает, что второй пользователь отображает базу данных, а первый пользователь не находится в нем, поскольку они удалены … Это также вызывает проблему, если пользователь переходит в автономный режим на полпути, хотя функция происходит, а затем оставляет их в базе данных и не оборачивается удалением их из базы данных.

Ниже приведен код java …

$(document).ready(function() < var user_name = "php print $username ?>"; setInterval(function() < $.post('onlineusers.php', < name: user_name, action:"joined" >); $.post("onlineusers.php", < action2: "list" >, function(data)< $('#listusers').html(data); >); $.post("onlineusers.php", < nameleft: user_name, action3:"left" >, function(data)< $('#errorrreport').html(data); >); >, 5000); >): 

Теперь есть код документа PHP

 //------------User joined page put into database -------- if( $_REQUEST["name"]) < $user_name = $_REQUEST['name']; >; if( $_REQUEST["action"]) < $action = $_REQUEST['action']; >; if ($action == 'joined') < user_joined($user_name); >; //-----------Listing online users within page ------------- if( $_REQUEST["action2"]) < $action2 = $_REQUEST['action2']; >; if($action2 == 'list') < foreach (user_list() as $user)< echo $user . "
"; >; >; //------------ User left delete from the database ------------ if( $_REQUEST["nameleft"]) < $user_nameleft = $_REQUEST['nameleft']; >; if( $_REQUEST["action3"])< $action3 = $_REQUEST['action3']; >; if($action3 == 'left') < user_left($user_nameleft); >; //------ Functions what to do. -------- function user_joined($user_name) < $user_name = mysql_real_escape_string(htmlentities($user_name)); mysql_query("INSERT INTO users (user_name)VALUES('$user_name')") or die("this didn't happen"); > function user_left($user_nameleft) < $user_name = mysql_real_escape_string(($user_nameleft)); $query = mysql_query("DELETE FROM users WHERE user_name = '$user_nameleft'")or die("failed to delete from table"); >function user_list() < $user_list = array(); $users_query = mysql_query("SELECT user_name FROM users") or die ("Unable to collect userlist"); while ($users_row = mysql_fetch_assoc($users_query))< $user_list[] = $users_row['user_name']; >return $user_list; >

Вышеприведенный код

Извините, это немного грязно из-за моего перекодирования его столько раз, чтобы заставить его работать. Я был бы признателен, если бы кто-нибудь мог оказать мне помощь, чтобы заставить это работать. Теперь, если это не просто просто код выше, я могу добавить пользователя в онлайн-базу данных пользователя при входе на страницу и получить его, чтобы он часто указывал, что он часто перечисляет пользователей в базе данных.

Читайте также:  Питон на карту памяти

Реальная проблема, и я прошу вас помочь с просьбой …

Однако, если у вас есть какие-либо идеи по коду для следующего, это было бы здорово … Пользователь, покидающий страницу, сталкивается с проблемой. Мне нужен какой-то метод проверки пользователя, который все еще активен, и если они не удаляют их из базы данных, поэтому, когда список затем обновляется, пользователь больше не входит в список. Например, что-то пинговать до тех пор, пока он не получит ответ и удалит пользователя из базы данных.

Поскольку у моего текущего кода возникают проблемы с несколькими пользователями и синхронизация функции интервалов, необходимо учитывать это, так как разные пользователи будут видеть обновление списка в разное время.

PS Я также посмотрел на использование $ SESSION, однако я все еще не уверен, как сделать эту работу с проверкой для автономных пользователей, а затем удалить их из базы данных, это может быть метод ее выполнения.

Спасибо, я надеюсь, что информации достаточно.

Я использовал другой подход:
JS:
Петля в 5 секунд, AJAX запрашивает onlinenow.php и отображает возвращенный html в окне онлайн-пользователей. Это чаще всего копируется и вставляется с W3C с измененным URL-адресом.

setInterval("getOnline()",5000); function getOnline() < if (window.XMLHttpRequest) else xmlhttp.onreadystatechange=function() < if (xmlhttp.readyState==4 && xmlhttp.status==200) < document.getElementById("onlineNow").innerHTML=xmlhttp.responseText; >> xmlhttp.open("GET","http://www.path.com/to/onlinenow.php",true); xmlhttp.send(); > 

PHP:
Принимает пользователь / ip / identifier и сохраняет / обновляет, что + временная метка unix в БД. Возвращает список всех строк с временной отметкой unix за последние 10 минут.

 //Update this user's entry else < //User is in the DB, Update their entry $sql2="UPDATE $tbl_name SET time='$time' WHERE session = '$session'"; $result2=mysql_query($sql2); >//Done updating info, time to get the user list // if over 10 minute, delete session - Could just get all in past 10 mins instead $sql4="DELETE FROM $tbl_name WHERE time else < $plur = "s"; >echo "  $count_user_online user".$plur." online now  "; // Close connection mysql_close(); ?> 

Я использовал эту логику несколько раз с указанием и без имени пользователя (иногда просто числа).
Конечно, код можно было бы улучшить, но основной принцип – довольно хорошее решение.

Читайте также:  Статистический анализатор кода python

Вы можете попробовать вместо удаления включить временную метку (на сервере) при вставке.

Затем вставляйте / обновляйте код javascript каждую минуту или около того.

Тогда ваш запрос о том, кто находится, это просто, какие строки имеют недавнюю метку времени (например, последние 65 секунд)

Разумеется, вам придется очищать старые строки в таблице, если вы не хотите, чтобы журнал всех, кто когда-либо был и когда.

Источник

Отображение данных о пользователе после авторизации php+mysql

Нужно отобразить данные из базы данных, а всю информацию о данном пользователе, которая имеется в базе данных, как это реализовать? Гуглем пользовался, но так и не смог найти для себя внятного ответа. Надеюсь на Вашу помощь!

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
 session_start(); error_reporting(0); ?>  require_once("scripts/connection.php"); ?>  include("scripts/header.php"); ?>  if(isset($_SESSION["session_username"])){ // вывод "Session is set"; // в целях проверки header("Location: cabinet.php"); } if(isset($_POST["login"])){ if(!empty($_POST['username']) && !empty($_POST['password'])) { $username=htmlspecialchars($_POST['username']); $password=htmlspecialchars($_POST['password']); $query =mysql_query("SELECT * FROM users WHERE username='".$username."' AND password='".$password."'"); $numrows=mysql_num_rows($query); if($numrows!=0) { while($row=mysql_fetch_assoc($query)) { $dbusername=$row['username']; $dbpassword=$row['password']; } if($username == $dbusername && $password == $dbpassword) { // старое место расположения // session_start(); $_SESSION['session_username']=$username; /* Перенаправление браузера */ header("Location: cabinet.php"); } } else { // $message = "Invalid username or password!"; echo "Неправильний логін або пароль!"; } } else { $message = "All fields are required!"; } } ?>        

Login користувача

Пароль користувача

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
 require("scripts/connection.php"); error_reporting(0); $login=$_POST['login']; $t="users"; $x = mysql_query("Select * from $t Where login='$login'",$db) or die (mysql_error()); $result = mysql_fetch_row($x); if(!$result){echo "

Інформація про користувача під логіном: $login не знайдена

"
;} while($result) { echo "

Інформація про користувача під логіном: $login

"
; print " Name Surname age Study/Work"; print " $result[1] $result[2] $result[3] $result[4] "; print ""; break; } ?>

З.Ы. : пытался все реализовать в файлике cabinet.php, однако мне выдало ошибку : Unknown column ‘login’ in ‘where clause’
По этой ошибке нашел пару ответов на stackoverflow, однако так ничего и не смог понять.

Php-сценарий userinfo.php для вывода из таблицы users данных о пользователе
Помогите Написать php-сценарий userinfo.php для вывода из таблицы users данных о пользователе (имя.

Форма авторизации php+mysql
Добрый день. Подскажите пожалуйста. Проблема такая мне необходимо авторизоваться и перейти на.

Не могу понять принцип авторизации в PHP и MySQL
Здравствуйте. Читал в интернете, как создавать регистрацию и авторизацию на php. Запись в базу.

грамотная проверка регистрации и авторизации? (php + mysql + jq)
здравствуйте. не могли бы вы подсказать пример где подробно описывается как правильно сделать.

Источник

Как сделать вывод пользователей из БД и их данные?

Как сделать вывод пользователей из БД
Здравствуйте помогите пожалуйста как вывести список пользователей из бд CREATE TABLE IF NOT.

Как сделать вывод аватарки всех пользователей?
Нужно сделать вывод аватарки,получилось сделать только вывод название загруженого файла но не саму.

Как сделать вывод всех пользователей пока поле пустое?
Есть поиск пользователей написан на php,html,js при вводе в поле имя выводит пользователя но пока.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
function LoadDataUsers() // Загрузка списка юзеров { $query = mysql_query("SELECT id, fio FROM sobstvenniki"); $array = mysql_fetch_array($query); do { echo "\"?id_user=".$array['id'].">".$array['id']." ".$array['fio'].""; } while($array = mysql_fetch_array($query)); } function CurrentUser($id_user) //Вывод инфы по конкретному пользователю { if(empty($id_user)) { echo "Юзер не выбран"; } else { $query = mysql_query("SELECT * FROM sobstvenniki WHERE "); $array = mysql_fetch_array($query); return $array; } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
 session_start(); ?>   

Здраствуйте!

$db = mysql_connect("localhost", "root"); mysql_select_db("diplomnaya",$db); function LoadDataUsers() // Загрузка списка юзеров { $query = mysql_query("SELECT id, fio FROM sobstvenniki"); $array = mysql_fetch_array($query); do { echo "\"?id_user=".$array['id'].">".$array['id']." ".$array['fio'].""; } while($array = mysql_fetch_array($query)); } function CurrentUser($id_user) //Вывод инфы по конкретному пользователю { if(empty($id_user)) { echo "Юзер не выбран"; } else { $query = mysql_query("SELECT * FROM sobstvenniki WHERE "); $array = mysql_fetch_array($query); return $array; } } ?>
Подвал

function CurrentUser($id_user) //Вывод инфы по конкретному пользователю
if(empty($id_user))
echo «Юзер не выбран»;
>
else
$query = mysql_query(«SELECT * FROM sobstvenniki WHERE «);
$array = mysql_fetch_array($query);
return $array;
>
>

?>
З.Ы. В вопрос сильно не вникал, если я что-то не допонял поправьте плз.

Источник

Оцените статью