Mysql
 sql >> Database >  >> RDS >> Mysql

PHP isset() con più parametri

I parametri per isset() deve essere un riferimento variabile e non un'espressione (nel tuo caso una concatenazione); ma puoi raggruppare più condizioni insieme in questo modo:

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

Questo restituirà true solo se tutti argomenti per isset() sono impostati e non contengono null .

Nota che isset($var) e isset($var) == true hanno lo stesso effetto, quindi quest'ultimo è alquanto ridondante.

Aggiorna

La seconda parte della tua espressione usa empty() così:

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

Questo è sbagliato per le stesse ragioni di cui sopra. In effetti, non hai bisogno di empty() qui, perché a quel punto avresti già verificato se le variabili sono impostate, quindi puoi abbreviare l'espressione completa in questo modo:

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

O usando un'espressione equivalente:

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

Pensieri finali

Dovresti considerare l'utilizzo di filter funzioni per gestire gli ingressi:

$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

A proposito, puoi personalizzare i tuoi filtri per verificare la presenza di varie parti dei valori inviati.