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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Проверка полей ввода

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Проверка полей ввода
Scorplion
Отправлено: 26 Марта, 2015 - 13:15:11
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Март 2015  


Помог: 0 раз(а)




Добрый день!
Необходимо перенести самописный движок на новый хостинг. при проверке, функция не видит символы введенные на русском языке (при логине, добавлении, редактировании пользователя)
В данном случае ошибка в отображаемом имени пользователя и логине.

Подскажите куда копать...
Часть кода проверки:
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.  

(Отредактировано автором: 26 Марта, 2015 - 13:17:36)

 
 Top
LIME
Отправлено: 26 Марта, 2015 - 13:25:21
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




скорее всего версия пхп сменилась с 5.3 на более высокую
PHP:
скопировать код в буфер обмена
  1. htmlspecialchars($data['address'], ENT_COMPAT | ENT_HTML401, 'cp1251');

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

(Отредактировано автором: 26 Марта, 2015 - 13:29:52)

 
 Top
GoDr
Отправлено: 26 Марта, 2015 - 13:33:19
Post Id



Посетитель


Покинул форум
Сообщений всего: 446
Дата рег-ции: Янв. 2015  
Откуда: Тамбов


Помог: 17 раз(а)




можно ещё посмотреть в сторону строки 16

name воспринимается как константа, которой нет, т.е. видимо кавычки должны быть


-----
Система управления веб-содержимым Lotos CMS
 
 Top
LIME
Отправлено: 26 Марта, 2015 - 13:35:21
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




GoDr в этом случае будет использоваться как строка
что даже сообщается в нотайсе
гораздо хуже если такая константа появится
ну ...корявый код это сразу видно
как 99% самописов
ну может 95% ))
 
 Top
GoDr
Отправлено: 26 Марта, 2015 - 13:37:19
Post Id



Посетитель


Покинул форум
Сообщений всего: 446
Дата рег-ции: Янв. 2015  
Откуда: Тамбов


Помог: 17 раз(а)




LIME пишет:
GoDr в этом случае будет использоваться как строка
что даже сообщается в нотайсе
ну видимо не сообщается, иначе вопрос был бы: "А почему такая ошибка?" Улыбка


-----
Система управления веб-содержимым Lotos CMS
 
 Top
Scorplion
Отправлено: 26 Марта, 2015 - 13:39:28
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Март 2015  


Помог: 0 раз(а)




LIME пишет:
скорее всего версия пхп сменилась с 5.3 на более высокую
PHP:
скопировать код в буфер обмена
  1. htmlspecialchars($data['address'], ENT_COMPAT | ENT_HTML401, 'cp1251');

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

Все верно!) сейчас версия пхп 5.5
я в пхп не оч силен) Подскажите что и где нужно поменять...
 
 Top
LIME
Отправлено: 26 Марта, 2015 - 13:41:03
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




дык я и показал)
все htmlspecialchars поменять
 
 Top
Scorplion
Отправлено: 26 Марта, 2015 - 13:43:53
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Март 2015  


Помог: 0 раз(а)




LIME пишет:
дык я и показал)
все htmlspecialchars поменять

Огромное человеческое спасибо, разобрался!))
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB