За последние 24 часа нас посетили 18273 программиста и 1577 роботов. Сейчас ищут 1117 программистов ...

Как можно уменьшить код

Тема в разделе "PHP для новичков", создана пользователем SBAlex, 26 янв 2024.

  1. SBAlex

    SBAlex Новичок

    С нами с:
    20 апр 2022
    Сообщения:
    26
    Симпатии:
    1
    Всем привет. У меня есть код проверяющий наличие POST-переменных. Как можно его уменьшить, оптимизировав, чтобы он был более компактным но выполнял ту же задачу.

    PHP:
    1. <?php
    2. if (
    3.     (isset($_POST['login']) && $_POST['login']!='') &&
    4.     (isset($_POST['currency']) && $_POST['login']!='') &&
    5.     (isset($_POST['country']) && $_POST['login']!='') &&
    6.     (isset($_POST['url_notify']) && $_POST['login']!='') &&
    7.     (isset($_POST['order']) && $_POST['login']!='') &&
    8.     (isset($_POST['description']) && $_POST['login']!='') &&
    9.     (isset($_POST['sum']) && $_POST['login']!='') &&
    10.     (isset($_POST['name']) && $_POST['login']!='') &&
    11.     (isset($_POST['products']) && $_POST['login']!='') &&
    12.     (isset($_POST['Receipt']) && $_POST['login']!='') &&
    13.     (isset($_POST['sign']) && $_POST['login']!='')
    14.     )
    15.     {
    16.     echo 'Успех';
    17.     }
    Заранее спасибо.
     
  2. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    914
    Симпатии:
    143
    Чую дичь лютую.
    Не понимаю, почему всё время login на неравенство пустой строки проверяется, в отдельное условие вынес бы. А так перебрать в цикле названия пост-переменных, и да, за тебя писать не буду. Совет -- воспользуйся сторонним валидатором, там ещё лимиты на кол-во символов можно будет передавать...
     
  3. SBAlex

    SBAlex Новичок

    С нами с:
    20 апр 2022
    Сообщения:
    26
    Симпатии:
    1
    Это опечатка, простите. Нет возможности поправить первое сообщение. Вот так правильно:

    HTML:
    1. <?php
    2. if (
    3.    (isset($_POST['login']) && $_POST['login']!='') &&
    4.    (isset($_POST['currency']) && $_POST['currency']!='') &&
    5.    (isset($_POST['country']) && $_POST['country']!='') &&
    6.    (isset($_POST['url_notify']) && $_POST['url_notify']!='') &&
    7.    (isset($_POST['order']) && $_POST['order']!='') &&
    8.    (isset($_POST['description']) && $_POST['description']!='') &&
    9.    (isset($_POST['sum']) && $_POST['sum']!='') &&
    10.    (isset($_POST['name']) && $_POST['name']!='') &&
    11.    (isset($_POST['products']) && $_POST['products']!='') &&
    12.    (isset($_POST['Receipt']) && $_POST['Receipt']!='') &&
    13.    (isset($_POST['sign']) && $_POST['sign']!='')
    14.    )
    15.    {
    16.    echo 'Успех';
    17.    }
    Спасибо что заметили
    --- Добавлено ---
    Получилось так:

    PHP:
    1. <?php
    2. $fields = ['login', 'currency', 'country', 'url_notify', 'order', 'description', 'sum', 'name', 'products', 'Receipt', 'sign'];
    3. $valid = true;
    4.  
    5. foreach ($fields as $field) {
    6.     $valid = $valid && isset($_POST[$field]) && $_POST[$field] != '';
    7. }
    8.  
    9. if ($valid) {
    10.     echo 'Успех';
    11. }
    А можно ли еще больше оптимизировать или это предел?
     
  4. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    425
    Симпатии:
    79
    Адрес:
    Бавария, Германия
    Логика кода такая - если хотя бы для одного поля $valid = false, то результа false. Поэтому можно сделать так
    PHP:
    1. foreach ($fields as $field) {
    2.     $valid = isset($_POST[$field]) && $_POST[$field] != '';
    3.     if(!$valid ) break;
    4. }
    Удачи!
     
    #4 Vladimir Kheifets, 26 янв 2024
    Последнее редактирование: 26 янв 2024
  5. Survivor

    Survivor Новичок

    С нами с:
    8 фев 2023
    Сообщения:
    86
    Симпатии:
    17
    Дополню

    PHP:
    1. $postKeys = ['login', 'currency', 'country', 'url_notify', 'order', 'description', 'sum', 'name', 'products', 'Receipt', 'sign'];
    2.  
    3. $allSet = true;
    4. foreach ($postKeys as $key) {
    5.     if (!isset($_POST[$key]) || $_POST[$key] == '') {
    6.         $allSet = false;
    7.         break;
    8.     }
    9. }
    10.  
    11. if ($allSet) {
    12.     echo 'Успех';
    13. }
     
  6. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    914
    Симпатии:
    143
    @Survivor, код верный, но перестаньте переменные "allSet"-ами называть, выше верное название, "valid" или там "isValid" )))
     
  7. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.790
    Симпатии:
    1.328
    Адрес:
    Лень
    don.bidon нравится это.