[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проблема при логине
zzzv1r
Вот при логине на сайт, я зделал для себя функцыю для фильтрации всяких ненужных символов, вот код
Код

function check($str)
{
if (preg_match("/[a-zA-Z0-9\-\_\s]{3,15}$/", $str)) //(preg_match("/[^\~\#\@\$\%\^\&\*\(\)\=\/\[\]\{\}\<\>\;\'\:]+$/", $str))
{return $str;}
else {
echo "<br><br>Неверный логин/пароль!!!!!!!!!!!!!!!";
}
}

В коментах написано по ходу тот же кусок тока инверсия, тоисть те символи которые мне не нужны (я пробовал реализировать всякими путями). Но в чем фишка, когда я пробую войти под логином который уже есть в базе, например это будет user, то символ '<' не проходит фильтр, функция как будто его не видит, и даже если написать логин или пароль вот так "user<gdrgdgdhdthd" то все что будет после скобы просто заигноритса и войдет на сайт без проблем. Остальные символы вроде фильтрируютса и такого с ними не происходит. В чем моя проблема господа?



Спустя 23 минуты, 4 секунды (12.08.2009 - 00:22) twin написал(а):
А вот в фильтрации и проблема. И еще потом вылезет. И не одна.
Тебе сюда.

Спустя 12 часов, 20 минут, 39 секунд (12.08.2009 - 12:43) zzzv1r написал(а):
ну тогда какая проблема, это хорошо что вы кинули ту ссилку, но если не затруднит сказать что за проблема?

Спустя 1 час, 57 минут, 20 секунд (12.08.2009 - 14:40) twin написал(а):
Даже, если чесно, не хочется вникать. Сама постановка вопроса, что в логине нельзя использовать какие то символы, уже вызывает грустные эмоции...
Учитесь правильно работать с данными, ничего тогда запрещать не надо будет. И фильтровать тем более.

Спустя 1 час, 25 минут, 13 секунд (12.08.2009 - 16:06) zzzv1r написал(а):
Цитата (twin @ 12.08.2009 - 11:40)
Даже, если чесно, не хочется вникать. Сама постановка вопроса, что в логине нельзя использовать какие то символы, уже вызывает грустные эмоции...
Учитесь правильно работать с данными, ничего тогда запрещать не надо будет. И фильтровать тем более.

хорошо, а как тогда надо правильно работать чтоб люди всякую дрянь не пихали?у меня уже на поле логин и пароль и так лимит символов 15 стоит. незнаю как еще можна в тех полях защищать, поскажыте?

Спустя 6 минут, 9 секунд (12.08.2009 - 16:12) twin написал(а):
А что есть дрянь? Я вот у себя на клавиатуре не вижу кнопок с надписью "дрянь"... Может клава устарела... Чем тебя обидели символы то?
Это называется - слышал звон, да не знаю где он. Если следовать такой логике, то лучше вообще закопать комп под землю и никому не говорить где зарыто. Тогда точно ни кто не обидит.
Повторяю: нужно правильно обрабатывать получаемые данные, а вовсе не запрещать что то.

Спустя 25 минут, 51 секунда (12.08.2009 - 16:38) zzzv1r написал(а):
Спасибо за помощь, вот потому и не пишу на форуме вопросов, потому что много критики а помощи 0.
2 twin. вместо того чтобы умничать и философствовать про дрянь и про кнопки на клаве могли бы просто написать что то толком, а не ходить около того что надо делать, вижу вы свой статус статус и количество сообщения заработали на флуде.

Спустя 34 минуты, 37 секунд (12.08.2009 - 17:12) twin написал(а):
Все дело в том, что подсказать как исправить твой кривой код - не проблема. Только ты с этим и жить останешься. Я предлагаю помощь тем, кто действительно хочет разобраться и научиться делать качественный продукт. А не абы скорее заткнуть дырку, авось пронесет.
Я несколько раз повторил, нельзя ничего фильтровать. Надо в корне менять мировоззрение. Я и задачу для того сочинил и готов тратить уйму времени, что бы научить желающих писать правильно.
А халявщиков от PHP и без того хватает, что бы я еще плодил своими ответами.

Спустя 32 минуты, 48 секунд (12.08.2009 - 17:45) Nikitian написал(а):
Перефразируя: написать вам грамотный код не проблема, но вы не поймёте его грамотности и станете клонировать бездумно, превращая его в говнокод, каким бы пахнущим фиалками они был изначально.
Если приходите на форум за готовыми решениями, то woweb.ru вам в помощь.

Спустя 32 минуты, 35 секунд (12.08.2009 - 18:18) twin написал(а):
Тут сложнее случай. Как правило получив ответ на такой вопрос, человек вообще больше не задумывается, как это и зачем. Потому что сам вопрос совершенно далек от истины. Если человек не хочет понять, что нельзя фильтровать данные и настойчиво просит поправить его кривую задумку, значит он не хочет разобраться. А хочет чтоб побыстрее заработало. Не важно как. Ведь он поленился даже почитать то, что я ему посоветовал. А там ведь есть и ответ. Правда цель задачи совсем другая, научить людей думать правильно, а не налепить готовых решений.
Ну а в целом то все верно.

Спустя 2 часа, 20 минут, 39 секунд (12.08.2009 - 20:38) zzzv1r написал(а):
если б я не хотел понять почему так, то б не пришол сюда, вы же не знаете скока я дней себе говову парю над этой проблемой
а фильтровать правильность логина таки надо я в это уже убедился, потомучто как вам понтравится логин типа #~%$():"

Спустя 8 минут, 16 секунд (12.08.2009 - 20:47) twin написал(а):
Логин, как и пароль - дело сугубо личное. То есть это частная собственность. И никто не в праве диктовать мне, Мс"Donald я или МсDonald. Хозяин ресурса вправе отказать конечно тому, кто будет писать всякие пошлости, но это модерация - совсем другая тема.
А что бы понять как правильно, нужно просто посмотреть ответ на задачу. А лучше решить её самому. Я всегда к Вашим услугам.
А править заведомую чушь - увольте.

Спустя 17 минут, 51 секунда (12.08.2009 - 21:04) kirik написал(а):
zzzv1r, twin спокойнее smile.gif
Пароль фильтровать не нужно, просто загоняешь его в md5 и все. И ограничения по символам в пароле тоже не нужны. А вот с логином, кто как.. Я разрешаю только a-z0-9-_ (чтобы можно было делать персональные страницы типа _http://kirik.site.com/), и длина не более 20 символов (чтобы длинные ники не портили внешний вид сайта).

Спустя 6 минут, 15 секунд (12.08.2009 - 21:11) twin написал(а):
Цитата
zzzv1r, twin спокойнее

А кто шумел? biggrin.gif

Загоняй сюда все что хочешь. все равно будет тебе персональная страница. А ограничение по длине - это не фильтрация скорее. Фильтрация, это запрет символoв.

Спустя 4 минуты, 56 секунд (12.08.2009 - 21:16) kirik написал(а):
Цитата (twin @ 12.08.2009 - 13:11)
Загоняй сюда все что хочешь. все равно будет тебе персональная страница.

Поисковики не очень любят УРЛы с символами отличными от a-z0-9_-, тем более поддомен не сделаешь.

Спустя 1 минута, 40 секунд (12.08.2009 - 21:17) twin написал(а):
А там нет других символов. Просто название страницы и логин - разные вещи. Для названия как раз фильтруется. И транслитируется. А логин - добро пожаловать. Любой.

Спустя 7 минут, 43 секунды (12.08.2009 - 21:25) kirik написал(а):
Цитата (twin @ 12.08.2009 - 13:17)
А там нет других символов. Просто название страницы и логин - разные вещи. Для названия как раз фильтруется. И транслитируется.

Тоесть twin и tw'in будут одинаковые в строке браузера?

Спустя 14 минут, 3 секунды (12.08.2009 - 21:39) twin написал(а):
в браузере будет twin. Если он уже есть, то знач на tw'in будет отказ, что такой занят. И наоборот. А логин будет таким, какой введешь. Кто первый встал, того и тапки. smile.gif

Спустя 43 минуты, 17 секунд (12.08.2009 - 22:22) zzzv1r написал(а):
2 kirik
да с паролем точно хорошая идейка в МД5
а вот на счет логина если я фильтрирую вот так
Код

function check($str)
{
if (preg_match("/^[a-zA-Z0-9\-\_\s]{3,15}$/", $str))
{return $str;}
else {
echo "<br>Даные не совпадают!";
?>

то в чем таки проблема, когда я введу admin как логин и вхожу на страницу и ввожу admin<asdfh> и всеравно меня пускает
я чет подумал что эти скобы как теги идут и потому вместимое <asdfh> пропадает до фильтра еще, а на фильтр попадает просто ник admin, какой и так проходит без проблем по фильтру, потому и пускает, возможно я не прав, подскажыте

Спустя 16 минут, 16 секунд (12.08.2009 - 22:39) twin написал(а):
Последний раз пытаюсь достучаться. Может кто то потом поймет, не в этот раз.
Логин служит для аунтификации пользователя. К нему одно требование - уникальность. Вот её нужно проверять.
Для авторизации служит пароль.
К нему вообще никакаих требований. Единственно можно подстраховать юзера, ограничив минимальную длинну. Авторизация происходит по связке логин-пароль. Если уникальный логин и соответствующий ему пароль соответствуют введенным юзером, то он свой. Все остальные изхищьрения - себе дороже.
Так что я устраняюсь, если кто желает помочь в дальнейших заблуждениях - его дело.

Спустя 32 минуты, 45 секунд (12.08.2009 - 23:11) kirik написал(а):
Цитата (twin @ 12.08.2009 - 13:39)
в браузере будет twin. Если он уже есть, то знач на tw'in будет отказ, что такой занят. И наоборот. А логин будет таким, какой введешь. Кто первый встал, того и тапки.
....
Так что я устраняюсь

Погоди, не бросай меня smile.gif Объясни пожалуйста, в чем смысл-то?
Вот смотри. Когда регистрируем пользователя, в поле логина он может ввести все что угодно, при условии уникальности этого имени, так? Когда мы выдаем ему персональную страничку, то откуда мы берем уникальное имя, подготовленное для использования в УРЛе?

Спустя 53 минуты, 21 секунда (13.08.2009 - 00:05) twin написал(а):
Вот это как раз и фильтруется. То есть для формирования имени страницы исключаются нежелательные символы и латиница транслетируется. Название страницы хранится в отдельном поле, по которому идет проверка уникальности. То есть для аунтификации юзера используется его родной, не тронутый логин, который может дорог ему как память)) К примеру у нас есть товарищ <?php Его страничка выглядела бы так: php, но в подписях и при авторизации все его, родное. Вот когда кто то захочет после него логин <?php?>, то при регистрации система выдаст - мол логин занят. Имхо это гораздо гуманнее, чем писать - введены недопустимые символы!!! Да с какого перепуга то они недопустимые... Если есть на клавиатуре, если используются везде вокруг и рядом, почему тут они стали недопустимыми то?

Спустя 14 минут, 2 секунды (13.08.2009 - 00:19) zzzv1r написал(а):
twin я понял про что ты тут надривался расказать, я просто имел ввиду при регистрации, фильтровать логин.

Спустя 3 минуты, 7 секунд (13.08.2009 - 00:22) Nikitian написал(а):
Цитата (twin @ 12.08.2009 - 21:05)
Вот когда кто то захочет после него логин <?php?>, то при регистрации система выдаст - мол логин занят. Имхо это гораздо гуманнее, чем писать - введены недопустимые символы!!!

Это ни разу не гуманно. Пользователь не должен разбираться во внутреннем устройстве вашего скрипта. Ввел "<?php?>" - не приняло, ввел "<?<?php?>?>" - опять не приняло, и конечно же последняя попытка "<?<?<?<?<?php'''''''':::;;()[][]?>?>?>?>" - опять не приняло, далее стараться уже не будет, т.к. посчитает ошибкой в скрипте регистрации! Потеряли пользователя из-за неуникальности второстепенного параметра.
У меня есть подобная же система, и тоже поле уникального ника используется в формировании ссылки, но т.к. ссылка зачастую не видна, то и требования к её красивости абсурдны. Занят "php", ну так замените на "php1" и т.д. У меня добавляется циферка и проверяется наличие до 50 раз (циклы без чёткого условия окончания не приемлю впринципе), увеличивая каждый раз циферку на 1. Если так не получилось подобрать уникальный ник, то алярмим и сообщаем, что произошёл песец, админ уведомлен, скоро свяжутся. Если после очистки ника символов мало или нет совсем, то генерится случайная строка, которая дописывается к очищенной, и с ней совершаются точно такие же действия, как описаны ранее.
Советую взять на вооружение данный метод и отстраняться от оценки системы с точки зрения разработчика (вы знаете как изменить ник, чтобы прошло. а пользователь не знает, но просто видит абсурдные ошибки о неуникальности).

Спустя 11 минут, 16 секунд (13.08.2009 - 00:33) twin написал(а):
Цитата
twin я понял про что ты тут надривался расказать, я просто имел ввиду при регистрации, фильтровать логин.

А мне чёт кажется не понял... Еще раз. Как будут выглядеть (и будут ли вообще) такие логины к примеру (взяты с этого форума)
S{oRpiO
<?php
-asan с телефона:-)-
Евгений (Yakuza)
NI(kot)IN
ДядяМиша
G3/SG1
И так далее? Вот посмотри сам, спокойно отображаются, ни кто их не резал страшными регулярками и ничего не запрещал. И ровным счетом ничего страшного не случилось.
Не надо ничего фильтровать
Надо правильно хранить и отображать информацию. Научиться это делать раз и на всегда, можно решив задачу, которую ты, как я понял, не удосужился даже прочитать. Вот в этом я готов тебе помочь.

Спустя 11 минут, 9 секунд (13.08.2009 - 00:44) twin написал(а):
Цитата
Советую взять на вооружение данный метод и отстраняться от оценки системы с точки зрения разработчика (вы знаете как изменить ник, чтобы прошло. а пользователь не знает, но просто видит абсурдные ошибки о неуникальности).

Спасибо, я подумаю над целесообразностью такого хитросплетения. Вообще это решается гораздо проще - обычним предложением в информере об ошибке:
К сожалению такой логин занят. Попробуйте выбрать другой. Если в Вашем логине имеются служебные символы, попробуйте добавить номер или дополнительную букву.
Вот в таких системах как mail, Яша и прочих монстрах, где подобрать логин уже проблема, люди не стесняются не только объяснять причины, но и предлагать альтернативы. Но ни кто не посягается на целостность логина. Не фильтруют их и не добавляют всякие разности. Я не хочу быть Николай2, это глупо звучит. Я сам хочу решать, как выкрутиться из такой ситуации.
Помочь - одно, а соваться в чужие дела на ультимативной основе - моветон.

Спустя 10 минут, 13 секунд (13.08.2009 - 00:54) Nikitian написал(а):
Как бэ речь шла не о логине, а о некоем уникальном идентификаторе, используемом в ссылках. Думаю в любом случае это будет лучше, чем использовать в ссылках ничего не говорящие цифры. Чем больше препонов ставите при регистрации, тем меньше людей дойдут до конца регистрации (если конечно у вас не супер-мега оригинальный и безальтернативный проект).
Логин может быть любой - никаких фильтров.
Отображаемое имя может быть любым, с условием лимита по длине
Пароль любой.
Ник в ссылках (поддомен например): ограничение по длине, спецсимволам, регистру, уникальность.

Спустя 7 минут, 34 секунды (13.08.2009 - 01:02) twin написал(а):
Цитата
Как бэ речь шла не о логине, а о некоем уникальном идентификаторе, используемом в ссылках.

Ну это мысль. Спасибо за совет. Похоже так и нужно сделать.

Спустя 9 часов, 39 минут, 9 секунд (13.08.2009 - 10:41) zzzv1r написал(а):
Цитата (twin @ 12.08.2009 - 21:33)
Надо правильно хранить и отображать информацию. Научиться это делать раз и на всегда, можно решив задачу, которую ты, как я понял, не удосужился даже прочитать. Вот в этом я готов тебе помочь.

Тогда если я правильно понимаю хранить, это имеется в виду чтобы защитить от SQL-inj когда юзер захочет введи код в поле логин или еще куда при регистрацыи?
То после регистриции скрипт обращается к базе и в том случае и может быть инекция так? то под вашым правильно хранить информацию имеется ввиду

$username = mysql_real_escape_string($username); ?

Спустя 26 минут, 31 секунда (13.08.2009 - 11:08) twin написал(а):
Ну начало хорошее. Именно так. А вот на выводе уже обработать htmlspecialchars(). Это основной принцип. А тонкости и детали у каждого свои.

Спустя 13 минут, 5 секунд (13.08.2009 - 11:21) zzzv1r написал(а):
Цитата (twin @ 13.08.2009 - 08:08)
Ну начало хорошее. Именно так. А вот на выводе уже обработать htmlspecialchars(). Это основной принцип. А тонкости и детали у каждого свои.

только вывод я слышал что еше пару функций юзают что то вроде strip_tags?

Спустя 9 минут, 54 секунды (13.08.2009 - 11:31) twin написал(а):
Ерунда. Эта функция никакого отношения к безопасности не имеет. Эта та же фильтрация. Две только функции, остальное - параноя. На входе экранируем mysql_escape_string() , на выдаче обрабатываем htmlspecialchars()
Всё. Этого вполне достаточно. (Что касаемо строковых констант)

Спустя 3 минуты, 47 секунд (13.08.2009 - 11:34) zzzv1r написал(а):
только вот такой еще нюанс, когда хакер попытается ввести SQL-inj в поле логин, но тут же сработает функция экранирования mysql_real_escape_string и покарявит тот код что он ввел, и он так и зарегистрируется под тем кодом что видала функция, так?

Спустя 3 минуты, 6 секунд (13.08.2009 - 11:38) zzzv1r написал(а):
Цитата (twin @ 13.08.2009 - 08:31)
(Что касаемо строковых констант)

А вот я не понимаю когда будет возможность с цыфрами? потому что любое поле на сайте это строка, разве что когда передают число в строке браузера типа того? www.mysite.php?number=12

Спустя 19 минут, 2 секунды (13.08.2009 - 11:57) twin написал(а):
Цитата
и покарявит тот код что он ввел

Ниего она не корявит. А просто экранирует символы. Вот чем так гадать, лучше посмотреть в мануале, какая функция что делает. А ещё лучше на практике. Я не зря задачку сочинял.
В базу будет занесено то, то он напишет. И никакой инъекции не будет.

Цитата
А вот я не понимаю когда будет возможность с цыфрами? потому что любое поле на сайте это строка, разве что когда передают число в строке браузера типа того? www.mysite.php?number=12

Именно так.

Спустя 18 минут, 22 секунды (13.08.2009 - 12:15) zzzv1r написал(а):
Цитата (twin @ 13.08.2009 - 08:57)
Ниего она не корявит. А просто экранирует символы. Вот чем так гадать, лучше посмотреть в мануале, какая функция что делает. А ещё лучше на практике. Я не зря задачку сочинял.
В базу будет занесено то, то он напишет. И никакой инъекции не будет.

ну я мануал читал по функции, и видел что когда вот такой код
Код

<?php
$item = "Zak's and Derick's Laptop";
$escaped_item = mysql_real_escape_string($item);
printf ("Escaped string: %s\n", $escaped_item);
?>

то результат
Код

Escaped string: Zak\'s and Derick\'s Laptop

вот и подумал что она записывает вместе со слешами, зотя теперь понял что \' будет просто символом ' , это же регулярное выражение. smile.gif

а когда передаю integer значения в строке браузера то чем их принимать? вот тут видел такое
"Если поле в базе числовое, то: (int) (ну или intval()). Можно по модулю взять при использовании в LIMIT, но это не секурити-дырка."
То значить принимать функцыей intval()? или еще по модулю брать тоже?

Спустя 1 час, 25 секунд (13.08.2009 - 13:15) Nikitian написал(а):
Цитата (zzzv1r @ 13.08.2009 - 09:15)
То значить принимать функцыей intval()? или еще по модулю брать тоже?

Принимать функцией интвал и брать по модулю, если используется в лимите. Правда трупрограммеры скажут по-дургому: если получаете неправильное значение, то посылать найух такого посетителя, т.к. это либо ваша система сформировала кривой адрес и пнадо править систему, либо это пользователь развлекается - и нефиг пытаться найти ему хоть что-то. Неправильный запрос=> редирект на заглушку.

Спустя 3 часа, 24 минуты, 10 секунд (13.08.2009 - 16:39) zzzv1r написал(а):
Цитата (Nikitian @ 13.08.2009 - 10:15)
Принимать функцией интвал и брать по модулю, если используется в лимите.

А что это такое использовать в лимите?

Спустя 13 минут, 4 секунды (13.08.2009 - 16:53) Nikitian написал(а):
Если параметр используется в sql-запросе с опертором limit и этот параметр является параметром оператора limit. Там должны быть только положительные числа (иначе получится чепуха на выходе)

Спустя 9 минут, 20 секунд (13.08.2009 - 17:02) twin написал(а):
Цитата
Там должны быть только положительные числа (иначе получится чепуха на выходе)

Не, ничего не получится. Никакого выхода. Просто ошибка. Чепуха получится как раз при модуле.
Вот тут и вопрос. Допустим юзер нагло введет ?page=-5 при постраничке, а система выдаст ему пятую страницу. Не чепуха разве?
Я не знаю что такое трупрограммер, но помоему это очень логично - выдавать только настоящие результаты. Не известно как может повести себя система, если её накормить неверными данными.

Спустя 1 час, 44 минуты, 46 секунд (13.08.2009 - 18:47) zzzv1r написал(а):
тогда я понимаю итог такой чтоб с модулем? если знаешь что туда по логике надо положительные вводить? а если нет то без, хотя хз где вводяса числа -25 например в запросе

Спустя 8 минут, 39 секунд (13.08.2009 - 18:55) twin написал(а):
В лимит вообще нельзя отрицательные числа, в том и спич))) То есть делать из него положительное и показывать не то, что требуют или сразу на ошибку отправить. Лично я за второй... То есть без модуля.
Наверно я трупрограммер smile.gif

