728x90
반응형




 PHP 애플리케이션의 입력과 출력




1
2
3
<?php
  echo $_GET['id'];
?>


위 코드는 $_GET[ ]는 배열(Array) 라고 하며, 배열의 대한것은 배열관련의 포스팅에서 자세히 알아보도록 하고 $_GET[ ]의 대해 알아보도록 하겠습니다




위 출력내용의 URL를 자세히 보시면 input.php?id=server로 되어 있습니다




이번에는 URL의 server 부분을 talk 로 수정한 후 다시 접속하니 변경된 URL 정보로 브라우저에 출력되는것을 확인하실 수 있습니다

즉 위 출력내용을 본다면 변경한 URL의 server, talk 부분을 입력한 값의 따라 출력내용이 다르다는 것을 확인 하실수 있습니다.

그리고 input.php 파일이 사용자가 입력한 값에 따라서 다른 출력값을 보내주는것으로 사용자와 서버가 데이터를 주고받는 애플리케이션이 된것입니다





1
2
3
<?php
  echo $_GET['id'];
?>


코드로 다시 돌아와서 $_GET[ ] 는 사용자가 입력한 정보를 받는것 영역이며, $_GET['id'] 괄호 안에 들어가는 값은 입력한 값의 이름이 된다는 것으로 볼수 있겟습니다








 PHP 애플리케이션의 폼을 이용한 데이터 입력




이번에는 폼을 이용하여 PHP 애플리케이션의 데이터를 입력해 보도록 하겠습니다


사용자가 URL의 직접 정보를 입력하는것은 많은 불편함이 있습니다 이러한 불편함을 해결하기 위해 만든것이 Form(폼) 입니다


Form(폼)이란? 사용자가 이력한 데이터를 받아 서버로 전송하는 HTML 태그이며, 사용자가 입력한 정보를 받은 후 입력받은 컨트롤에 포함되어 있는 속성값의 따라 데이터가 서버로 전송하게 됩니다



위 내용이 바로 폼입니다 이쁘지는 않지만 로그인하는데 필요한 정보는 모두 있죠? 폼의 대한 코드를 보도록 하겠습니다


File : form.html

1
2
3
4
5
6
7
8
9
<html>
<body>
  <form method="get" action="input.php">
    id : <input type="text" name="id" />
    pw : <input type="text" name="pw" />
    <input type="submit" />
  </form>
</body>
</html>



File : input.php

1
2
3
<?php
  echo $_GET['id'].' : '.$_GET['pw'];
?>


위 코드는 폼의 출력내용의 HTML 코드입니다 차근차근 알아보도록 하겠습니다

4, 5번째 줄은 id와 pw의 텍스트필드 이고 6번째 줄은 쿼리전송의 submit 버튼이며 사용자가 버튼을 클릭하게 되면 사용자가 입력한 데이터를 3번째줄의 있는 action부분의 URL를 지정하여 정보를 보내는곳을 지정하게 됩니다




위 출력내용은 id  / pw 를 입력할수 있는 텍스트필드가 있고 입력된 정보를 서버로 전송하기 위한 버튼이 있습니다



정보를 입력하고 쿼리전송을 클릭해보겠습니다




출력내용을 보시면 폼에서 입력한 정보로 URL이 변경된것을 확인하실수 있습니다





 PHP 애플리케이션의 입력값의 구분




이번에는 URL를 부분을 자세히 알아보도록 하겠습니다



1. 주소와 값의 구분자



위 내용은 브라우저를 통한 접근 URL이며, server-talk.com/in_put/input.php 는 서버의 주소가되고 id=talk&pw=talk 은 입력데이터가 되게 됩니다 서버의 주소와 입력데이터는 ?(물음표)라는 구분자를 통해 나눠지게됩니다


2. 값의 구분자



위 URL를 보시면 id와 pw라는 2개의 값 있으며, 값과 값 사이는 & 가 구분자입니다




3. 값의 이름과 값 사이의 구분자



위 URL를 보시면 id(값의 이름)와 pw(값)가 있으며, 값의 이름과 값 사이는 = 가 구분자입니다

728x90
반응형

'Web Programming > php' 카테고리의 다른 글

php if 문  (0) 2018.08.31
Get 방식 Post 방식  (0) 2018.08.31
php.ini opcache.enable  (0) 2018.08.31
php.ini display_errors  (0) 2018.08.31
Atom Editor 아톰 에디터 설치 및 설정  (0) 2018.08.30
728x90
반응형

php 폴더의 php.ini 파일 편집


opcache.enable=1

1 = 켜져있음

0 = 꺼져잇음


1이면 php 가 같은시간동안 더 많은 웹페이지를 만들어낼수 있다.

하지만 php 파일 수정시 즉시 반영이 아닌 30초 ~ 1분 주기로 웹페이지에 반영되는 이슈.


개발시에는 0으로 놓아야 즉시 개발이 반영된다..

728x90
반응형

'Web Programming > php' 카테고리의 다른 글

Get 방식 Post 방식  (0) 2018.08.31
php 폼 입력과 출력  (0) 2018.08.31
php.ini display_errors  (0) 2018.08.31
Atom Editor 아톰 에디터 설치 및 설정  (0) 2018.08.30
php 변수  (0) 2018.08.30
728x90
반응형

php 설치 폴더 안의 php.ini 파일 편집.

display_errors = off -> on 으로 변경하면 오류가 표시된다.


하지만 상용 서비스시에는 off 로 해야함

개인정보등의 오류 내용이 client 에 노출될 가능성있기때문에..



728x90
반응형

'Web Programming > php' 카테고리의 다른 글

