Php if isset

Я имею простую форму, как показано ниже:

<form action="" method="post"> <input type="text" /> <input type="submit" value="SEND" /> </form> 

Когда я пытаюсь получить данные, отправленные из этой формы, через if($_POST) , я терпит неудачу, но когда вы пытаетесь использовать isset
, я получаю успех.

  • POST с использованием CURL в PHP дает неверный запрос Ошибка
  • предотвращать получение двойной формы при обновлении
  • PHP: получение значения флажков, когда имя не имеет массива
  • Несколько текстовых входов с одинаковым именем — добавить в базу данных

  • Кодировать строку для соответствия имени поля кодированной формы в массиве PHP POST
 if($_POST){ echo 'a'; //Doesn't print anything. } if(isset($_POST)){ echo 'b'; //Prints 'b' } 

Я предполагаю, что причиной этого является отсутствие атрибута имени в моей форме ввода, но я не могу понять, почему if($_POST)
и isset($_POST) реагируют на разные способы в этом случае.

Related of «Php if ($ _ POST) vs if (isset ($ _ POST))»

ruphp.com

Как бы не ругали PHP за слабую и плохую типизированность помноженную на кучу функций на все случаи жизни, у него есть полно плюсов как простота при подходе к решению задач, обилие инструментов по умолчанию и т.д.

Один вот нюанс я заметил, что часто встречается у разработчиков на PHP это люди путают назначение функций empty и isset.

Вот вам пример, как вам кажется этот код хорош или нет?

if(isset($params['alias'])) $where[] = 'alias = "'.addslashes($params['alias']).'"';

я даже не буду ничего говорить про addslashes без проверки magic_quotes* если вы не новичок вам и так понятно, да и всё же дальше используется dibi библиотека в которой есть гибкий и очень удобный конструктор запросов и плэйсхолдер по умолчанию. Что люди не используют всех возможностей библиотек и так ясно, это просто лень почитать одностраничный ман.


Речь не об этом, речь об isset и empty.

Что мы знаем об empty? Это на самом деле простая директива или конструкция языка, которая проверяет переменную на пустоту и не выдаёт предупреждения, если даже переменная не определена, то есть она совмещает в себе функцию isset

empty() is the opposite of (boolean) var, except that no warning is generated when the variable is not set.)

Второе, что такое пустота для PHP. Именно за такие вещи многие не любят PHP или многие не любят после PHP другие языки, когда пустота в них имеет определенное значение например nil (Ruby, puts nil.class) или undefined (JS).

В PHP пустота это 0, "", array(), 0.0, FALSE, Null или просто даже без значения определенная переменная:

The following things are considered to be empty:
"" (an empty string)
0 (0 as an integer)
0.0 (0 as a float)
«0» (0 as a string)
NULL
FALSE
array() (an empty array)
var $var; (a variable declared, but without a value in a class)

История с isset вообще проще, это так же конструкция языка, которая проверяет только две вещи: объявлена ли переменная ($var; например) и не является ли она NULL!
Всё!

То есть получается, что вот код.

$name = '';  if( isset($name) ) echo "Hello {$name}n";  if( !empty($name) ) echo "Good night {$name}n";    

Выдаст всё же не тот что нам как бы нужен:
> Hello

Так и выше код соберётся с ненужным условием и даже скорее неправильным (!!!) условием, когда было происходит сбор параметров

   $params['alias'] = $_GET['alias'];  ...  // сбор sql запроса, для PHP переменная $params['alias'] всё же объявлена, НО ПУСТАЯ!  if(isset($params['alias'])) $where[] = 'alias = "'.addslashes($params['alias']).'"';  

ваш SQL запрос получится смешного вида alias = », хотя я уверен вам бы хотелось видеть его совсем иного вида.

Поэтому я всё же правильнее понимать отличия где и когда использовать isset и empty.

Удачи, оставайтесь на стороне разума!

ufacode.ru

Here are some handy wrappers to isset that I use when I need to do common evaluations like: this variable is set and has a length greater than 0, or: I want the variables value, or a blank, if not set.

/**
 * isset_echo()
 *
 * Accomplishes the following w/o warni.
         if (array_key_exists($z, $x[$y])) { echo $x[$y][$z]; }
            }
            else { echo $x[$y]; }
        }
    }
    else { echo $x; }
}

/**
 * isset_value()
 *
 * As above, but returns value instead of echoing
 */
function isset_value(&$x, $y=Null)
{
    if (is_array($x)) {
        if (array_key_exists($y, $x)) { return $x[$y]; }
    }
    else { return $x; }
}

/**
 * isset_and_equals()
 *
 * As above, but ...
 * Returns true if variable (or array member) is set and equaL to the first parameter
 */
function isset_equals($val, $w, $x=null, $y=null, $z=nu.
p;  if (is_array($w[$x][$y])) {
                                        if(array_key_exists($z, $w[$x][$y])) {
                                                return ($w[$x][$y][$z] == $val) ? true : false;
                                        }
                                    } else {
                                        return ($w[$x][$y] == $val) ? true : false;
            .
sp; }
        }
    } else {
                return ($w == $val) ? true : false;
        }
}

/**
 * isset_gt0()
 *
 * As above, but returns true only if var is set and it's length is > 0
 */
function isset_gt0(&$x)
{
    if (isset($x) && strlen($x) > 0) { return true; }
    else { return false; }
}

www.theserverpages.com


You May Also Like

About the Author: admind

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

Adblock
detector