Спустя 44 минуты, 1 секунда (13.08.2009 - 19:39) zzzv1r написал(а):
хорошо, спасибо, понял все по этому,
тока вот в чем прикол таки, вернусь все таки к первому посту, когда ввожу в строке логин admin и admin<asdfg#@> меня всеравно пускает на сайт под ником admin, почему на говорит про ошибку логина? я подумал что это возможно как тег <asdfg#@> будет, потому что на валидность проходит уже нормальний ник admin.

Спустя 6 минут, 38 секунд (13.08.2009 - 19:46) zzzv1r написал(а):
не ограничивал я символов в логине при регистрации ввел ник ~#@#%))) а оно в куки записало мне ник %7E%23%40%23%25%29%29%29
это понятно от того что сразу вот так зделал
Код

$username=mysql_real_escape_string($_POST['username']);
$query = mysql_query("SELECT username,password FROM tb_users WHERE username = '$username'") or die(mysql_error());
........
//а потом
setcookie("usNick",$username,time()+7776000);

Првильно ли будет если если я запрос буду делать по екранированому $username а куки записывать прямо из поля логин тоисть вот так
Код

$username=mysql_real_escape_string($_POST['username']);
$query = mysql_query("SELECT username,password FROM tb_users WHERE username = '$username'") or die(mysql_error());
........
а потом
setcookie("usNick",$_POST['username'],time()+7776000);

