PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (91): В начало « ... 3 4 5 6 [7] 8 9 10 11 ... » В конец

> Найдено сообщений: 1361
Саныч Отправлено: 19 Августа, 2013 - 12:19:22 • Тема: Хранение данных пользователя • Форум: Вопросы новичков

Ответов: 79
Просмотров: 3499
caballero пишет:
сессия не может существовать без куки или идентификатора приклееного к URL.
Ну может я не так выразился. Но факт в том, что подставляем в куку ID за 12 июля и вуаля, сессия более чем месячной давности возобновлена.
Саныч Отправлено: 19 Августа, 2013 - 11:30:21 • Тема: Хранение данных пользователя • Форум: Вопросы новичков

Ответов: 79
Просмотров: 3499
Squirrel пишет:
Сессия имеет некий период жизни, после чего сама закрывается, и все данные из нее удаляются.
Сессионная кука имеет некий период жизни, а не сама сессия. Об этом вам уже LIME написал. Для примера, я специально залез в папочку с файлами сессий на своем домашнем серваке. Самый древний файл там еще за 12 июля!

Squirrel пишет:
В этой базе ты будешь хранить только некий ID только удаленных пользователей за очень короткий период. Остальные данные там тупо не нужны, это же очевидно.
В сессии ты этот ID и так хранишь,
В основной BD этот ID у тебя уже есть.
Ну во-первых в основной базе этого ID уже нет. Мы ведь удалили пользователя.
К тому же при такой схеме прийдется каждый раз для каждого пользователя, при каждом запросе зачитывать этот файл и смотреть там его ID. При том что сессию мы так же используем каждый раз. В сессии по любому будет хранится какая-то запись нужная для подтверждения авторизации пользователя. А так мы очистили его сессию. Пользователь заходит, а этой записи нет, его сразу и выкинет...
Саныч Отправлено: 19 Августа, 2013 - 02:57:49 • Тема: Хранение данных пользователя • Форум: Вопросы новичков

Ответов: 79
Просмотров: 3499
DelphinPRO пишет:
Так, наверное, можно и модифицировать данные, не завершая сессию? Например, админ повысил\понизил пользака в правах.
А почему нет. Мы ж ее стартуем, а дальше делаем что хотим. При следующем запросе у пользователя будут новые права, без всяких перезаходов и дергания БД.

Squirrel пишет:
Причем под BD я понимаю именно BD, а не только то, что создают MySql или прочие.
То ли я дурак, то ли лыжи не едут. Т.е. вы мне предлагаете создать еще одну, отдельную, базу для пользователей? Зачем?! Растерялся И чем это будет быстрее?..
Саныч Отправлено: 19 Августа, 2013 - 02:16:57 • Тема: Использование flock • Форум: Вопросы новичков

Ответов: 45
Просмотров: 1483
Это ж откуда интересно, разработчики PHP копипастят документацию для своего же творения? Улыбка
На такую документацию, как у PHP еще грех жаловаться.
Саныч Отправлено: 19 Августа, 2013 - 02:13:34 • Тема: Хранение данных пользователя • Форум: Вопросы новичков

Ответов: 79
Просмотров: 3499
Squirrel пишет:
"Юзер заходит", проверяем, а существует ли такой юзер в BD, и если нет далее по тексту.
Так в этом и есть суть вопроса. Так нужно каждый раз делать запрос к БД. А мы тут обсуждаем, чтоб хранить данные пользователя в сессии, а в БД лезть только, когда он входит через форму или куки.
И встал вопрос, а что если пользователь авторизован и в этот момент админ его удаляет. Сессия то у него уже открыта, а в базу не лазит, т.е. не узнает что его уже нет...
Саныч Отправлено: 19 Августа, 2013 - 01:37:16 • Тема: Хранение данных пользователя • Форум: Вопросы новичков

Ответов: 79
Просмотров: 3499
DelphinPRO, потестил малость. Если нужно грохнуть данные в чужой сессии:
PHP:
скопировать код в буфер обмена
  1. session_start(); // это запуск нашей сессии
  2. // тут проверяем авторизацию
  3.  
  4. $sessID = session_id(); // сохраняем свой ID
  5. session_write_close(); // закрываем свою сессию
  6.  
  7. session_id('j4fpt59nmitjauersf345655i7'); // ID чужой сессии
  8. session_start(); // запускаем
  9. session_destroy(); // и тут же убиваем
  10.  
  11. session_id($sessID); // возвращаем обратно свой ID
  12. session_start(); // восстанавливаем свою сессию
Вот такой костыль у меня получился. Все работает, как ожидалось, но почему-то мне такое решение не нравится Хм
Саныч Отправлено: 19 Августа, 2013 - 00:21:30 • Тема: Хранение данных пользователя • Форум: Вопросы новичков

Ответов: 79
Просмотров: 3499
DelphinPRO, а если такая схема. Пользователь авторизовуется, пишем в БД его sess_id. В саму сессию нужные данные. Потом, когда нам приспичит удалить пользовател, читаем это sess_id запускаем сессию с таким id и грохаем все данные в сессии, удаляем юзера из БД. Юзер заходит, сессия "пустая", авторизация не подтверждена. Все счастилвы...
Саныч Отправлено: 19 Августа, 2013 - 00:01:03 • Тема: Регулярные выражения. Тренировки teddy • Форум: Регулярные выражения

Ответов: 43
Просмотров: 2634
teddy, ответ к второй задаче об IP
PHP:
скопировать код в буфер обмена
  1. '#^(?:(?:[1-9]?\d|1\d{2}|2[0-4]\d|25[0-5])(?:\.|$)){4}#'


EuGen, смотрел ваш класс. Конечно за труд вам +1, но регулярку он выдает очень большую, совсем не красивую... А на больших числах (4 и более разрядов) это особенно заметно.
Пытался сегодня написать аналог, но по-лучше. Вобщем идеала мне добится так и не удалось... Да и практической пользы от этого я не вижу. В итоге забросил эту затею.
Саныч Отправлено: 18 Августа, 2013 - 23:49:28 • Тема: Пользовательская функция • Форум: Вопросы новичков

Ответов: 24
Просмотров: 809
Synov_son, ну так и выкладывайте код своей функции полностью, а не выдрали часть строки и говорите, что ничего не выводит... Все телепаты еще на югах...
Саныч Отправлено: 18 Августа, 2013 - 23:47:11 • Тема: Проблема при создании динамического класса при использовании пространственных имен • Форум: Объектно-ориентированное программирование

Ответов: 28
Просмотров: 4344
PHP:
скопировать код в буфер обмена
  1. use classes\app\controller as APP;
  2. $obj = new APP;
Саныч Отправлено: 18 Августа, 2013 - 23:43:08 • Тема: Электронная запись • Форум: Вопросы новичков

Ответов: 2
Просмотров: 226
BOG пишет:
то ли тоже на стороне сервера все делать, то ли
через mysql
Однако Огорчение

Что не понятно то? В БД делаете таблицу специалистов, таблицу записей к этим спецам.
Выводите все это дело пользователю. Организовываете возможность выбрать день и время. Я б это сделал в виде календаря. Свободные и занятые дни/время как-то выделить по разному. Кликнули по дню, вывалился списочек с временем, кликнули по времени - полетели данные на сервак. Там уже провери, свободен ли специалист в этот день и час. Если да - добавили запись в БД, нет - показали ошибку пользователю.

Вот как-то так это можно объяснить, что называется на пальцах.
Саныч Отправлено: 18 Августа, 2013 - 23:37:07 • Тема: Пользовательская функция • Форум: Вопросы новичков

Ответов: 24
Просмотров: 809
Synov_son пишет:
Тоже пустоту выводит
Как же она у вас что-то выведет, если функция ничего не возвращает...
Вобщем вам в самое начало мануала по PHP.
Саныч Отправлено: 18 Августа, 2013 - 23:35:32 • Тема: Хранение данных пользователя • Форум: Вопросы новичков

Ответов: 79
Просмотров: 3499
DelphinPRO пишет:
Для это давно придуманы различные механизмы\алгоритмы, не проблема вообще.
Можно пару слов подробнее по этому поводу?
Саныч Отправлено: 18 Августа, 2013 - 17:39:53 • Тема: Пользовательская функция • Форум: Вопросы новичков

Ответов: 24
Просмотров: 809
Synov_son пишет:
что не так делаю ?
Да все не так...
PHP:
скопировать код в буфер обмена
  1. function insert_module($position) {
  2.     global $pos;
  3.     return array_key_exists($position, $pos) ? $pos[$position] : false;
  4. }
Саныч Отправлено: 18 Августа, 2013 - 02:54:33 • Тема: Регулярные выражения. Тренировки teddy • Форум: Регулярные выражения

Ответов: 43
Просмотров: 2634
teddy, постараюсь пояснить. Да кстати, я там обновил свой ответ, последнего символа $ нет теперь, но это не принципиально, разницы никакой, просто дублирование получалось.

Теперь по порядку.

Символы ^ и $ - это начало и конец строки соответственно. Где бы они ни были, хоть в символьно классе (в квадратных скобках), хоть еще где. Если нет экранирования - это спец символы. Также как и точка, ну вы с ней уже разобрались Улыбка Есть только одно исключение для символа ^, когда он не значит "начало строки", но пока опустим этот момент.

Комбинация ?: - это группировка без обратной связи. Ставится сразу после открывающейся круглой скобки. Используется если нам не нужно нигде использовать часть заключенную в этой скобке. Т.е. если идет просто группировка (просто круглые скобки), то значение, что в них попадет будет запомнено и доступно после. Это как вы проверяли части IP в своем варинте в цикле. Т.е. у вас после preg_match был массив с частями исходной строки. А вот если указать ?:, то этих частей уже не будет. Надеюсь ясно объянил. Зачем это нужно? Не занимает память, соответственно ускорение работы. С регулярками это вобще критично, т.к. они сами по себе достаточно медленные.

"волшебная палочка |" означает "или". Т.е. в моем случае выражение (?:\.|$) значит следующее: символ точка или конец стоки.

Чтоб еще понятней стало опишу, как я составлял эту регулярку по шагам.
1. Вся строка это ip адресс, т.е. от начала до конца. ок, пишем 2. Строка состоит строго из четырех одинаковых частей (четыре части разделеных точкой). ок, пишем дальше 3. каждая часть может быть от одной до трех цифр. так и запишем 4. после каждой группы цифр обязательно должна стоять точка, но кроме последней группы, после нее должен быть конец строки, т.е. имеем: символ точка или конец строки, записываем
CODE (htmlphp):
скопировать код в буфер обмена
  1. '#^(?:\d{1,3}(?:\.|$)){4}$#'
5. и последнее, конец строки мы уже проконтролировали, удаляем последний символ. Окончательный вариант
CODE (htmlphp):
скопировать код в буфер обмена
  1. '#^(?:\d{1,3}(?:\.|$)){4}#'

Вот так вот, простое разбиение на мельчайшие блоки, простая логика, по шажочкам и получилась эта страшная строка Улыбка

teddy пишет:
И ещё не понял того, как данная регулярка определяет что нельзя более 255 писать в каждый кармашек
Никак не определяет Улыбка Это ведь был ответ к первому заданию. Ответ ко второму пока не выкладываю, попробуйте сами решить. Дам только небольшую подсказку, изменить нужно только вот эту часть \d{1,3}
По длине же новая регулярка у меня получилась примерно раза в два больше.

Страниц (91): В начало « ... 3 4 5 6 [7] 8 9 10 11 ... » В конец
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB