непонятное условие

Тема в разделе "PHP", создана пользователем sunyang, 10 май 2011.

Модераторы: latteo
  1. sunyang

    sunyang

    Регистр.:
    25 апр 2009
    Сообщения:
    444
    Симпатии:
    30
    Не пойму почему в уловии - если не определена переменная...
    вот в этом скрипте:
    PHP:
    if(!empty($_POST['submit']) && $_POST['submit']=='login')
    {
    $user_name = $_POST['name'];
    $user_pass = $_POST['pas'];
    $ses = new Users;
    $ses->setSession ($user_name, $user_pass);

    $ses->checkUser();


    }

    include ("tpl/top.php");
    ?>

    <h4>Вход в авторский раздел</h4>

    <? actNote() ?>

    <form method="post">
    <input type="hidden" name="submit" value="login">
    <p>E-mail: <input type="text" name='name' size=25>
    <br>Пароль <input type="password" name='pas' size=25>
    <input type="submit" name="logon" value="Войти">
    </form>

    Не понятно почему в этом условии
    PHP:
    if(!empty($_POST['submit']) && $_POST['submit']=='login')
    !empty($_POST['submit'] - т.е. если переменная данных формы не определена, то выполняем функцию обработки формы.

    Как так? почему написали !empty($_POST['submit'] а не empty($_POST['submit'] (без восклицательного знака) ?
     
  2. DeaDSandro

    DeaDSandro Создатель

    Регистр.:
    30 апр 2010
    Сообщения:
    49
    Симпатии:
    16
    empty() возвращает true, если переменная НЕ определена, и false - если определена.
    !empty() возвратит true если переменая определена, и false - если НЕ определена.
     
  3. sunyang

    sunyang

    Регистр.:
    25 апр 2009
    Сообщения:
    444
    Симпатии:
    30
    а чем empty() отличается от isset() ?
     
  4. ZCFD

    ZCFD

    Регистр.:
    16 янв 2008
    Сообщения:
    989
    Симпатии:
    437
    пустая и непроинициализованная переменные - это разные состояния
     
  5. MegafonUral

    MegafonUral Прохожие

    empty() возвращает TRUE если переменная не существует или имеет пустое значение
    isset() возвращает TRUE только если переменная существует, не зависимо от того, пустая она или нет

    например:
    PHP:
    $a '';
    $b 'some text';

    isset(
    $a); //true
    empty($a); //true

    isset($b); //true
    empty($b); //false

     
  6. PHPCod3r

    PHPCod3r

    Регистр.:
    7 июн 2010
    Сообщения:
    261
    Симпатии:
    25
    Вот тут

    http://ru2.php.net/manual/en/types.comparisons.php
    В таблице =Comparisons of $x with PHP functions=
    Очень четко и подробно обьяснено, в чем разница.

    Вообще empty это логическое отрицание конструкции if($x)
    А isset() это логическое отрицание конструкции is_null()
    То есть там где is_null() истина , isset() ложь, и наоборот.
    Очень легко запомнить )
     
  7. Fontum

    Fontum Писатель

    Регистр.:
    6 сен 2009
    Сообщения:
    9
    Симпатии:
    0
    isset возращает FALSE, если переменная === null, а empty наоборот true