1. PHP / Говнокод #17710

    +158

    1. 1
    2. 2
    $arr = mysql_fetch_assoc(mysql_query("select * from customers where Email1='".$_POST['email']."'"));
    if ($arr and count($arr)!=0) {

    Проверка, что массив не пустой

    Запостил: stechkh, 28 Февраля 2015

    Комментарии (22) RSS

    • if($arr) хватило бы, наверн?
      Ответить
    • if ($arr = mysql_fetc...) {
      Еще бы лучше было
      Ответить
      • Вообще присвоение в операторе считается за дурной тон. Но я и сам так делаю.

        То, что человек не наизусть знает type juggling - ну хз, вроде и не обязан, $_POST выглядит куда страшнее. На самом деле то, что пустой массив кастуется в false - это не так очевидно для людей, пришедших из более типизированных языков.
        Ответить
        • А только ли пустой массив?
          Ответить
          • А какой еще массив, приводимый к false, может вернуть select *, если строка найдена?
            Даже array(null) будет true
            Ответить
          • нет, но мы сейчас говорим именно про пустые массивы
            Ответить
            • Стоп. Какой непустой массив приведется к false?
              Ответить
              • Никакой. Но к false приводятся не только пустые массивы, но и всякая другая поебень.
                Ответить
                • Угу, например строка "0".
                  Ответить
                  • блин, да знаю я, зачем вы мне рассказываете?
                    Ответить
                    • mysql_fecth_assoc возвращает строку?
                      Кстати похоже автор говносайта, фрагменты которого я привожу, не знал про функцию empty().
                      Ответить
    • > mysql_query
      > $_POST

      На каком это сайте, говоришь? =D
      Ответить
      • Там все запросы так. POST и GET прямо в запрос. кстати из-за этого не сохранялись новости с символом '
        Если говно, то полностью, начиная от регистра и отсутствия экранирования в запросе.
        А чего стоит это "some text".$_POST['key']."some text" ?
        Ответить
        • То есть в этом коде тебя смущает лишь невозможность сохранить новость с кавычкой?
          Ответить
          • Нет конечно. Но невозможность сохранить с кавычкой очень смущала клиента. А что такое инъекции большинство клиентов не понимают.
            Ответить
            • > инъекции
              Хм, я тут подумал: а ведь биекция - это когда на сайте есть возможность SQL-инъекций (от клиента к серверу) и XSS (от сервера к клиенту).
              Ответить
              • Пришел добрый доктор
                Или это у одного меня sql-inject ассоциируется с уколами??

                1024, я тебе sql-инъекцию сделаю, шприцом Жанэ.
                Ответить
                • >это у одного меня sql-inject ассоциируется с уколами??
                  Да.
                  Ответить
                • Мне с этим повезло. Про шприцы думал пару семинаров на матане, затем меня отпустило. А о SQL-инъекциях я узнал гораздо позже.
                  Ответить

    Добавить комментарий