|
|
|
| Какие существуют методы проверки данных, введённых пользователем (желательно с исходным кодом)? Как проверить, что все символы например латинские? Вообще правильно будет делать первичную проверку на JavaScript и ещё одну на php? | |
|
|
|
|
|
|
|
для: sasha1133
(12.02.2010 в 02:48)
| | проверить можно при помощи empty(), isset()б на наличие латинских символов можно использовать регулярные выражения | |
|
|
|
|
|
|
|
для: sasha1133
(12.02.2010 в 02:48)
| | Наличие введенных данных проверять лучше конструкцией if (empty($..)) {//ошибка} т.к. скорее всего данные будет приходить из формы через и в $_POST будет существовать элемент (isset пройдет успешно), но значение будет отсутствовать.
Про проверку логина - ищите в разделе регулярных выражений, там на любой вкус и цвет уже собрано.
Первичная проверка на яваскрипте - это нормально, т.к. пользователю без лишних перезагрузок страницы укажут и подскажут (удобно), и затем проверить на php, т.к. у некоторых скрипты отключины (да и в любом случаи, на php проверка должна быть всегда) | |
|
|
|
|
|
|
|
для: neadekvat
(12.02.2010 в 07:16)
| | >т.к. у некоторых скрипты отключины
Да если и включены, все равно это сервис - ничего не стоит обойти его, потому и нужна проверка именно на сервере. | |
|
|
|
|
|
|
|
для: neadekvat
(12.02.2010 в 07:16)
| | >Первичная проверка на яваскрипте - это нормально, т.к. пользователю без лишних перезагрузок страницы укажут и подскажут (удобно), ...
Верно.
>и затем проверить на php,
...поскольку уровень JS не в Вашем, как программиста, явном подчинении, он лишь носит рекомендательный характер.
Пользователь может его проигнорировать, изменить клиентский код, исключить его вообще, сформировав весь набор входных параметров самостоятельно. Поэтому на уровне php всё равно требуется независимый от JS контроль всех параметров входа php-скрипта. | |
|
|
|
|
|
|
|
для: Trianon
(12.02.2010 в 08:32)
| | Спасибо)
а вообще какая должна быть примерная последовательность проверки на сервере (к примеру передаются данные для настроек, которые потом будут записаны в текстовый файл - логин, пароль, настройки MySQL)?
PS. Правильно ли я делаю, что храню логин и пароль в таком файле :
<?php die; ?>
lox
c4ca4238a0b923820dcc509a6f75849b
1
|
То есть логин как он есть, потом мд5 пароля и потом длина пароля в символах. | |
|
|
|
|
|
|
|
для: sasha1133
(12.02.2010 в 12:39)
| | длину пароля хранить не нужно | |
|
|
|
|
|
|
|
для: sasha1133
(12.02.2010 в 12:39)
| | Длину пароля рядом с хешем хранить зачем?
Чтобы по хешу пароль проще подбирать было? | |
|
|
|
|
|
|
|
для: sasha1133
(12.02.2010 в 12:39)
| | В таблице хранить :
1 Имя пользователя
2 Хэш пароля (в случае если пользователь его забыл то выслать новый временный)
3 майл (чтобы знать куда высылать )
4 уникальный ключ(он нужен для куки которая ставится ,пользователю на определённое время)
5 время последней авторизации пользователя
в куку пишем :
ключ
имя пользователя
время действия куки
читаем куку,проверяем уникальный ключ,имя,время по БД:
если время для ключа просрочено,то просим пользователя по новой авторизоваться и обновляем в бд и куке ключ и время
ключ можно составить из md5(имени пользователя .юзер агента.времени последней авторизации)
IP -- можно тоже вогнать в ключ, но не желательно, т.к у многих IP динамические ,или одинаковые, кто входит с мобильных
кроме проверки по бд можно осуществить проверку самой куки
если ключ(куки) ! = md5(имя(из БД).время (из БД).$_SERVER['HTTP_USER_AGENT']) это не наш ,пусть авторизуется или регистрируется или(ну сами придумайте)
даже если уведут куку ,то авторизоваться с помощью её будет невозможно
можно ещё хакерам усложнить жизнь :
При удачной авторизации или при наличие правильной куки запустить сессию с переменной Ключом и Именем пользователя ,ключ можно составить из md5( $_SERVER['HTTP_USER_AGENT'].IP.session_id() ) и проверять если ключ (сессия)!= md5( $_SERVER['HTTP_USER_AGENT'].IP.session_id() ), то это не наши люди, даже если PHPSESSID
уведут,то всё равно не смогут используя её ,войти вместо данного пользователя | |
|
|
|
|
|
|
|
для: oliss
(12.02.2010 в 13:59)
| | А чем плохо в текстовом файле хранить логин и хэш? | |
|
|
|
|
|
|
|
для: sasha1133
(12.02.2010 в 19:45)
| | Одни ездят на Мерседесе, другие на Запорожце. И то, и то машина ,кому что надо,и что нравиться. | |
|
|
|
|
|
|
|
для: oliss
(12.02.2010 в 22:40)
| | тут корректнее сравнивать автомобиль и метро.
При чем метро - SQL сервер.
Одно дело когда ты пишешь обработку данных сам (и едешь сам) и другое - когда пользуешься услугами сервиса (и когда едешь - тоже на чьем-то транспортном сервисе) | |
|
|
|
|
|
|
|
для: Trianon
(12.02.2010 в 22:49)
| | Ага,ещё и давишься в часы пик. | |
|
|
|
|
|
|
|
для: oliss
(12.02.2010 в 23:38)
| | Ну так и на реальном MySQL сервере подчас давка устраивается.
Никогда не видели "Сервер MySQL перегружен - повторите попытку через 5 минут. "?
Это же вопрос количественных отличий, а не качественных.
И в мерс можно напихаться как сельдьми в банку.
Что на картинках из разного забугорья прекрасно видно. | |
|
|
|
|
|
|
|
для: Trianon
(12.02.2010 в 23:51)
| | Не понимаю логику сравнения, особенно про мерс и запорожец. Не проще ли написать плюсы и минусы? Например я вижу в текстовом файле 1 плюс - это возможность зайти в админку и уже потом настроить подключение к базе данных. Чем плохо? Если есть минусы текстового файла (с расширением php и с первой строкой <?php die(); ?>, чтобы ничего не выводилось в браузер при попытке к нему обратиться), то напишите какие, буду благодарен. | |
|
|
|
|
|
|
|
для: sasha1133
(13.02.2010 в 00:08)
| | В этом вся соль!
Вам дали разные варианты решения.
Ваша задача САМОМУ выбрать экспериментальным путём ,что Вам больше подходит. | |
|
|
|
|
|
|
|
для: sasha1133
(13.02.2010 в 00:08)
| | Вам бы определиться самому сначала или более кореектно поставить вопрос.
Так что же нужно - обеспечить паролированный доступ в "админку" или Вам нужны
>методы проверки данных, введённых пользователем
?
Если первое, то да, файл надежнее и менее нагрузочно. Ежели второе, то опять же зависит от числа пользователей. Если их 5-10, это одно. А если 500000 -~, то другое.
Сравнивать метро и машину в данной ситуации так же как и в жизни.. Иногда приходится бросать последнюю, что бы успеть доехать на метро, иногда не стоит спускаться в подземелье, если проехать нужно два квартала.
Все хорошо на своих местах. | |
|
|
|
|
|
|
|
для: Николай2357
(13.02.2010 в 01:19)
| | Ясно, спасибо) Мне для админки файл. Для пользователей буду базу создавать (если придётся) | |
|
|
|
|
|
|
|
для: sasha1133
(12.02.2010 в 02:48)
| | PS. Появился вопрос. Чтобы не создавать новую тему, спрошу здесь:
я знаю только пару функций для обработки строк, например
htmlspecialchars()
mysql_escape_string()
и то, не совсем знаю, что они делают =)
может подскажите какие нибудь наиболее полезные функции для обработки строк? описание я сам найду. Попалась сегодня какая то функция nl2br, которая заменяет \n на <br />, вот мне бы побольше такого рода функций) | |
|
|
|
|
|
|
|
для: sasha1133
(20.02.2010 в 13:00)
| | http://php.su/functions/?cat=strings | |
|
|
|
|
|
|
|
для: t3ma
(20.02.2010 в 13:42)
| | Спасибо. А можно если не трудно перечислить, на какие стоит обратить внимание, то есть те, которые наиболее часто применяются в веб-программировании? | |
|
|
|
|
|
|
|
для: sasha1133
(20.02.2010 в 14:59)
| | Обращать внимание нужно на все, а использовать те, которые требуются для той или иной задачи. | |
|
|
|
|
|
|
|
для: sasha1133
(20.02.2010 в 13:00)
| | >может подскажите какие нибудь наиболее полезные функции для обработки строк?
Вы не пробовали заказывать в аптеке какие-нибудь полезные лекарства, допустим, для нервной системы?
То, что Вы просите - один в один звучит именно так. | |
|
|
|
|
|
|
|
для: Trianon
(20.02.2010 в 23:28)
| | Согласен, вопрос не очень корректный. Меня интересует функции, обрабатывающие данные, приходящие в первую очередь из форм. Например набранная статья, логин\пароль, что то в этом роде. Хочу сделать надёжную проверку таких данных, чтобы избежать проблем. Просто я не в курсе, чем пользователь может навредить, посылая что либо через форму. У меня чаще всего возникает ситуация, когда:
1) пользователь с помощью формы посылает данные,
2) потом к примеру $text = $_POST['text'];
3) потом запись в БД
4) вывод из БД и отображение в браузере
Хочу узнать, на каких этапах нужно осуществлять проверку и каким способом. Особенно трудно у меня дело обстоит с текстом с элементами форматирования (тегами или bb-кодами) - я не знаю, как организовать проверку, чтобы сохранить форматирование текста и избежать "неприятностей" | |
|
|
|