Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Авторизация


Автор: BobiKK 12.1.2006, 00:15
Сделал так:
Код

<?php
session_start();
$id_session = session_id();

include "config.php";

$query = "SELECT * FROM session WHERE id_session = '$id_session';";
$ses = mysql_query($query);
if (!$ses) exit(mysql_error());

    if(mysql_num_rows($ses) > 0)
    {
        $query = "UPDATE session SET putdate = NOW(), user = '$_SESSION[user]' WHERE id_session =         '$id_session';";
        mysql_query($query);
    }
    else
    {
        $query = "INSERT INTO session VALUES ('$id_session', NOW(), '$_SESSION[user]');";
        if (!mysql_query($query)) exit (mysql_error());
    }
}

$query = "DELETE FROM session WHERE putdate < NOW() - INTERVAL '20' MINUTE;";
mysql_query($query);
?> 


Таблица session была создана так:
CREATE TABLE `session`(
id_session TINYTEXT NOT NULL,
putdate DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
user TINYTEXT NOT NULL
) TYPE=MyISAM;

Вопрос - это нормальный вариант или нужно что-либо изменить?

Автор: Mal Hack 12.1.2006, 00:25
Цитата(BobiKK @ 12.1.2006, 00:15 Найти цитируемый пост)

, user = '$_SESSION[user]'

ИМХО, лишнее.
ЗЫ: ; в запросах, при исполнении их из PHP не нужны.

Безопасность - плохо smile
Вот сюда глянь:
http://vingrad.ru/PHP-ART-002849
http://vingrad.ru/PHP-ART-002847

Автор: BobiKK 12.1.2006, 00:35
Цитата(Mal Hack @ 12.1.2006, 00:25)

ИМХО, лишнее.

Разве лишнее? А если я хочу потом вывести список юзверей онлайн?

Цитата
ЗЫ: ; в запросах, при исполнении их из PHP не нужны.

И ";" не лишнее smile Сам сутки мучался, почему всегда выскакивало "SQL SYNTAX ERROR". Оказалось, всё дело именно в ";". Видимо, у хостинга свои причуды

А про безопасность спасибо, почиткаю.

З.Ы. Тьфу ты, ёлы палы, почему я никогда не читаю FAQ, мануалы и статьи? smile

Автор: Mal Hack 12.1.2006, 00:42
Цитата(BobiKK @ 12.1.2006, 00:35 Найти цитируемый пост)

И ";" не лишнее smile Сам сутки мучался, почему всегда выскакивало "SQL SYNTAX ERROR". Оказалось, всё дело именно в ";". Видимо, у хостинга свои причуды

Быть того не может, вот честно, на 5 хостингах с ; у меня ничего не выполняется. Попробуй какой-ть тестовый скриптик аля SHOW TABLES запустить для проверки.
Цитата(BobiKK @ 12.1.2006, 00:35 Найти цитируемый пост)

З.Ы. Тьфу ты, ёлы палы, почему я никогда не читаю FAQ, мануалы и статьи? smile

Читайте, на винграде есть многое smile)

Автор: mr.fox 12.1.2006, 01:12
Цитата(Mal Hack @ 12.1.2006, 00:25 Найти цитируемый пост)

user = '$_SESSION[user]'

ИМХО, лишнее.

хм.. я бы не стал имя пользователя в массив сесий пихать..
зачем если это и так в базе храниться..

Автор: BobiKK 12.1.2006, 18:52
А как тогда без этого вывести список всех заргестрированных пользователей, которые онлайн?

Автор: Mal Hack 12.1.2006, 20:05
BobiKK у тебя же хранится ID. Сделай выборку из двух таблиц.
Опять же: http://vingrad.ru/PHP-PHPSCRIPTS-002850

Автор: IZ@TOP 13.1.2006, 09:49
Цитата(Mal Hack @ 12.1.2006, 01:42 Найти цитируемый пост)

Быть того не может, вот честно, на 5 хостингах с ; у меня ничего не выполняется. Попробуй какой-ть тестовый скриптик аля SHOW TABLES запустить для проверки.

На моем хостинге все прекрасно работает и с кавычками. А вот чего бы не помешало в РНР, это возможность одним mysql_query выполнить сразу несколько команд.

Автор: Mal Hack 13.1.2006, 14:21
Цитата(IZ@TOP @ 13.1.2006, 09:49 Найти цитируемый пост)

На моем хостинге все прекрасно работает и с кавычками.

Я про точку с запятой.

Автор: fara 15.1.2006, 17:53
PS: лучше в ассоциативных массивах обращаться к индексам так
$_SESSION['user'] а не $_SESSION[user]

Автор: TIGERоX 19.1.2006, 01:14
Интересно а как пишется список пользователей он-лайн неужто просто время куки или сессии меньше делают??(например в ibp) smile

Автор: Mal Hack 19.1.2006, 01:41
TIGERоX посмотри выше, я ссылку давал. Принцип такой, практически везде.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)