Вопрос № 50392: Здравствуйте.
Как с помошью PHP прочитать хедеры другого сайта?
Заранее благодарю....Вопрос № 50455: Добрый день! Как можно реализовать на сайте такую вещь: когда пользователь заходит за логином и паролем то он есть в списке on-line а когда выходит нет. Извените если вопрос уже задавался! Заранее спасибо....Вопрос № 50457: Уважаемые эксперты!
Подскажите пожалуйста способ хранения данных.
Делаю аукцион.
Есть начальная цена (но это не важно).
Пользователь заходит и пишет свою цену.
Заходит следующий пользователь, перебивает цену.
Вот именно ВСЕ эт...
Вопрос № 50.392
Здравствуйте.
Как с помошью PHP прочитать хедеры другого сайта?
Заранее благодарю.
Отправлен: 27.07.2006, 22:14
Вопрос задал: Beka (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: Physicist
Здравствуйте, Beka!
Я так понимаю, что под хедерами сайта понимается ответ на запрос HEAD. Если так - см. Пример 2 по адресу http://ru.php.net/manual/ru/ref.sockets.php
Ответ отправил: Physicist (статус: 9-ый класс)
Ответ отправлен: 27.07.2006, 22:36 Оценка за ответ: 5
Отвечает: Saw
Здравствуйте, Beka!
header`ы можно вытащить так (пример из мануала к php5):
/* Для PHP 4.3.0 используйте $http_response_header
вместо stream_get_meta_data() */
foreach(stream_get_meta_data($fp) as $response) {
/* Были ли мы перенаправлены, с помощью header`а
"Location: " ? */
if (substr(strtolower($response), 0, 10) == 'location: ') {
/* обновим $url */
$url = substr($response, 10);
}
}
?>
Удачи!
Ответ отправил: Saw (статус: 2-ой класс)
Ответ отправлен: 28.07.2006, 08:40
Вопрос № 50.455
Добрый день! Как можно реализовать на сайте такую вещь: когда пользователь заходит за логином и паролем то он есть в списке on-line а когда выходит нет. Извените если вопрос уже задавался! Заранее спасибо.
Отвечает: Physicist
Здравствуйте, Грицай Алексей Юрьевич!
Создайте файл onlineusers.txt, в котором будут храниться имена online пользователей. В функции Login (не знаю, как она у Вас называется) считываете этот файл в массив, проверяете, есть ли там такой элемент и, если нет - добавляете его. Соответственно, в Logout - удаляете его если он там есть.
Приложение:
Ответ отправил: Physicist (статус: 9-ый класс)
Ответ отправлен: 28.07.2006, 15:02 Оценка за ответ: 4
Отвечает: Saw
Здравствуйте, Грицай Алексей Юрьевич!
Можно например так:
Будем использовать сессии. Сделать базу где будет храниться идентификатор сессии и врема последней активности юзера, когда юзер заходит, стратуем сессию, и записываем ее идентификатор в базу и время входа, действия пользователся на сайте должны сопровождаться обновлением в базе времени его последней активности. А чтобы пользователь исчезал со временем из on-line необходимо проверять текущее время и время его последней активности, если разница во времени превосходит необходимый предел, то пользователя не следует
считать on-line`овым. На случай если пользователь сам захочет выйти нужно просто уничтожить его сессию. Тут можно еще предложить несколько вариантов насчет выхода пользователя из on-line: можно просто удалять запись из базы, а можно при следующем его входе просто запись обновлять.
Удачи! ;)
Ответ отправил: Saw (статус: 2-ой класс)
Ответ отправлен: 28.07.2006, 15:07
Отвечает: Jeka911
Здравствуйте, Грицай Алексей Юрьевич!
Ведем таблицу: active: user, logdate.
При заходе пользователя выполняем следующие запросы:
1. DELETE * FROM active WHERE (DATE_ADD(`logdate`,INTERVAL '10' MINUTE))<NOW();
2. INSERT INTO active (user,logdate) VALUES ('$username',NOW());
3. SELECT * FROM active;
4. $n = mysql_num_rows(mysql_query($zapros3));
$n = количество пользователей онлайн.
Надеюсь понятно.
П.С. Если посетителей мало, первый запрос можно выполнять при каждом просмотре страницы, ну и естественно, при logout пользователя.
--------- Шахтер - чемпион!!!
Ответ отправил: Jeka911 (статус: 7-ой класс)
Ответ отправлен: 28.07.2006, 20:56
Вопрос № 50.457
Уважаемые эксперты!
Подскажите пожалуйста способ хранения данных.
Делаю аукцион.
Есть начальная цена (но это не важно).
Пользователь заходит и пишет свою цену.
Заходит следующий пользователь, перебивает цену.
Вот именно ВСЕ эти цены необходимо записывать куда-то, при чем желательно в одно место (одну ячейку строки лота) в виде Петя-500,Вася-1000 и т.д.
У меня была идея работы с массивом, но как угадать, какого размера должен быть массив? Или есть возможность автоувеличения массива?
Если вы меня поняли, то посоветуйте что-нибудь. )))
Спасибо.
Если у тебя имена гарантированно разные можешь сделать так
1) $some_arr["Vasya"] = 500;
2) $some_arr["Oleg"] = 1000;
Тогда проще будет делать сортировку
--------- И будет вам счАстиЕ!
Ответ отправил: Madproger (статус: 8-ой класс)
Ответ отправлен: 28.07.2006, 15:47
Отвечает: Physicist
Здравствуйте, Andrey Star!
А в php у массивов размер не фиксирован (и вообще массив в php - это не совсем то, что понимается под массивом в большинстве языков программирования). Поэтому добавлять новые элементы ($arr[]=$newvalue) можно до бесконечности.
А реализация может быть любая - от текстовых файлов (каждая строка - цена и иня клиента) до базы данных (аналогично плюс id аукциона).
Ответ отправил: Physicist (статус: 9-ый класс)
Ответ отправлен: 28.07.2006, 15:52
Отвечает: Saw
Здравствуйте, Andrey Star!
Я так понял используется БД, тогда можно поступить так (помоему оптимальный вариант):
1) создать таблицу с лотами (Уникальный номер-Лот + еще какие надо поля)
2) создать таблицу с пользователями (Ун. номер пользователя-Имя пользователя-Цена-Номер лота)
Таким образом устанавливаем связь му двумя этими таблицами. Т.е. надо найти макс. цену лота №1, выдираем из таблицы пользователей все записи с "Номер лота" = 1, и находим поле с макс. ценой, из него же выдираем имя пользователяего Ун. номер.
Удачи! ;)
Ответ отправил: Saw (статус: 2-ой класс)
Ответ отправлен: 28.07.2006, 15:56
Отвечает: PVS
Здравствуйте, Andrey Star!
Массив в PHP сам увеличивается по мере добавляния в него записей.
Ответ отправил: PVS (статус: Студент)
Ответ отправлен: 28.07.2006, 16:05
Отвечает: Jeka911
Здравствуйте, Andrey Star!
Если необходимо хранить ставки в базе, массивы здесь не помогут.
Вариант: Ячейка типа TEXT, а ставки записывать в нее: "ставка1%ставка2%ставка3%".
Разбивать на массив: explode("%",$lots['bids']);
А добавлять ставки:
INSERT INTO lots('id',...,'bids')
VALUES
(' ' ,..., ' ". $lots['bids']."%".$newbid." ');
Но все же оптимальней вариант с дополнительной таблицей, описанный Saw'ом.
--------- Шахтер - чемпион!!!
Ответ отправил: Jeka911 (статус: 7-ой класс)
Ответ отправлен: 28.07.2006, 20:46
Отвечает: Козлов Алексей Сергеевич
Здравствуйте, Andrey Star!
Как описал Saw, данные лучше хранить в БД. Но есть ряд моментов:
1. Таблица лотов вида - НомерЛота (уникальный), Описание и т.д.
2. Как понимаю, пользователи должны регистрироваться. Если так то заводим еще таблицу пользователей - НомерПользователя, ДанныеПользователя.
3. Заводим таблицу отношений - НомерЛота, НомерПользователя, Ставка.
--------- Хорошие программы как птенцы - их нужно долго высиживать на яйцах
Ответ отправил: Козлов Алексей Сергеевич (статус: 2-ой класс)
Ответ отправлен: 28.07.2006, 23:18