sql >> Base de Datos >  >> RDS >> Mysql

PHP isset () con múltiples parámetros

Los parámetros para isset() debe ser una referencia variable y no una expresión (en su caso una concatenación); pero puede agrupar varias condiciones juntas de esta manera:

if (isset($_POST['search_term'], $_POST['postcode'])) {
}

Esto devolverá true solo si todos argumentos para isset() están configurados y no contienen null .

Tenga en cuenta que isset($var) y isset($var) == true tienen el mismo efecto, por lo que este último es algo redundante.

Actualizar

La segunda parte de su expresión usa empty() así:

empty ($_POST['search_term'] . $_POST['postcode']) == false

Esto es incorrecto por las mismas razones que las anteriores. De hecho, no necesita empty() aquí, porque en ese momento ya habría comprobado si las variables están configuradas, por lo que puede acortar la expresión completa de la siguiente manera:

isset($_POST['search_term'], $_POST['postcode']) && 
    $_POST['search_term'] && 
    $_POST['postcode']

O usando una expresión equivalente:

!empty($_POST['search_term']) && !empty($_POST['postcode'])

Reflexiones finales

Debería considerar usar filter funciones para gestionar las entradas:

$data = filter_input_array(INPUT_POST, array(
    'search_term' => array(
        'filter' => FILTER_UNSAFE_RAW,
        'flags' => FILTER_NULL_ON_FAILURE,
    ),
    'postcode' => array(
        'filter' => FILTER_UNSAFE_RAW,
        'flags' => FILTER_NULL_ON_FAILURE,
    ),
));

if ($data === null || in_array(null, $data, true)) {
    // some fields are missing or their values didn't pass the filter
    die("You did something naughty");
}

// $data['search_term'] and $data['postcode'] contains the fields you want

Por cierto, puede personalizar sus filtros para verificar varias partes de los valores enviados.