Перейти к содержанию
Форум поддержки пользователей VamShop

Не работает проверка даты рождения при регистрации


Рекомендуемые сообщения

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

В файле 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 введен уже зарегистрированный, а остальные ошибки игнорируются.

Ссылка на сообщение
Поделиться на другие сайты

Вот эти проверки что ты привёл будут работать если например javascript отключён в браузере, тогда как нажмёшь на  кнопку submit формы, появится ошибка сверху формы.

Ссылка на сообщение
Поделиться на другие сайты

Понятно... А в каком файле javascript проверки находятся, чтобы их подправить? Вставлю туда функцию проверки введенной даты на существование.

Ссылка на сообщение
Поделиться на другие сайты

Спасибо!

Кстати в 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)}

Ссылка на сообщение
Поделиться на другие сайты

В ту же тему. То есть, проблема с неработающими серверными проверками осталась. Сделал добавление капчи по этой статье

http://vamshop.ru/node/83

Все точно добавил и if ($_POST['captcha'] != $_SESSION['captcha_keystring']) тоже.

Ввожу какую-нибудь фигню вместо капчи или вообще ничего не ввожу, все равно регистрируется юзер. То есть, то что $error = true; вообще ничего походу не значит. Так и не понял, как оно там дальше учитывается. В общем, из всех проверок реально препятствует регистрации только "Юзер с таким мылом уже существует", остальные проверки ни на что не влияют.

Ссылка на сообщение
Поделиться на другие сайты

так а ты найди где сам инсерт нового юзера делается и добав там какуюто свою проверку...)

хотя токо что посмотрел вроде там есть проверка перед вставкой (251 стр)

if ($error == false) {

хз че оно не работает

Ссылка на сообщение
Поделиться на другие сайты

Блин, нашел, в чем косяк, вот в этом:

// 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]

В общем, ошибочка выходит, надо исправлять. =)

Ссылка на сообщение
Поделиться на другие сайты

Так вроде ведь vat поле (это я так понял НДС называется в Европе) выключено и никак не влияет на работу скрипта.

Ссылка на сообщение
Поделиться на другие сайты

Не знаю, я код привел as is, естественно никакого vat у меня нет, но переменная error тем не менее затирается этим кодом.

Ссылка на сообщение
Поделиться на другие сайты
×
×
  • Создать...