Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Проверка полей ввода
Форумы портала PHP.SU » » Вопросы новичков » Проверка полей ввода

Страниц (1): [1]
 

1. Scorplion - 26 Марта, 2015 - 13:15:11 - перейти к сообщению
Добрый день!
Необходимо перенести самописный движок на новый хостинг. при проверке, функция не видит символы введенные на русском языке (при логине, добавлении, редактировании пользователя)
В данном случае ошибка в отображаемом имени пользователя и логине.

Подскажите куда копать...
Часть кода проверки:
CODE (htmlphp):
скопировать код в буфер обмена
  1. /* Добавление пользователя */
  2.         function Add($data)
  3.         {
  4.                 $data['login'] = addslashes(trim(htmlspecialchars($data['login'])));
  5.                 $data['name'] = addslashes(trim(htmlspecialchars($data['name'])));
  6.                 $data['address'] = addslashes(trim(htmlspecialchars($data['address'])));
  7.                 $data['email'] = addslashes(trim(htmlspecialchars($data['email'])));
  8.                 $data['adm_comment'] = addslashes(trim(htmlspecialchars($data['adm_comment'])));
  9.                 $data['is_active'] = ($data['is_active']) ? '1' : '0';
  10.  
  11.     if($data['group'] == '1') $data['group'] = 'adv_admin';
  12.     elseif($data['group'] == '2') $data['group'] = 'adv_manager';
  13.     elseif($data['group'] == '3') $data['group'] = 'adv_complect';
  14.     else $data['group'] = 'orders';
  15.  
  16.                 if(!$data[name])
  17.                 {
  18.                         AddStatus('error', 'Не удается добавить пользователя. Не заполнено поле "Отображаемое имя".');
  19.                   return FALSE;
  20.     }
  21.  
  22.                 if(!$data['login'])
  23.                 {
  24.                         AddStatus('error', 'Не удается добавить пользователя. Не заполнено поле "Логин".');
  25.                   return FALSE;
  26.     }
  27.  
  28.     if($data['password'])
  29.     {
  30.       if($data['password'] != $data['password2'])
  31.       {
  32.           AddStatus('error', 'Введенные пароли не совпадают.');
  33.                           return FALSE;
  34.       }
  35.       else
  36.       {
  37.         $data['password'] = trim(md5($data['password']));
  38.       }
  39.     }
  40.     else
  41.     {
  42.       AddStatus('error', 'Не указан пароль пользователя');
  43.                         return FALSE;
  44.     }
  45.  
  46.                 $sql = "INSERT INTO `users` (`login`, `name`, `address`, `email`, `password`, `group`, `is_active`, `adm_comment`) VALUES ('{$data['login']}', '{$data['name']}', '{$data['address']}', '{$data['email']}', '{$data['password']}', '{$data['group']}', '{$data['is_active']}','{$data['adm_comment']}');";
  47.  
  48.                 $this->DB->sql_query($sql, __FILE__, __LINE__, 'Создание нового пользователя');
  49.  
  50.                 $item_id = $this->DB->sql_insert_id();
  51.  
  52.                 if($item_id)
  53.                 {
  54.                         AddStatus('note', 'Пользователь добавлен.');
  55.                         return $item_id;
  56.                 }
  57.     else
  58.                 {
  59.                         AddStatus('error', 'Не удается добавить пользователя.');
  60.                         return FALSE;
  61.                 }
  62.         }
  63.  
  64.   /* Редактирование пользователя */
  65.   // $type
  66.   // A - Режим администратора
  67.   // P - Режим "Персональная страница"
  68.   function Update($user_id, $data, $type = 'A')
  69.   {
  70.     $user_id = intval($user_id);
  71.  
  72.     if($type == 'A')
  73.     {
  74.       $data['login'] = addslashes(trim(htmlspecialchars($data['login'])));
  75.       $data['name'] = addslashes(trim(htmlspecialchars($data['name'])));
  76.  
  77.       $data['adm_comment'] = addslashes(trim(htmlspecialchars($data['adm_comment'])));
  78.       $data['is_active'] = ($data['is_active']) ? '1' : '0';
  79.  
  80.       if($data['group'] == '1') $data['group'] = 'adv_admin';
  81.       elseif($data['group'] == '2') $data['group'] = 'adv_manager';
  82.       elseif($data['group'] == '3') $data['group'] = 'adv_complect';
  83.       else $data['group'] = 'orders';    
  84.     }
  85.  
  86.     $data['address'] = addslashes(trim(htmlspecialchars($data['address'])));
  87.     $data['email'] = addslashes(trim(htmlspecialchars($data['email'])));
  88.  
  89.     if(!empty($data['email']) AND !preg_match('/^[a-z0-9&\'\.\-_\+]+@[a-z0-9\-]+\.([a-z0-9\-]+\.)*?[a-z]+$/is', $data['email']))
  90.    {
  91.      AddStatus('error', 'Введенный адрес электронной почты не верен.');
  92.       return FALSE;
  93.     }
  94.  
  95.     if($type == 'A')
  96.     {
  97.                   if(!$data['name'])
  98.                   {
  99.                           AddStatus('error', 'Не удается сохранить пользователя. Не заполнено поле "Отображаемое имя".');
  100.                     return FALSE;
  101.       }
  102.  
  103.                   if(!$data['login'])
  104.                   {
  105.                           AddStatus('error', 'Не удается сохранить пользователя. Не заполнено поле "Логин".');
  106.                     return FALSE;
  107.       }
  108.     }
  109.  
  110.     if($data['password'])
  111.     {
  112.       if(strlen($data['password']) <= 6)
  113.      {
  114.        AddStatus('error', 'Пароль должен состоять из не менее чем 6 символов.');
  115.      }
  116.      elseif($data['password'] != $data['password2'])
  117.      {
  118.           AddStatus('error', 'Введенные пароли не совпадают.');
  119.      }
  120.      else
  121.      {
  122.        $data['password'] = trim(md5($data['password']));
  123.  
  124.        $password = ", `password`='{$data['password']}'";
  125.  
  126.                     AddStatus('note', 'Пароль пользователя обновлен.');
  127.      }
  128.    }
  129.  
2. LIME - 26 Марта, 2015 - 13:25:21 - перейти к сообщению
скорее всего версия пхп сменилась с 5.3 на более высокую
PHP:
скопировать код в буфер обмена
  1. htmlspecialchars($data['address'], ENT_COMPAT | ENT_HTML401, 'cp1251');

сейчас по умолчанию используются кодировка utf-8
до того использовалась однобайтовая
сайт в однобайтовой кодировке ? угадал?
3. GoDr - 26 Марта, 2015 - 13:33:19 - перейти к сообщению
можно ещё посмотреть в сторону строки 16

name воспринимается как константа, которой нет, т.е. видимо кавычки должны быть
4. LIME - 26 Марта, 2015 - 13:35:21 - перейти к сообщению
GoDr в этом случае будет использоваться как строка
что даже сообщается в нотайсе
гораздо хуже если такая константа появится
ну ...корявый код это сразу видно
как 99% самописов
ну может 95% ))
5. GoDr - 26 Марта, 2015 - 13:37:19 - перейти к сообщению
LIME пишет:
GoDr в этом случае будет использоваться как строка
что даже сообщается в нотайсе
ну видимо не сообщается, иначе вопрос был бы: "А почему такая ошибка?" Улыбка
6. Scorplion - 26 Марта, 2015 - 13:39:28 - перейти к сообщению
LIME пишет:
скорее всего версия пхп сменилась с 5.3 на более высокую
PHP:
скопировать код в буфер обмена
  1. htmlspecialchars($data['address'], ENT_COMPAT | ENT_HTML401, 'cp1251');

сейчас по умолчанию используются кодировка utf-8
до того использовалась однобайтовая
сайт в однобайтовой кодировке ? угадал?

Все верно!) сейчас версия пхп 5.5
я в пхп не оч силен) Подскажите что и где нужно поменять...
7. LIME - 26 Марта, 2015 - 13:41:03 - перейти к сообщению
дык я и показал)
все htmlspecialchars поменять
8. Scorplion - 26 Марта, 2015 - 13:43:53 - перейти к сообщению
LIME пишет:
дык я и показал)
все htmlspecialchars поменять

Огромное человеческое спасибо, разобрался!))

 

Powered by ExBB FM 1.0 RC1