php 폼 입력과 출력  (0) 2018.08.31
php.ini opcache.enable  (0) 2018.08.31
Atom Editor 아톰 에디터 설치 및 설정  (0) 2018.08.30
php 변수  (0) 2018.08.30
php 숫자연산  (0) 2018.08.30
728x90
반응형
tracert와 traceroute의 차이점은 무엇이 있을까?
필드에서 대화할때 위의 차이점을 모르면 대화가 어렵습니다.

단순하게 생각하면 윈도우(tracert), 리눅스,유닉스(traceroute)라고 할 수 있지만 리눅스에서도 tracert를 제공하기 때문에
단순 OS의 차이는 아닙니다.

근본적인 차이점은 icmp를 사용하느냐 udp를 사용하느냐의 차이라고 할 수 있습니다.

tracert: icmp기반 프로그램. icmp-8(echo)를 보낸뒤 icmp-0(echo reply)를 확인하여 동작여부를 확인합니다.
응답이 있다면 3번 시도가 default임
그렇기에 icmp-0 을 차단한 경우 경로추적이 불가능합니다.

(ex:192.168.0.157 -> 192.168.0.100으로 tracert의 tcpdump 화면)
 






traceroute: udp기반 프로그램. default로 옵션설정을 안했을때 33434/udp부터 7번 즉, 33439/udp까지 보내게됩니다.
해당 udp 포트가 닫혀있을때 icmp-3(Destination Unreachable)이 오는것을 아이디어로 만들어졌습니다.

(ex:192.168.0.157 -> 192.168.0.100으로 traceroute의 tcpdump 화면)











만약 os에서 33434/udp를 오픈한 상태라면 어떻게 될까?
처음 한번은 icmp-3이 돌아오지 않는걸 확인 할 수 있습니다.
이것은 방화벽에서 33434/udp를 drop시켰을때도 동일합니다.




icmp를 차단한 상태로 테스트한 화면입니다.

icmp echo를 계속 보내고있는 tracert의 모습

icmp가 차단되도 정상 동작하는 traceroute의 모습

실무에서는 traceroute -T도 많이 사용하는데요. 80/TCP포트가 열려있다면 더욱 빠르고 정확한 결과를 얻을 수 있습니다.
해당 -T 옵션은 80/TCP로 Flags [SEW]를 보낸뒤 syn,ack이 오는것을 확인하는 방법입니다.
SEW는 SYN ECE CWR의 약자입니다.
SYN은 새로운 연결을 시작한다는 이야기이고
E는 ECE는 Explicit Congestion Notification라는 TCP혼잡제어 기능을 사용할 수 있다고 알려주는 것 입니다.
R는 CWR(Congestion Window Reduced )을 말하며 슬라이딩윈도우의 윈도우 사이즈를 줄여달라는 뜻입니다.

네이버의 임의의 아이피로 테스트한 화면
일부 tcpdump 캡쳐화면
또한 traceroute에서 ICMP로 라우팅을 확인해야 할 때도 있는데 이때는 traceroute -I 를 사용하면 됩니다.

결론으로 traceroute기본옵션으로 안되는 상황은 모든 udp를 drop시키던지 서버에서 icmp-3을 보내지 못하게 설정하던지, 라우팅이 잘 못 되어야 합니다.


728x90
반응형

'Web Programming' 카테고리의 다른 글

MVC Pattern  (0) 2018.09.05
슬랙(Slack)의 장점과 한계점  (0) 2018.09.04
프레임워크와 라이브러리의 차이  (0) 2018.08.29
캐시와 쿠키의 차이  (0) 2018.08.29
WebSocket이란?  (0) 2018.08.29
728x90
반응형

자바스크립트로 스크립트를 만들다 보면 생각외로 종종 input 배열의 값을 컨트롤 해야 할때가 있다.




Input 배열은 동일 페이지 내에서 Input으로 정의되는 항목에 대하여 중복되는 Name이 존재할경우 배열처럼 사용이 가능하다. 보통은 Checkbox를 이용할때 많이 사용한다고 볼 수 있다. 




내용이 간단하여 아래 예제만 봐도 쉽게 이해할 수 있다.



<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>Input Array</title>

<script src="https://code.jquery.com/jquery-1.7.2.js"></script>

<script type="text/javascript">

 

    $(document).ready(function(){

       

 

      // 체크박스 배열 Loop

      $("input[name=chk]").each(function(idx){    

         

        // 해당 체크박스의 Value 가져오기

        var value = $(this).val();

 

        var eqValue = $("input[name=chk]:eq(" + idx + ")").val() ;

         

        console.log(value + ":" + eqValue) ;

         

      });

       

       

      // 배열의 특정순서의 Value 가져오기

      var orange = $("input[name=chk]:eq(2)").val() ;

      console.log(orange);

       

 

       

      // 배열의 특정순서 Value 변경하기

      $("input[name=chk]:eq(2)").val("포도") ;

       

      var chgFruit = $("input[name=chk]:eq(2)").val() ;

      console.log(chgFruit) ;

       

    });

 

</script>

</head>

<body>

    <input type="checkbox" name="chk" id="chk" value="바나나">바나나

    <input type="checkbox" name="chk" id="chk" value="딸기">딸기

    <input type="checkbox" name="chk" id="chk" value="오렌지">오렌지

</body>

</html>





출처: http://fruitdev.tistory.com/192?category=568934 [과일가게 개발자]

728x90
반응형

'Web Programming > front-end' 카테고리의 다른 글

Ajax 란?  (0) 2018.09.04
오른쪽 마우스 금지 소스 / 드래그 금지 소스  (1) 2014.04.09
<thead><tbody>  (0) 2013.09.30
<colgroup>  (0) 2013.09.25
<div>코딩  (0) 2013.09.25

+ Recent posts