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]   

> Без описания
SpearMint
Отправлено: 10 Апреля, 2015 - 17:56:06
Post Id


Новичок


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


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




Существует код
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.         if(!empty(one), !empty(two), !empty(tree))
  4.         {
  5.                 echo 'Код';
  6.         }
  7.         else
  8.         {
  9.                 echo 'Ошибка';
  10.         }
  11. ?>
  12.  

Хотелось бы уточнить, как можно определить какая из переменных пуста и вывести строку об ошибке с её именем.
Спасибо.
 
 Top
DeepVarvar Супермодератор
Отправлено: 10 Апреля, 2015 - 18:02:15
Post Id



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


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


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




1) Приведенный код синтаксически не корректен.
2) Какой конкретно смысл вложен в фразу "переменная пуста"?
 
 Top
DelphinPRO
Отправлено: 10 Апреля, 2015 - 19:48:18
Post Id



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


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


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




SpearMint в php нет магии (ну почти нет Улыбка), поэтому все вручную:

PHP:
скопировать код в буфер обмена
  1. if (empty($one)) { echo 'Variable one is empty'}
  2. if (empty($two)) { echo 'Variable two is empty'}
  3. if (empty($three)) { echo 'Variable three is empty'}


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Ts.Saltan
Отправлено: 10 Апреля, 2015 - 20:03:24
Post Id



Посетитель


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


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




с "магией"
PHP:
скопировать код в буфер обмена
  1. <?
  2. $vars = ['vara','varb','varc'];
  3. $varb = true;
  4.  
  5. foreach($vars as $var){
  6.         echo 'Переменная $'.$var.' '.(!isset($$var)?'не ':'').'установлена'.PHP_EOL;
  7. }
  8. /*
  9. Переменная $vara не установлена
  10. Переменная $varb установлена
  11. Переменная $varc не установлена
  12. */
 
 Top
SpearMint
Отправлено: 10 Апреля, 2015 - 20:14:42
Post Id


Новичок


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


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




DeepVarvar, А каким методом из двух выше перечисленных предложили бы сделать вы? Просто в php я новичок и если и делаю, то возможно не правильно.
Вообще этот код предназначен для регистрации, где он проверяет формы на то заполнены ли они, далее проверяет их содержание, ну а в случае чего даёт ошибку.

(Отредактировано автором: 10 Апреля, 2015 - 20:17:12)

 
 Top
file.shreder
Отправлено: 10 Апреля, 2015 - 20:30:37
Post Id


Посетитель


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


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

[+]


var_dump(пременная);
(Добавление)
If(empty($_POST['hgbhgbhgbh'])) {....}
(Добавление)
if(!isset($_GET['dffgbhfd'])) {...}
 
 Top
DeepVarvar Супермодератор
Отправлено: 11 Апреля, 2015 - 07:58:44
Post Id



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


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


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




SpearMint пишет:
А каким методом из двух выше перечисленных предложили бы сделать вы?
А ни один из предложенных методов не отвечает условиям задачи, т.к. и условия были не известны.
SpearMint пишет:
он проверяет формы на то заполнены ли они, далее проверяет их содержание
А разве пустая строка в инпуте не является значением/содержанием?
Ну давай приведи актуальный кусок кода, тогда по полочкам разберем.
 
 Top
SpearMint
Отправлено: 13 Апреля, 2015 - 13:32:52
Post Id


Новичок


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


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




Набросал собственно вчера, не уверен что правильно, но работает корректно.