Спустя 33 минуты, 27 секунд (13.08.2009 - 20:19) twin написал(а):
Правильно. Функция mysql_real_escape_string() используется для обработки данных только для запросов, причем в MySQL. Больше нигде.
А по первому щас гляну, если так интересно.

PS Да, не забудь, что когда из куки вытащишь, надо экранировать перед запросом.

Спустя 2 минуты, 32 секунды (13.08.2009 - 20:22) zzzv1r написал(а):
интересно, потомучто спецыально пробовал так войти на иных сайтах то там такую ошыбку убрано а вот на движке джумла нет sad.gif

Спустя 1 минута, 24 секунды (13.08.2009 - 20:23) zzzv1r написал(а):
Цитата (twin @ 13.08.2009 - 17:19)
PS Да, не забудь, что когда из куки вытащишь, надо экранировать перед запросом.

само собой smile.gif

Спустя 3 минуты, 30 секунд (13.08.2009 - 20:27) twin написал(а):
Привязки к началу нету просто. Эта регулярка вообще не работала у тебя. Вот так наверно надо:
PHP
function check($str)
{
if (!
preg_match("/^[a-zA-Z0-9\-\_\s]{3,15}$/"$str))
echo 
"<br><br>Неверный логин/пароль!!!!!!!!!!!!!!!";
else
return 
$str
}

