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]   

> Описание: Подскажите, пожалуйста, как сделать...
Klinch
Отправлено: 30 Июля, 2012 - 14:13:43
Post Id


Частый гость


Покинул форум
Сообщений всего: 214
Дата рег-ции: Июль 2012  


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




Здравствуйте, все!

У меня появилась проблема. Я разрабатываю User Control Panel (UCP) для сайта игры SA:MP.
Так вот, дело дошло до смены пароля от аккаунта на нашем сервере SA:MP.
Основное то я сделал. Смена пароля работает, но мне нужно поставить ограничения, на вводимые символы и на длину. Вот код:

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3.  
  4.         if($_SESSION['Name'])
  5.         {  
  6.                 if(!isset($_POST['submit']))
  7.                 {
  8.                                 echo "<form method = 'post'>
  9.                                 <center>Укажите новый пароль: <input name = 'newkey' type = 'password' size = '18' maxlength = '32'>                            <input name = 'submit' type = 'hidden'>
  10.                                 <input type = 'submit' class='button' value = 'Сменить пароль'></center></form>";
  11.                 }
  12.                 else
  13.                 {
  14.                         mysql_query("UPDATE $mysql_table SET Password='".$_POST['newkey']."' WHERE Nickname='".mysql_real_escape_string($_SESSION['Name'])."'") or exit('mysql_error');
  15.                         if(mysql_affected_rows() ==0)
  16.                         {
  17.                                 echo" Ошибка при смене пароля ";
  18.                         }
  19.                 else
  20.                 {
  21.                                         echo "<font color= #00BFFF>Пароль успешно изменён!</font>";
  22.                 }
  23.                 }
  24.         }      
  25.         ?>


Итак, что мне нужно?
1. Как вы видете, я уже поставил ограничение на максимальное число символов, вводимых в окне смены пароля ( maxlength = '32' ). Теперь мне нужно, чтобы если пользователь, желающий сменить пароль, вводит в окошко меньше, чем 6 символов, то пароль не менялся, а пользователю выходило сообщения, что пароль должен быть длиной не менее 6 символов.

2. На сервере SA:MP воспринимаются пароли, состоязие из букв английского алфовита (Aa-Zz), цифры (0-9) и пробелы. Остальные символы - мне нужно исключить. Т.е., если пользователь, желающий сменить пароль введет в окшко пароль, в котором содержатся запрещенные символы, то пароль не изменится, а пользователю выйдет нужное сообщение.


Заранее благодарю всех за помощь! Жду ответа! Пожалуйста, помогите!
 
 Top
vlom
Отправлено: 30 Июля, 2012 - 15:06:01
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 681
Дата рег-ции: Окт. 2010  
Откуда: Екатеринбург


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




после того как тебе пришли данные из формы ты не сразу выполняешь запрос, а сначала проверяешь на длинну пароля и регулярку на проверку пароля
PHP:
скопировать код в буфер обмена
  1. if(strlen($_POST['newkey']) > 5 && preg_match('|^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?!.*\s).*$|', $_POST['newkey'])){
  2.     //тут уже выполняешь все что угодно если пароль удовлетваряет требования
  3.     //запросы к базе и тп
  4. }

регулярка только вот вроде немного не та,
 
 Top
Klinch
Отправлено: 30 Июля, 2012 - 16:22:30
Post Id


Частый гость


Покинул форум
Сообщений всего: 214
Дата рег-ции: Июль 2012  


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




А можете ли сделать код с этой вставкой? Тоесть вставить в мой код вставку ограничения так, чтобы она работала. Пожалуйста!
 
 Top
McLuhan
Отправлено: 30 Июля, 2012 - 16:35:57
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Июль 2012  


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




Klinch пишет:
А можете ли сделать код с этой вставкой? Тоесть вставить в мой код вставку ограничения так, чтобы она работала. Пожалуйста!


Попробуй-те так:

PHP:
скопировать код в буфер обмена
  1.  
  2. if($_SESSION['Name'])
  3. {  
  4.         if(!isset($_POST['submit']))
  5.         {
  6.                 echo "<form method = 'post'>
  7.                 <center>Укажите новый пароль: <input name = 'newkey' type = 'password' size = '18' maxlength = '32'>                            <input name = 'submit' type = 'hidden'>
  8.                 <input type = 'submit' class='button' value = 'Сменить пароль'></center></form>";
  9.         }
  10.         else
  11.         {
  12.                 if((strlen($_POST['newkey']) < 6 || strlen($_POST['newkey']) > 35) && preg_match('|^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?!.*\s).*$|', $_POST['newkey']))
  13.                 {
  14.                         echo "Неверная длина пароля или неверные символы.";
  15.                 }
  16.                 else
  17.                 {
  18.                         mysql_query("UPDATE $mysql_table SET Password='".$_POST['newkey']."' WHERE Nickname='".mysql_real_escape_string($_SESSION['Name'])."'") or exit('mysql_error');
  19.                         if(mysql_affected_rows() ==0) echo" Ошибка при смене пароля ";
  20.                         else echo "<font color= #00BFFF>Пароль успешно изменён!</font>";
  21.                 }
  22.         }
  23. }
  24.  


P.S. Я тоже в SA:MP играю уже около 5-6 лет, скриптер в том числе)

(Отредактировано автором: 30 Июля, 2012 - 16:36:47)

 
 Top
Klinch
Отправлено: 30 Июля, 2012 - 16:40:15
Post Id


Частый гость


Покинул форум
Сообщений всего: 214
Дата рег-ции: Июль 2012  


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




Пароль меняется всё равно. Даже если ввожу русские буквы, либо еще что-то.
 
 Top
McLuhan
Отправлено: 30 Июля, 2012 - 16:45:59
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Июль 2012  


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




Так попробуй.

PHP:
скопировать код в буфер обмена
  1. if($_SESSION['Name'])
  2. {  
  3.         if(!isset($_POST['submit']))
  4.         {
  5.                 echo "<form method = 'post'>
  6.                 <center>Укажите новый пароль: <input name = 'newkey' type = 'password' size = '18' maxlength = '32'>                            <input name = 'submit' type = 'hidden'>
  7.                 <input type = 'submit' class='button' value = 'Сменить пароль'></center></form>";
  8.         }
  9.         else
  10.         {
  11.                 if(strlen($_POST['newkey']) < 6 && preg_match('|^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?!.*\s).*$|', $_POST['newkey']) || strlen($_POST['newkey']) > 35 && preg_match('|^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?!.*\s).*$|', $_POST['newkey']))
  12.                 {
  13.                         echo "Неверная длина пароля или неверные символы.";
  14.                 }
  15.                 else
  16.                 {
  17.                         mysql_query("UPDATE $mysql_table SET Password='".$_POST['newkey']."' WHERE Nickname='".mysql_real_escape_string($_SESSION['Name'])."'") or exit('mysql_error');
  18.                         if(mysql_affected_rows() ==0) echo" Ошибка при смене пароля ";
  19.                         else echo "<font color= #00BFFF>Пароль успешно изменён!</font>";
  20.                 }
  21.         }
  22. }

(Отредактировано автором: 30 Июля, 2012 - 16:46:19)

 
 Top
Klinch
Отправлено: 30 Июля, 2012 - 16:49:18
Post Id


Частый гость


Покинул форум
Сообщений всего: 214
Дата рег-ции: Июль 2012  


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




нет, всёравно меняется Огорчение
 
 Top
NoPaper
Отправлено: 30 Июля, 2012 - 17:20:11
Post Id



Посетитель


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


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




Klinch пробуй
PHP:
скопировать код в буфер обмена
  1. if($_SESSION['Name'])
  2. {  
  3.         if(!isset($_POST['submit']))
  4.         {
  5.                 echo "<form method = 'post'>
  6.                 <center>Укажите новый пароль: <input name = 'newkey' type = 'password' size = '18' maxlength = '32'><input name = 'submit' type = 'hidden'>
  7.                 <input type = 'submit' class='button' value = 'Сменить пароль'></center></form>";
  8.         }
  9.         else
  10.         {
  11.                 if(
  12.                         !preg_match('|^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?!.*\s).*$|', $_POST['newkey']) ||       
  13.                         strlen($_POST['newkey']) < 6 ||
  14.                         strlen($_POST['newkey']) > 35
  15.                 )
  16.                 {
  17.                         echo "Неверная длина пароля или неверные символы.";
  18.                 }
  19.                 else
  20.                 {
  21.                         mysql_query("UPDATE $mysql_table SET Password='".$_POST['newkey']."' WHERE Nickname='".mysql_real_escape_string($_SESSION['Name'])."'") or exit('mysql_error');
  22.                         if(mysql_affected_rows() ==0) echo" Ошибка при смене пароля ";
  23.                         else echo "<font color= #00BFFF>Пароль успешно изменён!</font>";
  24.                 }
  25.         }
  26. }
  27.  

(Отредактировано автором: 30 Июля, 2012 - 17:24:37)

 
 Top
Klinch
Отправлено: 30 Июля, 2012 - 17:36:19
Post Id


Частый гость


Покинул форум
Сообщений всего: 214
Дата рег-ции: Июль 2012  


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




Теперь всё время пишет "Неверная длина пароля или неверные символы."

Подскажите еще варианты? Пожалуйста!
 
 Top
NoPaper
Отправлено: 30 Июля, 2012 - 17:50:24
Post Id



Посетитель


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


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




Klinch пишет:
Теперь всё время пишет "Неверная длина пароля или неверные символы."

Подскажите еще варианты? Пожалуйста!

если перед preg_match убрать '!' ?
 
 Top
Toxa
Отправлено: 30 Июля, 2012 - 18:01:58
Post Id



Посетитель


Покинул форум
Сообщений всего: 352
Дата рег-ции: Окт. 2008  


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

[+]



совпадает с любым символом, кроме букв, цифр и пробела


-----
Удобный сервис для хранения файлов
 
 Top
Klinch
Отправлено: 30 Июля, 2012 - 18:23:56
Post Id


Частый гость


Покинул форум
Сообщений всего: 214
Дата рег-ции: Июль 2012  


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




Всё. С помощью всех, кто здесь отписался создал это:

PHP:
скопировать код в буфер обмена
  1. <?
  2. include("config.php");
  3. ?>
  4.  
  5. <?PHP
  6.  
  7.  
  8.         if($_SESSION['Name'])
  9. {  
  10.         if(!isset($_POST['submit']))
  11.         {
  12.                 echo "<form method = 'post'>
  13.                <center>Укажите новый пароль: <input name = 'newkey' type = 'password' size = '18' maxlength = '10'><input name = 'submit' type = 'hidden'>
  14.                <input type = 'submit' class='button' value = 'Сменить пароль'></center></form>";
  15.         }
  16.         else
  17.         {
  18.                 if(preg_match("#[^\w\s]#i", $_POST['newkey']) || strlen($_POST['newkey']) < 6)
  19.                 {
  20.                         echo "Неверная длина пароля или неверные символы.";
  21.                 }
  22.                 else
  23.                 {
  24.                         mysql_query("UPDATE $mysql_table SET Password='".$_POST['newkey']."' WHERE Nickname='".mysql_real_escape_string($_SESSION['Name'])."'") or exit('mysql_error');
  25.                         if(mysql_affected_rows() ==0) echo" Ошибка при смене пароля ";
  26.                         else echo "<font color= #00BFFF>Пароль успешно изменён!</font>";
  27.                 }
  28.         }
  29. }
  30.  
  31.         ?>
  32.  
  33. <? mysql_close(); ?>


Cпасибо всем за помощь!

(Отредактировано автором: 30 Июля, 2012 - 18:41:03)

 
 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