Пока что с БД не ворочался, что бы потом полностью не делать все снова.
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.         header("Content-Type: text/html; charset=utf-8");//Устанавливаем кодировку
  4.         include('../lib/mysql/connection.php');//Подключение к БД
  5.  
  6.         session_start();//Открываем сессию (для капчи)
  7.  
  8.         $login = $_POST['login'];//Форма логина
  9.         $email = $_POST['email'];//Форма Email адреса
  10.         $password = $_POST['password'];//Форма пароля
  11.         $cpassword = $_POST['cpassword'];//Проверка пароля на совпадение
  12.  
  13.         //Удаляем пробелы
  14.         $login = str_replace(" ", "", $login);
  15.         $email = str_replace(" ", "", $email);
  16.         $password = str_replace(" ", "", $password);
  17.         $cpassword = str_replace(" ", "", $cpassword);
  18.  
  19.         //Проверяем на то, введена ли капча верно
  20.         if($_POST['captcha'] != $_SESSION['captcha']){
  21.                 exit('1 Капча введена не верно!');
  22.         }
  23.         else{
  24.                 //Если да, то продолжаем
  25.                 //Логин меньше 4 или 18 символов?
  26.                 if(strlen($login) < 4 or strlen($login) > 18){
  27.                         exit('2 Логин менее 4 или более 18 символов!');
  28.                 }
  29.                 else{
  30.                         //Нет, идём дальше
  31.                         //Достаём из БД необходимые данные
  32.                         $logresult = mysqli_query($mysqli, "SELECT id FROM users WHERE login='$login'");
  33.                         $logmyrow = mysqli_fetch_array($logresult, MYSQLI_ASSOC);
  34.                         //Пользователь с таким логином существует?
  35.                         if(!empty($myrow['id'])){
  36.                                 exit('3 Данный логин уже существует!');
  37.                         }
  38.                         else{
  39.                                 //Нет, идём дальше
  40.                                 //Email имеет необходимые символы?
  41.                                 if (!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $email)){
  42.                                         exit('4 Email был введён не верно!');
  43.                                 }
  44.                                 else{
  45.                                         //Да, имеет
  46.                                         //Пароль менее 4 символов?
  47.                                         if(strlen($password) < 4){
  48.                                                 exit('5 Пароль менее 4 символов!');
  49.                                         }
  50.                                         else{
  51.                                                 //Нет, более
  52.                                                 //Пользователь его верно ввёл повторно?
  53.                                                 if($password != $cpassword){
  54.                                                         exit('6 Проверка пароля не совпадает!');
  55.                                                 }
  56.                                                 else{
  57.                                                         //Да
  58.                                                         //Шифруем пароль
  59.                                                         $password = md5($password);
  60.                                                         echo 'Yup!!';
  61.                                                         //ЗАПИСЫВАЕМ В БД
  62.                                                 }//6
  63.                                         }//5
  64.                                 }//4
  65.                         }//3
  66.                 }//2
  67.         }//1
  68. ?>
  69.  
  70.  
 
 Top
exlant
Отправлено: 13 Апреля, 2015 - 18:21:08
Post Id



Посетитель


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


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




такая вложенность if-ов, во первых не нужна, а во вторых делает код менее читабельным, если код особо не менять, то можно вот так:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.         header("Content-Type: text/html; charset=utf-8");//Устанавливаем кодировку
  4.         include('../lib/mysql/connection.php');//Подключение к БД
  5.  
  6.         session_start();//Открываем сессию (для капчи)
  7.  
  8.         $login = $_POST['login'];//Форма логина
  9.         $email = $_POST['email'];//Форма Email адреса
  10.         $password = $_POST['password'];//Форма пароля
  11.         $cpassword = $_POST['cpassword'];//Проверка пароля на совпадение
  12.  
  13.         //Удаляем пробелы
  14.         $login = str_replace(" ", "", $login);
  15.         $email = str_replace(" ", "", $email);
  16.         $password = str_replace(" ", "", $password);
  17.         $cpassword = str_replace(" ", "", $cpassword);
  18.  
  19.         //Проверяем на то, введена ли капча верно
  20.         if($_POST['captcha'] != $_SESSION['captcha']){
  21.                 exit('1 Капча введена не верно!');
  22.         }
  23.        
  24.                 //Если да, то продолжаем
  25.                 //Логин меньше 4 или 18 символов?
  26.        if(strlen($login) < 4 or strlen($login) > 18){
  27.                         exit('2 Логин менее 4 или более 18 символов!');
  28.       }
  29.              //Нет, идём дальше
  30.              //Достаём из БД необходимые данные
  31.              $logresult = mysqli_query($mysqli, "SELECT id FROM users WHERE login='$login'");
  32.              $logmyrow = mysqli_fetch_array($logresult, MYSQLI_ASSOC);
  33.              //Пользователь с таким логином существует?
  34.        if(!empty($myrow['id'])){
  35.                exit('3 Данный логин уже существует!');
  36.        }
  37.        
  38.                //Нет, идём дальше
  39.                //Email имеет необходимые символы?
  40.        if (!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $email)){
  41.                 exit('4 Email был введён не верно!');
  42.        }
  43.               //Да, имеет
  44.               //Пароль менее 4 символов?
  45.        if(strlen($password) < 4){
  46.              exit('5 Пароль менее 4 символов!');
  47.        }
  48.               //Нет, более
  49.              //Пользователь его верно ввёл повторно?
  50.        if($password != $cpassword){
  51.               exit('6 Проверка пароля не совпадает!');
  52.       }
  53.               //Да
  54.               //Шифруем пароль
  55.               $password = md5($password);
  56.               echo 'Yup!!';
  57.               //ЗАПИСЫВАЕМ В БД
  58.        
  59. ?>
  60.  

код не проверял, может, где то и потерял какую то скобку!

если попадаем в if-блок, то нас все-равно выкинет из кода функция exit()!

а вообще это все лучше обернуть или функциями, или методами! и вместо exit(), использовать return
 
 Top
SpearMint
Отправлено: 13 Апреля, 2015 - 18:27:45
Post Id


Новичок


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


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




exit() я использовать вряд ли буду, это было сделано для наглядности.
 
 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