Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Увеличение числа на 1, Хоть убейте, работает ОЧЕНЬ криво((( 
V
    Опции темы
GiV
Дата 20.8.2007, 00:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 13.7.2006
Где: rus|53

Репутация: 4
Всего: 9



Да собственно рассказывать не о чем, потому как на шаред хостинге или включено или нет (обычно нет).

Варианта использования shared memory 2-а:

1. Собрать PHP с поддержкой shared memory allocation (mm) --with-mm=[DIR]
Однако в комментариях этого делать не советуют из-за конфликтов при работе всего этого дела под Apache (PHP просто вылетает в корку при попытке создании сессии)

2. Воспользоваться возможностями ОС (кроме Windows). А именно tmpfs или md.
Собственно у меня под FreeBSD сделано так:

Код

mdconfig -a -t malloc -s 256m
newfs -U /dev/md0

mount /dev/md0 /var/tmp

chmod 1777 /var/tmp


Добавлено через 10 минут и 51 секунду
Да... БД, в частности MySQL, тоже позволяют хранить таблицы в памяти, так что по сути доступное всем решение это создание таблиц сессий в базе данных типа HEAP ( или ENGINE = MEMORY )

Так что если не смущает дополнительная нагрузка на сервер БД, то это выход для получения достаточно производительного механизма сессий.

Хотя работа напрямую с shared memory все же быстрее, ИМХО.
PM MAIL WWW ICQ   Вверх
Agares
  Дата 20.8.2007, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 376
Регистрация: 20.5.2007
Где: Минск

Репутация: нет
Всего: нет



У меня вопрос стоит не в скорости работы, а в качестве, думаю, лучше будет на БД осуществить сессии. Спасибо за тот код, который вы привели, очень помог. Сейчас буду сидеть переписывать ... 

Вот еще один вопрос, как передавать session_id пользователю? не делать же постоянно ссылку типа mysite.com?id=clf265k264g265j4okf5glkf242ghpd

Есть вариант этот id в куки записывать, но я с куками не умею работать :(


--------------------
Мой ноут: Impression First 657
ОС: Gentoo Linux
PM MAIL WWW Skype GTalk   Вверх
Severyanin
Дата 20.8.2007, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 31.7.2007
Где: Россия, Омск

Репутация: нет
Всего: 9



Так в них нет ничего сложного. Устанавливаешь куку функцией setcookie(), а при необходимости берешь из глобального массива $_COOCIES. Вот и все smile 


--------------------
"Звонким вереском скроются наши следы, и не вспомнят о них. Кто поверит нам, рыцарям павшей звезды из отвергнутых книг? Пусть в узоре времен ни стихов. ни имен, но напомнит забывшим их полуночный крик." Тэм Гринхилл
"Ужели суслик твоего коварства нагадит в плов доверья моего?". Л.Филатов 
PM MAIL WWW ICQ   Вверх
Agares
  Дата 20.8.2007, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 376
Регистрация: 20.5.2007
Где: Минск

Репутация: нет
Всего: нет



У меня появилась мысль, можно ведь сделать так:
Код

   $session_id = md5($_SERVER['REMOTE_ADDR']);


Как думаете?

Добавлено через 55 секунд
Severyanin, можна примерчик кода записи в куки и чтения из него?  smile 


--------------------
Мой ноут: Impression First 657
ОС: Gentoo Linux
PM MAIL WWW Skype GTalk   Вверх
GiV
Дата 20.8.2007, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 13.7.2006
Где: rus|53

Репутация: 4
Всего: 9



Цитата(Agares @  20.8.2007,  11:30 Найти цитируемый пост)
Вот еще один вопрос, как передавать session_id пользователю? не делать же постоянно ссылку типа mysite.com?id=clf265k264g265j4okf5glkf242ghpd

В случае если будете переопределять session_handler (http://ru2.php.net/manual/ru/function.session-set-save-handler.php), то сессия будет сохранятся в куках (особенное если включен session.use_only_cookies)


Цитата(Agares @  20.8.2007,  11:33 Найти цитируемый пост)
У меня появилась мысль, можно ведь сделать так:

Достаточно узнать IP жертвы, и сессия будет подделана злоумышленником. Два разных пользователя из одной локальной сети (сидящие за proxy-сервером) будут иметь одну и ту же сессию.

Идентификатор сессии должен быть:
а) уникальным
б) с большим элементом случайности

Как вариант
Код
$session_id = md5( uniqid(microtime()) ); 


Цитата(Agares @  20.8.2007,  11:33 Найти цитируемый пост)
можна примерчик кода записи в куки и чтения из него? 

http://ru2.php.net/setcookie - достаточно примеров и записи и чтения.

Да еще при чтении сессии из кук, стоит проверять полученные данные на "внешнюю похожесть" на ид сессии, либо удалять то чего в ид не может быть, например так:
Код
$session_id = preg_replace("/([^a-zA-Z0-9])/", "", $session_id);


PM MAIL WWW ICQ   Вверх
Agares
  Дата 20.8.2007, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 376
Регистрация: 20.5.2007
Где: Минск

Репутация: нет
Всего: нет



по поводу куков, я правильно понял:
Код

<?php

   if (!isset($_COOKIE['id'])) //Если куков нет, создаем
   {
             $session_id = md5( uniqid(microtime()) );
             $session_id = preg_replace("/([^a-zA-Z0-9])/", "", $session_id);

             setcookie("id", $session_id); //устанавливаем куки
   }

  $session_id = $_COOKIE["TestCookie"]; //Читаем куки

?> 


И еще вопрос, зачем вот эта строчка:
Код

   $session_id = preg_replace("/([^a-zA-Z0-9])/", "", $session_id);

что она делает?

Добавлено через 1 минуту и 28 секунд
и еще вопрос:

Код

uniqid()
microtime()


Что это за функции?

Добавлено через 4 минуты и 59 секунд
да и еще, как удалить куки?

Добавлено через 6 минут и 41 секунду
Слушайте, так с помощью куков ведь можно сделать автологин!! 


--------------------
Мой ноут: Impression First 657
ОС: Gentoo Linux
PM MAIL WWW Skype GTalk   Вверх
GiV
Дата 20.8.2007, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 13.7.2006
Где: rus|53

Репутация: 4
Всего: 9



Цитата(Agares @  20.8.2007,  12:09 Найти цитируемый пост)
И еще вопрос, зачем вот эта строчка:

Для проверки того, что вместо md5-хэша в  session_id в куке плохой дядя не воткнул SQL/CSS инъекцию.


Цитата(Agares @  20.8.2007,  12:09 Найти цитируемый пост)
Что это за функции?

Собственно функции для генерации уникальных значений ид.


Цитата(Agares @  20.8.2007,  12:09 Найти цитируемый пост)
да и еще, как удалить куки?

Код
 setcookie("id", "0" );


Сам код должен быть приблизительно таким
Код

<?php
   if (!isset($_COOKIE['id'])) //Если куков нет, создаем
   {
             $session_id = md5( uniqid(microtime()) );
             setcookie("id", $session_id); //устанавливаем куки
   } else {
             $session_id = $_COOKIE["id"]; //Читаем куки
             $session_id = preg_replace("/([^a-zA-Z0-9])/", "", $session_id);
   }
?> 


Это сообщение отредактировал(а) GiV - 20.8.2007, 12:28
PM MAIL WWW ICQ   Вверх
Agares
  Дата 20.8.2007, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 376
Регистрация: 20.5.2007
Где: Минск

Репутация: нет
Всего: нет



Аааа понятно, спасибо БОЛЬШОЕ!!!!
Было б у меня 100 сообщений, поставил бы плюсик ;)


--------------------
Мой ноут: Impression First 657
ОС: Gentoo Linux
PM MAIL WWW Skype GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0500 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.