PHP.SU

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


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

> Без описания
thesuperhamster
Отправлено: 06 Июня, 2011 - 20:06:02
Post Id


Новичок


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


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




Здравствуйте, я новичёк в мире PHP и мне нужна помощь более опытных, вот кусочек кода:
<?php
if(isset($_SESSION['nickname']) and isset($_SESSION['password'])){
}
else{
if(isset($_POST['registration'])){
if(empty($_POST['nickname']) and empty($_POST['password'])){
echo"";
}
else{
if(empty($_POST['nickname'])){
echo"";
}
elseif(empty($_POST['password'])){
echo"";
}
else{
if(!preg_match("|[0-9A-Za-z]|", $_POST['nickname']) and !preg_match("|[0-9A-Za-z]|", $_POST['password'])){
echo"";
}
else{
if(!preg_match("|[0-9A-Za-z]|", $_POST['nickname'])){
echo"";
}
elseif(!preg_match("|[0-9A-Za-z]|", $_POST['password'])){
echo"";
}
else{
}
}
}
}
}
else{
echo"";
}
}
?>
хотелось бы узнать свои ошибки, если они есть, и какие нибудь советы если можно.
 
 Top
DeepVarvar Супермодератор
Отправлено: 06 Июня, 2011 - 20:25:46
Post Id



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


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


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




Перелопачивать не буду, покажу принцип:
PHP:
скопировать код в буфер обмена
  1. $errors = false;
  2. if (isset($_POST['registration'])) {
  3.   if (!isset($_POST['name']) or trim($_POST['name']) == "")
  4.       $errors[] = "Не ввели имя";
  5.   if (!isset($_POST['pass']) or trim($_POST['pass']) == "")
  6.       $errors[] = "Не ввели пароль";
  7.   // и т.д. собираем со всех полей нужные ошибки проверок
  8.   if (!$errors) {
  9.     // регистрируем
  10.     }
  11.   }
  12. elseif (isset($_POST['logon'])) {
  13.   // та же хрень что и с регистрацией
  14.   }
  15.  
  16. // а тут выводим ошибки
  17. if ($errors and count($errors) > 0)
  18.     foreach ($errors as $error)
  19.       echo "$error<br />";


Длинные строчки слишком (в окно кода не вдезают) - сделал переносы...

(Отредактировано автором: 06 Июня, 2011 - 20:31:46)

 
 Top
thesuperhamster
Отправлено: 06 Июня, 2011 - 20:34:18
Post Id


Новичок


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


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




DeepVarvar ну это же тоже самое что и у меня только в другом виде, нет? извените что предъявляю какие-то претензии, просто привык к лёгкому коду.
 
 Top
DeepVarvar Супермодератор
Отправлено: 06 Июня, 2011 - 20:35:31
Post Id



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


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


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




thesuperhamster у вас куча не нужных веток if--else
(Добавление)
Есть хорошая фраза: "Все гениальное - просто как топор".
Всегда выбирайте самый короткий путь к решению проблемы - это и будет верным.
 
 Top
thesuperhamster
Отправлено: 06 Июня, 2011 - 20:43:34
Post Id


Новичок


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


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




DeepVarvar знаете, просто хочется писать так чтоб и несильно нагружало сервер и чтоб просматривалась фильтрация каждой переменной отдельно.
(Добавление)
DeepVarvarхотя знаете Ваш вариант мне нравиться попробую его использовать, только чуть переделаю.
 
 Top
DeepVarvar Супермодератор
Отправлено: 06 Июня, 2011 - 21:17:05
Post Id



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


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


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




thesuperhamster пишет:
чтоб и несильно нагружало сервер и чтоб просматривалась фильтрация каждой переменной
в примере именно так + сразу сбор ошибок.
Я бы еще чтобы не городить однотипные проверки полей [есть ли?, не пуста ли?] (а если их будет 20?) - написал бы отдельную ф-цию и пробегал бы весь пришедший массив в цикле вызывая эту ф-цию.
 
 Top
thesuperhamster
Отправлено: 06 Июня, 2011 - 21:24:54
Post Id


Новичок


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


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




DeepVarvar а вот в предложенном Вами коде если !isset или empty произайдёт у обойх переменных то ввыдет вначале ошибку первой переменно а потом второй? или всё вместе выведеться?
 
 Top
DeepVarvar Супермодератор
Отправлено: 06 Июня, 2011 - 21:29:00
Post Id



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


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


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




thesuperhamster пишет:
!isset или empty
там нет empty, но можете заменить.
А ошибки только собирает. Выводить их (будет если они есть) можно в любом месте, но все и сразу - в блок ошибок.
 
 Top
thesuperhamster
Отправлено: 06 Июня, 2011 - 21:33:12
Post Id


Новичок


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


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




DeepVarvar но !isset это тоже самое что и empty не так ли, я просто уточнил
 
 Top
DeepVarvar Супермодератор
Отправлено: 06 Июня, 2011 - 21:34:57
Post Id



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


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


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




thesuperhamster Закатив глазки было дело, сам такой был: http://www.php.su/forum/topic.ph...1&topic=2100
 
 Top
Давит
Отправлено: 06 Июня, 2011 - 23:54:16
Post Id



Частый гость


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


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




PHP:
скопировать код в буфер обмена
  1.          if ($login == ""){
  2.                  $contnomer++;
  3.          echo ""._LOGIN_EROR."";
  4.          }     
  5.                
  6.         if (strlen($_POST['password']) < 6){
  7.                 $contnomer++;
  8.                 echo ""._PASS_NUM_6."";
  9.         }
  10.  
  11.                 if ($password == "" || $passwordcop == "" || $password != $passwordcop){
  12.                 $contnomer++;        
  13.                 echo ""._PASS_EROR."";
  14.          }
  15.                         if ($_POST['email'] == ""){  
  16.                         $contnomer++;        
  17.                 echo ""._EMAIL_EROR."";
  18.          }
  19.                                 if ($icq  == ""){    
  20.                                 $contnomer++;      
  21.                 echo ""._ICQ_EROR."";
  22.          }
  23. if($contnomer > 0 ){
  24. html код ...
  25. } esle {
  26. добавляем в базе новие дание..
  27.  }
  28.  

(Отредактировано автором: 06 Июня, 2011 - 23:58:49)

 
 Top
DeepVarvar Супермодератор
Отправлено: 07 Июня, 2011 - 02:30:40
Post Id



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


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


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




Давит где тут MVC???
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB