Dr.Hell 0 Опубликовано 2 мая, 2009 Жалоба Share Опубликовано 2 мая, 2009 Что-то никак не могу понять, как работают проверки при регистрации. Там есть проверки джаваскриптовые, которые просто проверяют заполненность обязательных атрибутов, а есть еще проверки на пхп, но они почему-то игнорируются. В файле create_account.php есть вот такой кусок кода: if (ACCOUNT_DOB == 'true') { if (checkdate((int)substr(vam_date_raw($dob), 4, 2), substr((int)vam_date_raw($dob), 6, 2), substr((int)vam_date_raw($dob), 0, 4)) == false) { $error = true; $messageStack->add('create_account', ENTRY_DATE_OF_BIRTH_ERROR); } }[/code]Он работает, то есть, дата проверяется и $error = true; если такой даты не существует. Но юзер все равно создается просто с пустой датой.Никак не могу понять, где там проверка на отсутствие ошибок перед регистрацией. Фактически пользователь не регистрируется только, если у него email введен уже зарегистрированный, а остальные ошибки игнорируются. Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 2 мая, 2009 Жалоба Share Опубликовано 2 мая, 2009 Вот эти проверки что ты привёл будут работать если например javascript отключён в браузере, тогда как нажмёшь на кнопку submit формы, появится ошибка сверху формы. Ссылка на сообщение Поделиться на другие сайты
Dr.Hell 0 Опубликовано 2 мая, 2009 Автор Жалоба Share Опубликовано 2 мая, 2009 Понятно... А в каком файле javascript проверки находятся, чтобы их подправить? Вставлю туда функцию проверки введенной даты на существование. Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 2 мая, 2009 Жалоба Share Опубликовано 2 мая, 2009 /includes/form_check.js.php Ссылка на сообщение Поделиться на другие сайты
Dr.Hell 0 Опубликовано 2 мая, 2009 Автор Жалоба Share Опубликовано 2 мая, 2009 Спасибо! Кстати в account_edit дата в поле выводится в формате dd.mm.yyyy, а в create_account в dd/mm/yyyy, путаница какая-то, в общем, я у себя везде сделал через точку. А в form_check.js.php добавил вот такую функцию: function isDate(field_value){ if(field_value == "") { return false; } re = new RegExp("^((\\d{2}\.){2})(\\d{4})$", "gi"); if(field_value.search(re) < 0) { return false; } arDate = field_value.split("."); var dd = arDate[0]; var mm = arDate[1]; var yyyy = arDate[2] xDate = new Date(yyyy, mm - 1, dd); if(xDate.getDate() != dd || xDate.getMonth() + 1 != mm || xDate.getFullYear() != yyyy) return false; else return true;}[/code] Передаешь ей дату в формате dd.mm.yyyy, а она ее довольно грамотно проверяет на существования, учитывает количество дней в месяце, високосный год и все такое. Соответственно проверку тоже заменил: [code]if(f.name=='dob' && !isDate(f.value) && f.id!='email'){cf_adderr(f)} Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 2 мая, 2009 Жалоба Share Опубликовано 2 мая, 2009 Хорошо, что разобрался. Ссылка на сообщение Поделиться на другие сайты
Dr.Hell 0 Опубликовано 6 мая, 2009 Автор Жалоба Share Опубликовано 6 мая, 2009 В ту же тему. То есть, проблема с неработающими серверными проверками осталась. Сделал добавление капчи по этой статье http://vamshop.ru/node/83 Все точно добавил и if ($_POST['captcha'] != $_SESSION['captcha_keystring']) тоже. Ввожу какую-нибудь фигню вместо капчи или вообще ничего не ввожу, все равно регистрируется юзер. То есть, то что $error = true; вообще ничего походу не значит. Так и не понял, как оно там дальше учитывается. В общем, из всех проверок реально препятствует регистрации только "Юзер с таким мылом уже существует", остальные проверки ни на что не влияют. Ссылка на сообщение Поделиться на другие сайты
mosquito 0 Опубликовано 6 мая, 2009 Жалоба Share Опубликовано 6 мая, 2009 так а ты найди где сам инсерт нового юзера делается и добав там какуюто свою проверку...) хотя токо что посмотрел вроде там есть проверка перед вставкой (251 стр) if ($error == false) { хз че оно не работает Ссылка на сообщение Поделиться на другие сайты
Dr.Hell 0 Опубликовано 6 мая, 2009 Автор Жалоба Share Опубликовано 6 мая, 2009 Блин, нашел, в чем косяк, вот в этом: // New VAT Check require_once(DIR_WS_CLASSES.'vat_validation.php'); $vatID = new vat_validation($vat, '', '', $country); $customers_status = $vatID->vat_info['status']; $customers_vat_id_status = $vatID->vat_info['vat_id_status']; $error = $vatID->vat_info['error']; if($error==1){ $messageStack->add('create_account', ENTRY_VAT_ERROR); $error = true; }// New VAT CHECK END[/code] Предыдущие значения $error забиваются. Я просто поменял [code] $error = $vatID->vat_info['error']; if($error==1){ на $error2 = $vatID->vat_info['error']; if($error2==1){[/code]В общем, ошибочка выходит, надо исправлять. =) Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 7 мая, 2009 Жалоба Share Опубликовано 7 мая, 2009 Так вроде ведь vat поле (это я так понял НДС называется в Европе) выключено и никак не влияет на работу скрипта. Ссылка на сообщение Поделиться на другие сайты
Dr.Hell 0 Опубликовано 7 мая, 2009 Автор Жалоба Share Опубликовано 7 мая, 2009 Не знаю, я код привел as is, естественно никакого vat у меня нет, но переменная error тем не менее затирается этим кодом. Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 7 мая, 2009 Жалоба Share Опубликовано 7 мая, 2009 Добавь тогда в bug tracker - http://vamshop.ru/bugs Если не сложно, буду смотреть. Ссылка на сообщение Поделиться на другие сайты
Dr.Hell 0 Опубликовано 7 мая, 2009 Автор Жалоба Share Опубликовано 7 мая, 2009 Добавил Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 7 мая, 2009 Жалоба Share Опубликовано 7 мая, 2009 Хорошо. Так сразу не скажу, но к следующей версии попробую разобраться. Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения