티스토리 뷰
1) 데이터 전달
> php로 만들어진 어플리케이션에 데이터 전달
1. php에는 미리 지정된 변수
- super globals
>특별한 변수
- 설정을 통해서 일반 변수도 슈퍼글로벌 변수로 만들 수 있음
>> 데이터 전달 방식
$_GET : get으로 보낸 데이터는 get 변숭 자동으로 만들어짐
- GET 방식으로 보낸 데이터를 변수에 담겨있다
$_POST : POST 방식으로 보낸 데이터가 담겨있다
>> 사용자 인증
$_COOKIE
$_SESSION
$_SERVER
$_REMOTE
#vi input.php
<?php
print_r($_SERVER)
?>
2. GET 방식으로 데이터를 보내는 방법
>예제 : html과 php를 함께 사용
isset -> 해당 변수가 선언되었는지 안되었는지 확인 할 수 있는 명령어
# vi input.php
<!doctype html>
<html>
<head></head>
<body>
<?php
if(isset($_GET[age])&& isset($_GET[name])){
echo"<p> name: $_GET[name] </p>";
echo"<p> name: $_GET[age] </p>";
}else{
echo"<p> input name and age </p>";
}
?>
</body>
</html>
1) 한개의 변수 URL 을 통해 전달
-> ?age=20
>>100.100.100.133/input.php?age=20
2 ) 변수가 여러개 있을 떄
&로 구분함
ex) ?age=20&name=jone
>>192.168.59.128/input.php?age=20&name=jone
- http 헤더를 통해서 전달이 된다
- 변수이름이 key 값이 value 가 됨
> 변수이름 : age,name
> value : 20/haeni
- 정보가 쉽게 공개되기 때문에 보안에 취약
- url 을 통해 전달 -> 데이터의 크기 제한
- (URL)헤더를 통해 전달 하기 때문에 데이터의 크기도 정해져 있다
- 편리하지만 보안에 굉장히 취약함
-> 취약한 이유
-쉽게 노출이 되기 때문이다
-> 누구든지 값을 바꿀 수 있다
!! 일반 변수를 슈퍼 글로벌 변수처럼 쓸 수 있음
- register_globals = Off -> register_globals = On 변경
# vi /etc/php.ini
:693
# service httpd restart
//service 재시작해줘야 적용됨
예제) 일반 변수를 슈퍼 글로벌 변수처럼 쓰는 예제
#vi input.php
<?php
echo $age;
?>
url>192.168.59.128/input.php?age=20
>결과
192.168.59.128/input.php
> 출력되지 않음
3. POST 방식으로 데이터 전달 방법
- GET 처럼 쉽게 보낼수 없지만 GET보다 안전하다
- form 태그를 사용해서 전달이 가능
- 헤더가 아닌 메세지 바디를 통해 전달
<form> : 입력형태를 지정하는 테그
! form의 주요 속성
- action
- method =GET | POST
#vi form.php
<!doctype html>
<html>
<head></head>
<body>
<form action=input.php method=POST >
// 상대 경로 input.php
<input type=text name=name placeholder='name'><br>
// 위에 놓으면 바로 변경가능
// name속성 = 변수이름
<input type=text name=age value='age'>
<input type=submit value='send' //안의 값을 변경 >
// input.php 속성에 직접 접근한다
</form>
</body>
</html>
#vi input.php
<!doctype html>
<html>
<head></head>
<body>
<?php
if(isset($_POST[age])&& isset($_POST[name])){
?>
<p> name: <?php echo $_POST[name]?> </p>
<p> age: <?php echo $_POST[age] ?></p>
<?php
}else{
?>
<p>input name and age</p>
<?php
}
?>
</body>
</html>
> F12 > NETWORK
> POST 로 전달하면 http://192.168.59.128/input.php 나타남
> GET 로 바꾸면 http://192.168.59.128/input.php?name=ddd&age=10 다 나타남
>192.168.59.128 /form .php 실행
>name 과 age에 값 입력
>input.php 로 넘어가면서 값 출력 (POST데이터 전달)
- post 형식에 get형식의 input.php이므로 값을 입력해도 나오지않는다
- post 형식이므로 input.php 도 post 형식으로 변환시켜준다
실습) input.php
- 입력값이 있으면 입력받은 값을 출력하고
- 없으면 입력폼을 출력한다
1) input.php 의 form 에 action='form.php'를 설정하면
입력한 값이 form으로 넘어간다
2)
참고)
'' : 문자열
' ': 문자열
타입체크 gettype()
#vi input.php
<!doctype html>
<html>
<head></head>
<body>
<?php
if(isset($_POST[age])&& isset($_POST[name]) && $_POST[age]!=='' && $_POST[name]!==''){
?>
<p> name: <?php echo $_POST[name]?> </p>
<p> age: <?php echo $_POST[age] ?></p>
<?php
}else{
?>
<p>input name and age</p>
<form method=POST>
<input type=text name=name placeholder='name'>
<input type=text name=age placeholder='age'>
<input type=submit value='send'>
</form>
<?php
}
?>
</body>
</html>
>값을 입력하지 않았을때
>알맞은 값을 입력했을 떄 (출력)
'Web Security > Web' 카테고리의 다른 글
Web - 데이터 베이스 / SQL(MYSQL) (0) | 2018.03.05 |
---|---|
Web - 인증 / COOKIE , SESSION/와이어샤크 확인 (0) | 2018.03.05 |
Web - WEB 2.0 : CGI / PHP사용 (0) | 2018.03.02 |
Web - DOM/BOM객체 (javascript) (0) | 2018.03.02 |
Web- Web1.0 < Javascript > (0) | 2018.02.19 |