Вопрос № 111109: Здравствуйте, господа программеры!
у меня есть такие 2 вопроса:
1\если есть страница регистрации .../index.php, как сделать из нее что-то вроде .../?L=$referer_name , где $referer_name - логин зарегистрированного пользователя, давшего эту с...Вопрос № 111110: Здравствуйте, эксперты!
Подскажите, как узнать количество он-лайн пользователей на сайте и как отслеживать уход юзера с сайта? Мне надо производить некие манипуляции с MySQL-базой как только пользователь уходит с сайта...
Вопрос № 111.109
Здравствуйте, господа программеры!
у меня есть такие 2 вопроса:
1\если есть страница регистрации .../index.php, как сделать из нее что-то вроде .../?L=$referer_name , где $referer_name - логин зарегистрированного пользователя, давшего эту ссылку? ()
и к этому же
2\как сделать,Что бы в случае, если по этой ссылке кто-то зарегистрируется, то это записывалось в БД и рефереру и даному пользователю?
Пожалуста, подскажите!
Большая благодарность тем, кто ответит =)
Отвечает: Миленин Александр
Здравствуйте, Pasquill None!
После регистрации выдавать пользователям ссылку для приглашения вида: http://ваш_сайт.ru/index.php?L=логин_пользователя,
а в странице регистрации добавить нечто вида:
if ($_REQUEST['L'])
{
1) Проверить, существует ли такой пользователь
2) Зарегистрировать нового пользователя, где в поле referer (или как у вас в БД?) переменная $_REQUEST['L']
3) Обновить данные реферала, добавив нового зарегистрировавшегося.
}
Ответ отправил: Миленин Александр (статус: 7-ой класс)
Ответ отправлен: 26.11.2007, 20:14 Оценка за ответ: 5
Отвечает: Емельянов Данил Юрьевич
Здравствуйте, Pasquill None!
Решение зависит от структуры БД. Лично я советую вам генерировать ссылки по id-ключу таблицы реферов.
Пример ссылки:index.php?ref_id=123
Теперь можно через GET['ref_id'] обратиться к передаваемому параметру.
Дальше:
1) Обновить таблицу с рефером у которого id=123(конструкция UPDATE таблица SET поле=значение WHERE поле=id).
2) Создать новую запись в таблице рефером или зарегестрированных (INSERT INTO...)пользователей.
С помощью условного функции if можно проверять значение $_GET['ref_id']
Приложение:
--------- Жить хорошо, а хорошо жить еще лучше!
Ответ отправил: Емельянов Данил Юрьевич (статус: 3-ий класс)
Ответ отправлен: 26.11.2007, 22:43 Оценка за ответ: 5 Комментарий оценки: ДА, это хорошая идея
Отвечает: Hid
Здравствуйте, Pasquill None!
попробую объяснить сам принцип, точнее одно из решений этой задачи.
Я думаю, у Вас уже есть таблица пользователей (если нет, то ее нужно будет создать), в нее нужно будет добавить несколько полей: referer (ключ к пользователю, давшему юзеру ссылку, в него будет заноситься ID пользователя), далее на странице с параметрами профиля каждого юзера даем ему ссылку реферера вида
.../index.php? $referer_name=vasia_pupkin
значение переменной $referer_name берем из таблицы пользователей (поле скорее всего называется user_name) ссылка будет формироваться примерно так:
после запроса к базе данных и получения значения полей в соответствующие переменные формируем ссылку
echo '.../index.php? $referer_name='.$user_name
Далее при регистрации проверяем наличие на странице регистрации переменной $referer_name это делается с помощью функции isset
if (!isset($referer_name) // если переменной нет, то выполняется обычная регистрация без реферера
{код регистрации}
else// иначе проводим регистрацию с реферером
{здесь к коду регистрации дописываем код, добавляющий в поле referer ID пользователя давшего ссылку. Значение ID мы получаем делая запрос к таблице юзеров по значению поля user_name равному переменной $referer_name (полученной из урла)}
замечу, что записывать в БД рефереру чего-либо не нужно, а получить количество пользователей пришедших по его ссылке можно запросом к той же таблице по значению поля referer. То есть сколько строк в таблице со значением поля referer равным ID этого реферера, столько и пользователей, зарегистрировавшихся по его ссылке.
Надеюсь понятно. Если будут сложности пишите на мыло gordeev@admsurgut.ru
Удачи!
Ответ отправил: Hid (статус: 2-ой класс)
Ответ отправлен: 27.11.2007, 07:46 Оценка за ответ: 5
Вопрос № 111.110
Здравствуйте, эксперты!
Подскажите, как узнать количество он-лайн пользователей на сайте и как отслеживать уход юзера с сайта? Мне надо производить некие манипуляции с MySQL-базой как только пользователь уходит с сайта
Отправлен: 26.11.2007, 20:03
Вопрос задал: Tossha (статус: 2-ой класс)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 12)
Отвечает: Миленин Александр
Здравствуйте, Tossha!
Существует несколько способов слежения за колличеством пользователей на сайте, самый актуальный - отслеживание обращений по IP.
Для начала нам нужна таблица, в которой будет содержаться IP адрес, время последнего обращения(можно и другие данные, но этого достаточно).
Общий алгоритм такой:
1) При обращении пользователя к странице получить его IP адресс ($_SERVER['REMOTE_ADDR'])
2) Проверить, есть ли в базе записи с таким IP, если есть обновить время последнего обращения, если нет - добавить новую запись (IP,TIME)
3) Удалить записи, время последнего доступа которых больше 5 мин.(или другое)
Таким образом в базе будет содержаться информация о юзерах на сайте и их колличество.
Ответ отправил: Миленин Александр (статус: 7-ой класс)
Ответ отправлен: 26.11.2007, 20:23 Оценка за ответ: 5 Комментарий оценки: Ответ хороший, спасибо. Можно поставить 5. Но мне надо было не совсем это. Это я сам уже сделал. Как извесно, сайт vkontakte.ru написам на php. И там если оставить его в браузере ты будешь оставаться в он-лайне, закроешь браузер - в офф-лайне
Отвечает: Мусихин А И
Здравствуйте, Tossha!
При помощи php точно никак, php не работает на стороне клиента и никоим образом не может определить уход пользователя. Вероятно, нужно либо пользоваться демоном на сервере, либо экспериментировать с javascript (например, с функцией onbeforeunload - http://content.1nsk.ru/spravka/javascript/event/b.html#onBeforeUnload).
Ответ отправил: Мусихин А И (статус: 1-ый класс)
Ответ отправлен: 27.11.2007, 00:22 Оценка за ответ: 3 Комментарий оценки: это делается как-то с помощью сессий
Отвечает: Nexus
Здравствуйте, Tossha!
С помощью сессий ты это никак не отследишь. Можно либо поставить довольно небольшой таймаут сессии - т.е. пользователя будет "выкидывать" из профиля после 5 минут неактивности, например. Либо попытаться на каждую страницу вставлять джаваскрипт, который будет через определенные небольшие промежутки времени "дергать" серверный скрипт. А на сервере проверяешь - если клиент не "отозывался" уже больше, чем положено - значит он оффлайн. Параметры при этом передавать не нужно, так что
трафик будет тратиться по минимуму, и здесь таймаут можно сделать совсем небольшой...
Ответ отправил: Nexus (статус: 10-ый класс)
Ответ отправлен: 27.11.2007, 12:09 Оценка за ответ: 5 Комментарий оценки: Хороший совет, спасибо. Но я не знаком с джавой)