Спустя 3 минуты, 22 секунды (13.08.2009 - 20:30) zzzv1r написал(а):
я так делал и указывал начало но все не так же smile.gif

ЗЫ вернее на простом примере оно его определят как ошибку когда admin<fefe> а вот на сайте не хочет, шас еще раз проверю

Спустя 5 минут, 30 секунд (13.08.2009 - 20:36) twin написал(а):
Цитата
я так делал

Не так. Найди три отличия))

Спустя 4 минуты, 45 секунд (13.08.2009 - 20:40) zzzv1r написал(а):
ну там у меня не было указателя начала, !preg_match, и

echo "<br><br>Неверный логин/пароль!!!!!!!!!!!!!!!";
else
return $str;

Спустя 6 минут, 24 секунды (13.08.2009 - 20:47) zzzv1r написал(а):
вот что я забадяжыл для проверки
Код

<?

function check($str)
{
if (!preg_match("/^[a-zA-Z0-9\-\_\s]{3,15}$/", $str))
{
$a="<br><br>Неверный логин/пароль  !".$str."!";
return $a;
}
else
$a="<br><br>good    !".$str."!";
return $a;
}
$res=check($_POST['str']);
echo "$res";

?>
<form action="1.php" method="POST">
<input type="text" size="15" maxlength="15" name="str" autocomplete="off">
<input type="submit" value="добавить" class="button"></form>



