За последние 24 часа нас посетили 22453 программиста и 1152 робота. Сейчас ищут 626 программистов ...

Можно ли заменить isset на empty

Тема в разделе "Прочие вопросы по PHP", создана пользователем ruRikki, 28 июн 2015.

  1. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.237
    Адрес:
    там-сям
    я не смогу ответить лучше, чем описано в документации, сорри! вам уже со всех сторон рассказали, но похоже этого недостаточно. пора почитать первоисточник.
     
  2. ruRikki

    ruRikki Новичок

    С нами с:
    17 май 2015
    Сообщения:
    38
    Симпатии:
    0
    короче я удаляю isset, просто на другом форуме мне объяснили так
    Добавлено спустя 17 минут 1 секунду:
    исправила
    Код (PHP):
    1. public function RikkiTxt($RIA) {
    2.     $RikkiTxt = "";
    3.     if ($RIA['inputClass'] != 'hide') $RikkiTxt .= "<p".(!empty($RIA['pClass']) ? " class='".$RIA['pClass']."'" : "").">".(!empty($RIA['pTxt']) ? $RIA['pTxt'] : "")."</p>".PHP_EOL;
    4.     if (isset($RIA['simpleInGr'])) {
    5.         $RikkiTxt .= "<div id='idDi".$RIA['inputName']."' class='input-group'>".PHP_EOL;
    6.         $RikkiTxt .= "<span class='input-group-addon'>".(!empty($RIA['spanTitle']) ? $RIA['spanTitle'] : "")."</span>".PHP_EOL;
    7.       } elseif (isset($RIA['countInGr'])) {
    8.         $RikkiTxt .= "<div id='idDi".$RIA['inputName']."' class='input-group'>".PHP_EOL;
    9.         $RikkiTxt .= "<span class='input-group-addon'>".(!empty($RIA['spanTitle']) ? $RIA['spanTitle'] : "")."<span id='idSp".$RIA['inputName']."' class='".$RIA['countSpanClass']."'>".($RIA['maxlength']-2)."</span></span>".PHP_EOL;
    10.       }
    11.       $RikkiTxt .= "<input type='text' id='id".$RIA['inputName']."' name='".$RIA['inputName']."' class='".$RIA['inputClass']."' value='".$RIA['value']."'".(!empty($RIA['maxlength']) ? " maxlength='".$RIA['maxlength']."'" : "").(!empty($RIA['placeholder']) ? " placeholder='".$RIA['placeholder']."'" : "").(!empty($RIA['js']) ? " ".$RIA['js'] : "").(!empty($RIA['readonly']) ? " readonly" : "").">".PHP_EOL;
    12.       if (isset($RIA['simpleInGr']) || isset($RIA['countInGr'])) $RikkiTxt .= "</div>".PHP_EOL; 
    13.       return $RikkiTxt;
    14.   } 
    PHP, JavaScript, SQL и другой код пишите внутри тегов
    Код ( (Unknown Language)):
    1. [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
     
  3. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    Правильно объяснили. И выше я Вам то же написал. И artoodetoo прав - изучайте матчасть. В доке терпимо описано.
    Что Вам стоит понимать, для начала:
    1. В $_POST все значения строки. (подумайте, что выдаст isset() и что emty())
    2. Посмотрите, что выше написано про аналог empty().
    Затем замените в вашем "isset($RIA['pTxt']) && !empty($RIA['pTxt'])" empty() на аналог, изучите полученное и решите, хотите вы писать "индуский" код или нормальный.
    В общем, напрягите хотя бы пару извилин. Иногда помогает. ;)
     
  4. ruRikki

    ruRikki Новичок

    С нами с:
    17 май 2015
    Сообщения:
    38
    Симпатии:
    0
    $_POST здесь никаким боком не участвует, вы хоть код смотрели?. Все замечательно бегает на одном empty, я не знаю может это сервер такой, вообще этот сервер я выбрала из целого ряда как наиболее заточенный.
    Вот совет по делу без воды про индусский код и посылы на мануалы:
    если честно, на скорость загрузки больше повлияла заглушка в виде return, чем использование только empty
     
  5. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    Согласен, $_POST лишнее - это отголосок с другими ответами.
     
  6. ruRikki

    ruRikki Новичок

    С нами с:
    17 май 2015
    Сообщения:
    38
    Симпатии:
    0
    Chushkin, да даже если про $_POST рассмотрим достаточно известный случай из забугорья, который без изменений продублировал и перевел ruseller
    Код (PHP):
    1. <?php
    2. include("db.php");
    3.  
    4. $msg='';
    5. if($_SERVER["REQUEST_METHOD"] == "POST")
    6. {
    7. $recaptcha=$_POST['g-recaptcha-response'];
    8. if(!empty($recaptcha))
    9. {
    10. include("getCurlData.php");...
    11. ?>
    http://www.9lessons.info/2014/12/google-new-recaptcha-using-php-are-you.html
    http://popovashlemnahuj.com/lessons.php?rub=37&id=2178
    с этого все и началось
    я понимаю вы блестящие знаете теорию, а я всего лишь практик, получаю все эмпирическим путем
    я хотела задать вопрос про empty на форуме zend, но там такая мутная регистрация - половину своих ПД надо выложить, что так и не сложилось

    Щааааз начнется старый добрый срач! Признаки налицо: толстый сарказм по поводу компетенции собеседника + авторитетное мнение г-на Попова. Про важность оптимизации по скорости isset()/empty() уже было.

    Буря! Скоро грянет буря!
         — модераторЪ


    PHP, JavaScript, SQL и другой код пишите внутри тегов
    Код ( (Unknown Language)):
    1. [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
     
  7. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.237
    Адрес:
    там-сям
    А что вы хотели показать этим фрагментом? Что empty() применяют именно так? … ну и как? Хорошо это или плохо — ваше мнение как-то неочевидно из сообщения.

    Я бы сказал, это пример так себе кода ))) А вы еще и отступы продевали, теперь он вообще говна кусок.
     
  8. ruRikki

    ruRikki Новичок

    С нами с:
    17 май 2015
    Сообщения:
    38
    Симпатии:
    0
    ничего не делала, просто скопировала и вставила в
    Код (Text):
    1.  
    2. Да ничего я не утверждаю, я ищу человека который длительное время уже практиковал замену иссета, в гулгле уже все форумы перечитала, у вас тут даже тема была [url]http://php.ru/forum/viewtopic.php?t=34304[/url] [color=#FFFFFF]Не поверите, но стараюсь успевать за временем)) никакой обиды нет не переживайте, на то что я женского рода тоже внимания не обращайте, смело высказывайте свое мнение, но только и на меня не обижайтесь если я отвечу в том же ключе[/color]
     
  9. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.237
    Адрес:
    там-сям
    вы не ответили по сути: что вы хотели показать этим фрагментом?
     
  10. ruRikki

    ruRikki Новичок

    С нами с:
    17 май 2015
    Сообщения:
    38
    Симпатии:
    0
    Откуда у меня появилась мысль в некоторых случаях заменять иссет и + "!isset($var) or $var == false"
    возможно гдето на забугорных форумах человек нашел подтверждающую информацию.
    Чисто психологически, человек осознанно ведет публичный блог и делится там информацией, значит информация более менее проверенная?
    Но я все равно в этот код добавила isset)
     
  11. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.237
    Адрес:
    там-сям
    А почему?
    У любого действия есть причина. Нормальная причина — это основываясь на задокументированном поведении функций выбрать то или другое. А делать что-то потому, что Женя Попов так процитировал или потому что artoodetoo так хочет, это, извините, слабая причина. Надо принимать осознанное решение!

    Я обычно пишу так (я не навязываюсь, далее объясню свой стиль):
    Код (PHP):
    1. $id = isset($_GET['id']) ? $_GET['id'] : 0;
    Потому, что на девелоперском сайте у меня всегда включен полный вывод ошибок как error_reporting(-1) и если внезапно параметр не будет указан, то здесь всё равно не возникнет предупреждения, а вот так возникло бы (как и у Попова):
    Код (PHP):
    1. $id = $_GET['id']; // ахтунг! возможна выдача "Notice: Undefined offset"!
    2. if (!isset($id)) …
    Также я не пытаюсь сразу привести тип к целому, как некоторые делают. Потому что я всегда использую плейсхолдеры и не боюсь инъекции.

    Почему isset() а не !empty() — да просто так ))) В данном контексте это взаимозаменяемые вещи. Просто по смыслу я проверяю именно факт "параметр указан", а не "параметр пустой". Отсутствие параметра как и ?id=0 приведет к одинаковому результату — данные не будут найдены. Обработка таких ситуаций за рамками данной темы.

    Когда не всё равно что использовать: isset() или !empty() ? Тогда, когда параметр равный 0 реально имеет смысл!
    Здесь есть логика, правда? А в вашем "ну ладно, я всё равно добавила isset" и еще пол-смайлика, логики нет.

    Удачи!
     
  12. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Про empty нужно помнить одну вещь: empty('') или empty('0') вернут true, т.ч. если для вас пустая строка или 0 тоже результат, то лучше в данном случае воспользоваться другим способом. И да, для empty() отсутствие переменной тоже является пустотой, а значит делать доп. проверки isset`ом нет необходимости. Короче, все зависит от ситуации, однозначных решений не бывает )

    p.s. попов - зло.
     
  13. ruRikki

    ruRikki Новичок

    С нами с:
    17 май 2015
    Сообщения:
    38
    Симпатии:
    0
    моя логика основана на принципе выиграть по скорости всегда и во всем (поэтому и делаю себе базу) вот как выглядит код на самом деле у меня:
    Код (PHP):
    1. if (!isset($_POST['g-recaptcha-response']) || empty($_POST['g-recaptcha-response'])) {
    2.         redirect(FUSION_SELF."?results=".$get_results."&id1=".$get_id1."&id2=".$get_id2."&id3=".$get_id3."&order=2");
    3.     } else {
    4.         $google_url="https://www.google.com/recaptcha/api/siteverify";
    5.         $secret='6...
    вот капча http://rikki.xp3.biz/estate.php?results=1&id1=8&id2=0&id3=0
    romach, спасибо, вот эти слова я искала
     
  14. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.237
    Адрес:
    там-сям
    безнадежна.
     
  15. ruRikki

    ruRikki Новичок

    С нами с:
    17 май 2015
    Сообщения:
    38
    Симпатии:
    0
    оставить только empty? на вашем форуме было про скорость обработки, как записать лучше?
    или скачивать https://github.com/google/recaptcha и устанавливать, можно обойтись передачей данных по url?
    не боитесь инъекций это классно я вот для чистки get использую тот самый индусский говнокод правда сразу по всем get один общий include-файл и привожу в нем к переменной вида $get_var, не знаю как по другому, в бесплатных cms только такой способ был обнаружен:
    Код (PHP):
    1. $get_type = '';
    2. if (isset($_GET['type']) && !is_array($_GET['type']) && !empty($_GET['type'])) {
    3.     $get_type = stripslash(trim($_GET['type']));
    4.     if (!isnum($get_type)) $get_type = '';
    5.     if (!array_key_exists($get_type, $arr_objectType)) $get_type = '';
    6. }
     
  16. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    Поддерживаю.
    п.с.
    ruRikki, подумайте хорошенько над Вашем будущем, - может сменить профессию, пока не поздно?
    Вполне возможно, что программирование это не Ваше. Тут требуется хорошее логическое мышление, а у Вас оно, эээ, пониженное, судя по этому топику. И в этом ничего страшного, просто Природа так распорядилась - кто-то не может быть художником, а кто-то программистом...
     
  17. ruRikki

    ruRikki Новичок

    С нами с:
    17 май 2015
    Сообщения:
    38
    Симпатии:
    0
    Chushkin, а я и не программист, делаю себе базу для внутреннего пользования, меньше всего боюсь чьего-то особенного мнения, может быть я не сумею доступно описать словами что делаю и для чего из за нехватки словарного запаса программистов, но на практике выведу как надо и даже лучше, да и не стесняюсь показать что чего то не знаю и спросить у другого, самое лучшее обучение это коммуникация а не зазубривание учебников, попробуйте выучить английский язык по одному учебнику? сколько вам как вы себя позиционируете супервундеркинду понадобится времени? год? а если общаться: 1 месяц, максимум 2
     
  18. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.632
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    Да, я заметил что вы не стесняетесь спрашивать. Но вы не умеете случать что вам говорят...

    Добавлено спустя 1 минуту 20 секунд:
    Чем то напомнили эту притчу.
     
  19. ruRikki

    ruRikki Новичок

    С нами с:
    17 май 2015
    Сообщения:
    38
    Симпатии:
    0
    что по вашему не было услышано?
    про осла это вы про себя? начали про одно в итоге пришли к другому, или вы по прежнему будете настаивать на том что
    учитесь на чужих ошибках, а потом автора вместо благодарности еще и оговариваете или вы здесь кому то подлизнуть хотели?
     
  20. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.632
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    вы про что. )) код приводился выше, а потом писалось что нельзя проверять не объявленную переменную)).
    И еще, этот кусок кода иллюстрация как возможно использовать isset() and empty()
    И еще, нельзя проверять не объявленную переменную методом empty() ведь речь была о empty().
    Заметьте, никто вас с ослом не сравнивал.

    Добавлено спустя 3 минуты 5 секунд:
    Читать документацию это не книжки читать. Идите потратьте на это время. А то глупые вопросы даже после того как вам конкретные ответы дали.(про свои ответы я молчу)
     
  21. ruRikki

    ruRikki Новичок

    С нами с:
    17 май 2015
    Сообщения:
    38
    Симпатии:
    0
    вах вах вах mahmuzar, тут столько всего было написано за время вашего отсутствия...
    вот правильный ответ
    да возможно я не все поняла, потому что в том что написал artoodetoo целый учебник впихнут, я попыталась его поподробней расспросить, но он исчез, оно и понятно кто захочет крутые хакерские фишки в прямом эфире выкладывать, вы с вашим Чушкиным мне крупную дичь спугнули, теперь буду дальше индусский код шлепать по вашей вине, блин нет бы затихнуть и молча подглядывать, нет разбухтелись тут((((
    капец вообще(((
     
  22. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.632
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    правильный ответ вам давно дали. Вы просто не видите очевидное и не знаете что вам нужно.

    Добавлено спустя 1 минуту 12 секунд:
    что возвращает empty в тех или иных случаях тоже написано в доках. Вам оказывается надо было скзаать "эй, детка, слюшай миня, испoлзуй empty и все дела". :-D
     
  23. ruRikki

    ruRikki Новичок

    С нами с:
    17 май 2015
    Сообщения:
    38
    Симпатии:
    0
    про необъявленную переменную не написано
     
  24. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.632
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    вы издеваетесь:*?
     
  25. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    Это капец. :( А я то надеялся, что не всё потеряно.
    Хотя ... может я зря так, может это просто троль. Если да, то он достиг своего, - молодец, хвалю.