| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Увеличение числа на 1 |
| Автор: Agares 19.8.2007, 17:26 | ||
| Делаю я и-нет магазин, когда чувак добавляет товар в корзину, то счетчик должен увеличиться на единицу. вот код:
Когда чувак просто входит в корзину, то счетчик обнуляется, а когда добавляет товар то доходит до 1 и выше не подымается. |
| Автор: HackMan 19.8.2007, 17:37 |
| а где start_session()? |
| Автор: Agares 19.8.2007, 17:49 |
| Он прописан в system.php |
| Автор: SelenIT 19.8.2007, 17:52 | ||||||
Agares, переменная
Зачем вообще переопределять все на свете? Зачем карусель с
, почему бы не сделать просто
По-моему, отлаживать код и отслеживать значения станет проще... |
| Автор: Agares 19.8.2007, 18:01 | ||
Изменил код:
Тоже самое ... Добавлено через 5 минут и 12 секунд Он увеличивает до единицы и все ... больше не увеличивает( |
| Автор: HackMan 19.8.2007, 19:23 | ||
| Вы точно уверены, что сессия нормально инициализируется? Может start_session() вызывается неправильно? Проверьте значения переменных
|
| Автор: Mal Hack 19.8.2007, 20:13 |
| Agares, мой Вам совет. Реализуйте сессию через БД, отдавая пользователю только ID сессии. Так построен OSCommerce - лидер, на сегодняшний день, в области интернет-магазинов общего распространния... У Вас будет проблем раз в 4-5 меньше, чем сейчас... |
| Автор: Agares 19.8.2007, 21:14 |
| Сессия нормально проходит ... А не подскажете сам алгоритм сессий через БД? |
| Автор: Agares 19.8.2007, 21:29 |
| Кстати, я вот тоже подумывал над тем, что бы через БД реализовать сэссию ... |
| Автор: aktuba 19.8.2007, 21:30 | ||
Мне тоже интересно. Можно подробнее? |
| Автор: Mal Hack 19.8.2007, 21:48 |
| А что подробнее. Создаем таблицу sessions с полями, которые нам нужны. Что раньше писали в сессию пишем в Базу, при этом для каждой записи записываем session_id, который идет пользователю и еще одно дополнительное поле - время записи, чтобы потом удалять старые. Все. Пользователь заходит, по пользовательскому сиду достаем запись в базе и работаем. |
| Автор: -=Ustas=- 19.8.2007, 22:10 |
| Но как мне кажется, стандартный механизм сессий будет работать быстрее, нежели с базой... разве нет? |
| Автор: Mal Hack 19.8.2007, 22:13 |
| -=Ustas=-, скорее всего быстрее, но не намного, данные все равно в файл пишутся... Зато надежность - на порядок выше. И удобство работы. |
| Автор: GiV 19.8.2007, 22:53 |
| Собственно пример с сессиями в БД: http://ru2.php.net/manual/ru/function.session-set-save-handler.php#60316 А вообще если о скорости, то лучше использовать shared memory |
| Автор: WIPS 19.8.2007, 23:38 |
А можно поподробнее об этом? |
| Автор: GiV 20.8.2007, 00:41 | ||
| Да собственно рассказывать не о чем, потому как на шаред хостинге или включено или нет (обычно нет). Варианта использования shared memory 2-а: 1. Собрать PHP с поддержкой shared memory allocation (http://www.ossp.org/pkg/lib/mm/) --with-mm=[DIR] Однако в комментариях этого делать не советуют из-за конфликтов при работе всего этого дела под Apache (PHP просто вылетает в корку при попытке создании сессии) 2. Воспользоваться возможностями ОС (кроме Windows). А именно tmpfs или md. Собственно у меня под FreeBSD сделано так:
Добавлено через 10 минут и 51 секунду Да... БД, в частности MySQL, тоже позволяют хранить таблицы в памяти, так что по сути доступное всем решение это создание таблиц сессий в базе данных типа HEAP ( или ENGINE = MEMORY ) Так что если не смущает дополнительная нагрузка на сервер БД, то это выход для получения достаточно производительного механизма сессий. Хотя работа напрямую с shared memory все же быстрее, ИМХО. |
| Автор: Agares 20.8.2007, 11:30 |
| У меня вопрос стоит не в скорости работы, а в качестве, думаю, лучше будет на БД осуществить сессии. Спасибо за тот код, который вы привели, очень помог. Сейчас буду сидеть переписывать ... Вот еще один вопрос, как передавать session_id пользователю? не делать же постоянно ссылку типа mysite.com?id=clf265k264g265j4okf5glkf242ghpd Есть вариант этот id в куки записывать, но я с куками не умею работать :( |
| Автор: Severyanin 20.8.2007, 11:32 |
| Так в них нет ничего сложного. Устанавливаешь куку функцией setcookie(), а при необходимости берешь из глобального массива $_COOCIES. Вот и все |
| Автор: Agares 20.8.2007, 11:33 | ||
У меня появилась мысль, можно ведь сделать так:
Как думаете? Добавлено через 55 секунд Severyanin, можна примерчик кода записи в куки и чтения из него? |
| Автор: Agares 20.8.2007, 12:09 | ||||||
по поводу куков, я правильно понял:
И еще вопрос, зачем вот эта строчка:
что она делает? Добавлено через 1 минуту и 28 секунд и еще вопрос:
Что это за функции? Добавлено через 4 минуты и 59 секунд да и еще, как удалить куки? Добавлено через 6 минут и 41 секунду Слушайте, так с помощью куков ведь можно сделать автологин!! |
| Автор: GiV 20.8.2007, 12:28 | ||||
Для проверки того, что вместо md5-хэша в session_id в куке плохой дядя не воткнул SQL/CSS инъекцию. Собственно функции для генерации уникальных значений ид.
Сам код должен быть приблизительно таким
|
| Автор: Agares 20.8.2007, 12:36 |
| Аааа понятно, спасибо БОЛЬШОЕ!!!! Было б у меня 100 сообщений, поставил бы плюсик ;) |