Skip to main content Link Search Menu Expand Document (external link) Copy Copied
  1. 01 form.php
    1. 01-1
    2. 01-2
  2. 02 filter
    1. 02-1

🔗php filter


01 form.php

검색창에 php를 검색해보자 주소표시줄에 search?q 라는 낱말 뒤에 우리가 입력한 단어가 보인다.

q는 Query 의 표시로 Query란 (질의문:저장되어져 있는 정보를 골라내기 위한 질문) 이다

위의 그림은 http GET 방식으로 데이터를 요청한 예시이다. 직접 만들어보자

01-1

  1. 07/get-input.php 생성
<?php

?>

<h1>get input</h1>

실행

  1. 브라우저 주소창에 쿼리문과 파라미터를 작성후 엔터를 쳐본다

    당연히 데이터가 없으니 아무것도 안나올 것이다.

  1. php 작성
<?php
$product_id=$_GET['productid'];
?>
<h1>get input</h1>
<?= $product; ?>

실행

get 방식의 요청으로 들어온 매개변수 값을 취득하여 화면에 출력

01-2

매개변수 2개

<?php
$product = $_GET['product']; //superGlobals php문서 어디서나 사용가능
$limit = $_GET['limit'];  //limit 추가
?>
<h1>get input</h1>
<?= $product; ?>
<p>
  진열상품리스트:<?= $product; ?>-👍Limit <?= $limit;?> //출력
</p>

실행

🔑파라미터를 연결할때는 & 를 작성

  • 매개변수 두개의 값이 잘 전달된것을 확인

02 filter

사용자가 악의적으로 주소창을 통해 위험한 데이터를 전송할수 있다. filter 를 사용하여 데이터를 골라내자


<?php
  $product = filter_input(INPUT_GET,'product',FILTER_VALIDATE_INT);  //FILTER_VALIDATE_INT 정수는 true 아니면 false
  $limit = filter_input(INPUT_GET,'limit',FILTER_VALIDATE_INT);

  if($product == false || $limit == false){
      die();//멈춰
  }
?>
<h1>get input</h1>
<p>
 진열상품리스트:<?=  $product; ?> -👍Limit <?=  $limit; ?>
</p>

  • 매개변수를 글자로 보내면 실행안됨

  • 숫자로 보내면 실행됨

02-1

필터에 해당되지 않을경우 기본값을 출력하자

<?php
    $product = filter_input(INPUT_GET,'product',FILTER_VALIDATE_INT);  //FILTER_VALIDATE_INT 정수는 true 아니면 false
    $limit = filter_input(INPUT_GET,'limit',FILTER_VALIDATE_INT);

   //if($product == false || $limit == false){
   //    die();//멈춰
   //}

    if($product == false){  //변수 product 가 false 이면
        $product = 10;  // product에 10할당
    }
    if($limit == false){
        $limit = 10;
    }
?>
<h1>get input</h1>
<p>
진열상품리스트:<?=  $product; ?> - 👍Limit <?=  $limit; ?>
</p>

🔑 위의 코드 처럼 작성하면 빈 화면이 출력되지 않겠죠?