source

여러 매개 변수가 있는 PHP isset()

ittop 2023. 3. 18. 09:21
반응형

여러 매개 변수가 있는 PHP isset()

AJAX 오토콤플릿으로 작업하려고 하는데 두 언어가 시너지 효과를 발휘하는데 몇 가지 문제가 있습니다.

모든 이슈를 $_POST 1개로 교체하면 아래의 스니펫이 동작합니다만, $_POST를 하나 더 추가하면 5번째 줄에 오류가 나타납니다.

<?php 

require_once '../Configuration.php';
if (isset($_POST['search_term'] . $_POST['postcode']) == true && empty ($_POST['search_term'] . $_POST['postcode']) == false) {
$search_term = mysql_real_escape_string($_POST['search_term'] . $_POST['postcode']);
$query = mysql_query("SELECT `customer_name`,`postcode` FROM `Customers` WHERE `customer_name` LIKE '$search_term%' ");
while(($row = mysql_fetch_assoc($query)) !== false) {
    //loop
    echo '<li>',$row['customer_name'] . $row['postcode'] '</li>';
}
}


?>

왜 이 오류를 발생시키는지에 대한 조언은 매우 감사할 것입니다.감사해요.

mysqli를 사용해야 한다는 것을 알고 있습니다.먼저 논리를 파악하려고 합니다:)

Js:

Primary.js:

$(document).ready(function() {
$('.autosuggest').keyup(function() {

    var search_term = $(this).attr('value');
    var postcode = $_GET['postcode'];
    //alert(search_term); takes what is typed in the input and alerts it
    $.post('ajax/search.php', {search_term:search_term, postcode:postcode},     function (data) {
        $('.result').html(data);
        $('.result li').click(function() {
            var result_value = $(this).text();
            $('.autosuggest').attr('value', result_value);
            $('.result').html('');

        });
    });
});
});

매개 변수:isset()는 변수 참조여야 하며 식(이 경우 연결)이 아닙니다.다만, 다음과 같이 복수의 조건을 그룹화할 수 있습니다.

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

이것은 돌아올 것이다.true모든 논거가 할 경우에만isset()설정되며 포함되지 않습니다.null.

주의:isset($var)그리고.isset($var) == true같은 효과가 있기 때문에 후자는 다소 장황합니다.

갱신하다

두 번째 표현은empty()다음과 같습니다.

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

이것은 위와 같은 이유로 잘못된 것입니다.사실, 당신은 그 일을empty()이 경우 변수가 설정되어 있는지 여부를 이미 확인했으므로 다음과 같이 전체 식을 단축할 수 있습니다.

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

또는 동등한 표현을 사용합니다.

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

마지막 생각

를 사용하는 것을 검토해 주십시오.filter입력 관리 기능:

$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

한편, 필터를 커스터마이즈 해, 송신된 값의 다양한 부분을 확인할 수 있습니다.

의 파라미터isset()콤마 기호( )로 구분해야 합니다).,( )는 점 기호( )가 아닙니다..현재 코드는 변수를 별도의 매개 변수로 전달하는 대신 단일 매개 변수로 연결합니다.

원래 코드는 변수를 통합한 것으로 평가합니다.string값:

isset($_POST['search_term'] . $_POST['postcode']) // Incorrect

올바른 형식은 변수로서 이들을 개별적으로 평가합니다.

isset($_POST['search_term'], $_POST['postcode']) // Correct

필요한 것은 다음과 같습니다.

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

isset && !empty용장성이 있습니다.

php의 사용OR (||)php의 논리 연산자isset()예를 들어 다중 연산자가 있는 경우

if (isset($_POST['room']) || ($_POST['cottage']) || ($_POST['villa'])) {

}

언급URL : https://stackoverflow.com/questions/14476609/php-isset-with-multiple-parameters

반응형