ввожу zzzv1r<> : выдает "Неверный логин/пароль !zzzv1r<>!"
ввожу zzzv1r<asasas>: выдает "Неверный логин/пароль !zzzv1r!"

Спустя 35 минут, 16 секунд (13.08.2009 - 21:22) twin написал(а):
Ну ты опять за своё? Зачем проверка то? Чего опять ты проверяешь?
Не в коня видно корм...

Спустя 37 минут, 56 секунд (13.08.2009 - 22:00) zzzv1r написал(а):
Цитата (twin @ 13.08.2009 - 18:22)
Ну ты опять за своё? Зачем проверка то? Чего опять ты проверяешь?
Не в коня видно корм...

да не, не проверяю, просто вот возможно это баг что я могу войти под ником admin просто и admin<fefefe> под тот же аккаунт

Спустя 2 минуты, 36 секунд (13.08.2009 - 22:03) twin написал(а):
Цитата
ввожу zzzv1r<> : выдает "Неверный логин/пароль !zzzv1r<>!"
ввожу zzzv1r<asasas>: выдает "Неверный логин/пароль !zzzv1r!"

А ты исходник посмотри. Просто тег не видно. А не пускает оба правильно, потому что работает.

Спустя 10 минут, 56 секунд (13.08.2009 - 22:14) zzzv1r написал(а):
оно то да, тут пишет что неверно, хотя и тег опускает, а на сайте тупо пускает хз ) с тем же кодом, просто пробовал

Спустя 9 минут, 46 секунд (13.08.2009 - 22:23) twin написал(а):
Так а причем тут эта фигня? показывай тогда как вход организован.

Спустя 11 минут, 50 секунд (13.08.2009 - 22:35) zzzv1r написал(а):
страница логина
Код
<form action="login.php" method="post" name="login" >

<table width="100%" border="0" cellspacing="0" cellpadding="0" align="center">
<tr>
 <td>

  <label for="mod_login_username">Логин</label>
  <br />
  <input name="username" type="text" class="inputbox" autocomplete="off" alt="username" size="15" maxlength="15" value="" tabindex="1" />
  <br />
  <label for="mod_login_password">Пароль</label>
  <br />
  <input type="password" name="password" class="inputbox" autocomplete="off" size="15" maxlength="15" alt="password" value="" tabindex="2" />
  <br /><br />
  <input type="submit" name="Submit" class="button" value="Войти" />
 </td>


и скрипт обработки поста
Код

<?
require_once('.zsecurity.php');
session_start();

require('config.php');
$username=mysql_real_escape_string($_POST['username']);
$password=md5($_POST['password']);

$query = mysql_query("SELECT username,password FROM tb_users WHERE username = '$username'") or die(mysql_error());
$data = mysql_fetch_array($query);
if ($data['password'] != $password || $data['username'] != $username) {
include('header.php');
echo "<br><br>Неверный логин/пароль";
include('footer.php');
}else{
$query = mysql_query("SELECT user_status FROM tb_users WHERE username = '$username'") or die(mysql_error());
$row = mysql_fetch_array($query);
$administrator = $row['user_status'];

setcookie("usNick",$username,time()+7776000);
setcookie("usPass",$password,time()+7776000);
if ($administrator=="fishmaster") {setcookie("usStat","main",time()+7776000);}

require('funciones.php');
$lastlogdate=date("Y-m-d h:i:s");
$lastip = getRealIP();
$querybt = "UPDATE tb_users SET lastlogdate='$lastlogdate', lastiplog='$lastip' WHERE username='$username'";
mysql_query($querybt) or die(mysql_error());
mysql_close($con);

?>

<META HTTP-EQUIV="REFRESH" CONTENT="0;URL=work.php">

<?
}
?>

Спустя 6 минут, 9 секунд (13.08.2009 - 22:41) zzzv1r написал(а):
блин даже когда делаю так setcookie("usNick",$_POST['username'],time()+7776000); всеравно браузер ставит себе в куки логин как %7E%23%40%23%25%29%29%29 а должно быть ~#@#%)))
я тут подумал может и логин по МД5 паковать и дело с концами?

Спустя 5 минут, 17 секунд (13.08.2009 - 22:47) twin написал(а):
Цитата
блин даже когда делаю так setcookie("usNick",$_POST['username'],time()+7776000); всеравно браузер ставит себе в куки логин как %7E%23%40%23%25%29%29%29 а должно быть ~#@#%)))

А что ты переживаешь то? Это просто url кодирование. Всегда так бывает, когда символы в куках или адресной строке.
А скрипт у тебя на самом деле очень кривой. Почитай ка лучше это.

Спустя 27 минут, 17 секунд (13.08.2009 - 23:14) zzzv1r написал(а):
Цитата (twin @ 13.08.2009 - 19:47)
А что ты переживаешь то? Это просто url кодирование. Всегда так бывает, когда символы в куках или адресной строке.

угу уже нашол функцию для декодирования urldecode

а по поводу ссилки
в чем суть кода?
Код

$login = isset($_POST['login'])?$_POST['login']:null;
$email = isset($_POST['email'])?$_POST['email']:null;
$password = isset($_POST['password'])?$_POST['password']:null;

что это такое ?$_POST['password']:null;?
и почему там все ошыбки в масив заганяютса?

Спустя 3 минуты, 31 секунда (13.08.2009 - 23:17) twin написал(а):
Дык там же все расписано вроде... Ты не только код читай)))

Спустя 9 минут, 11 секунд (13.08.2009 - 23:27) zzzv1r написал(а):
да я все читаю ))) там про ети строки ничего не сказано просто уже финальний код просто очень много таких нюансов что я бы так и не зделал никогда, в той прикол что я больше програмер Делфи, потому и возможно в коде такой стиль, а в ПХП вовсе не так)

Спустя 8 часов, 44 минуты, 46 секунд (14.08.2009 - 08:11) twin написал(а):
Ну коли тебе не ясны такие вопросы, то начни отсюда. Там точно все есть.

Спустя 1 час, 57 минут, 36 секунд (14.08.2009 - 10:09) zzzv1r написал(а):
очень сложный код, понимаю не все из предидущей ссилки, а новую шас гляну

Спустя 19 минут, 36 секунд (14.08.2009 - 10:29) zzzv1r написал(а):
вот нашол как зделать так чтоб теги не убирало
Код
function check($str)
{
if (!preg_match("/^[a-zA-Z0-9\-\_\s]{3,15}$/", $str))
{
$a="<br><br>Неверный логин/пароль  !".htmlspecialchars($str)."!";
return $a;
}
else
$a="<br><br>good    !".htmlspecialchars($str)."!";
return $a;
}

Спустя 7 часов, 53 минуты, 28 секунд (14.08.2009 - 18:22) zzzv1r написал(а):
спасибо за помощь, у меня много работи после прочтения єтой статьи smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.