폼을 통해 파일을 업로드를 하게되면 슈퍼전역 변수인 $_FILES 변수를 통해 업로드 파일에 대한 정보를 가져올 수 있다.

$_FILES['업로드_파일폼명']['업로드_정보'];

업로드 파일폼명은 <input type="file" name="파일폼명" /> 태그상의 name이 들어간다.

업로드 정보는 연관배열로 반환이 되는데, 각 정보는 아래와 같다.

$_FILES['FileFormName'][array]

  • name => 업로드된 파일이름
  • type => 업로드된 파일타입
  • size => 업로드된 파일크기(BYTE)
  • tmp_name => 임시저장된 업로드 파일의 경로와 파일이름
  • error => 업로드 오류시 오류번호


각 업로드 파일마다 위와 같은 데이터를 갖는다.

파일이 업로드가 되면 우선 서버에 지정된 임시디렉토리에 파일이 저장되게 된다.

저장된 이후에 파일을 옮기지 않으면 스크립트 종료시 임시파일은 자동삭제 된다.

스크립트가 종료되기 전에 move_uploaded_file() 함수를 통해 새로운 위치로 파일을 옮겨주도록 한다.



파일을 업로드하다 오류가 나는 경우가 있다.

파일 오류가 나는 경우 $_FILES의 error 에 오류번호를 갖게 된다.

오류번호에 대한 내용은 아래와 같다.

업로드 오류(ERROR)시 내용

1: upload_max_filesize 설정값을 초과함 (php.ini의 설정, 업로드 최대용량)
2: MAX_FILE_SIZE 설정값을 초과함 (html form의 설정, 업로드 최대용량)
3: 파일 일부만 업로드 됨
4: 업로드된 파일이 없음
6: 사용가능한 임시폴더가 없음
7: 디스크에 저장할 수 없음
8: 파일 업로드가 중지됨
이외: 시스템 오류가 발생



출처 :

https://wttjj.tistory.com/89 [왕따짱의 사진과 프로그래밍]

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

PHP) <?= ?> 태그  (0) 2020.11.05
PHP) move_uploaded_file() 함수  (0) 2020.11.03
PHP) magic_quotes_gpc 설정  (0) 2020.10.27
PHP) 세션 삭제 session_destroy( ) 함수  (0) 2020.10.27
PHP) session_start( ) 함수  (0) 2020.10.27

form 태그 / entype 속성

 

<소스코드 예>

<form id="fregisterform" name="fregisterform" method="post" enctype="multipart/form-data"> </form>

 

파일을 업로드 할때,

<form>태그에서 entype="multipart/form-data"라는 애트리뷰트를 반드시 써야한다.

 

 

그렇게 하지 않으면, 웹 서버로 데이터를 넘길때 파일의 경로명만 전송되고 파일 내용이 전송되지 않기 때문이다.

 

그리고 이때, method 애트리뷰트에는 'POST' 값을 지정해야 함

 

 

** <form>태그의 속성인 method, action, enctype 등은 입력받은 데이터를 어떻게 처리할 것인지 세부적으로 설정하는 데 사용한다.

 

  method는 전송 방식,

  action은 전송 목적지,

  enctype은 전송되는 데이터 형식을 설정.

 

 

** enctype

enctype 속성은 다음 세가지의 값으로 지정될 수 있다.

 

1. application/www-form-urlencoded

 

디폴트값이다. enctype을 따로 설정하지 않으면 이 값이 설정된다.

모든 문자열(폼데이터)은 서버로 전송되기 전에 인코딩된다.(공백은 "+"심볼로 변환되며, 특수문자는 ASCII 16진수로 변환된다.) 

 

2. multipart/form-data

 

파일이나 이미지를 서버로 전송할 경우 이 방식을 사용한다.

문자열이 인코딩되지 않는다. 이 속성은 보통 파일 업로드를 할 때 사용한다.

 

3. text/plain

 

이 형식은 인코딩을 하지 않은 문자 상태로 전송된다.

공백을 "+"심볼로 변환하며, 특수문자는 변환되지 않는다. 잘 사용되지 않는 속성이다.

 

 

 

출처 : 

xorms0707.tistory.com/29

m.blog.naver.com/PostView.nhn?blogId=kgw1988&logNo=220881043540&proxyReferer=https:%2F%2Fwww.google.com%2F

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

<form> 태그  (0) 2020.10.26
div, id  (0) 2020.10.24
semantic 태그, non-semantic 태그, div, span  (0) 2020.10.24
<a> </a> 태그  (0) 2020.10.21
HTML) 목록(리스트)을 표현하는 태그 <ul>, <ol>, <li>, <dl>  (0) 2020.10.21

eval() 함수 : 문자열을 코드로 인식하게 하는 함수

 

eval()

eval()은 문자열을 코드로 인식하게 하는 함수입니다.

 

문법

  eval( string )

 

 

예를 들어,

  eval( '2+2' )

 

는 문자열 2+2가 아니라 계산한 결과 4입니다.

 

 

 

예제

 

<소스 코드>

<!doctype html>
<html lang="ko">
    <head>
       <meta charset="utf-8">
       <title>JavaScript</title>
       <style>
          body {
              font-family: Consolas, monospace; }
       </style>
    </head>
    <body>
       <script>
           var jb = '2+2';
           document.write( '<p>' + jb + '</p>' );
           document.write( '<p>' + eval( jb ) + '</p>' );
       </script>
    </body>
</html>

 

 

<웹페이지 출력값>

 

 

 

출처 : 

www.codingfactory.net/11024

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

변수와 상수  (0) 2024.12.03
JavaScript란?  (0) 2024.12.03
java script) history.back(), history.go(), history.forward()  (0) 2020.10.27

magic_quotes_gpc 설정

 

magic_quotes_gpc 설정
php.ini 파일에서 magic_quotes_gpc 설정이 true 인경우 GET, POST, COOKIE 에 ', ", \ 가 있으면 \(역슬래시) 자동추가된다.

 

SQL Injection 공격실습을 위해서는 C드라이브 - php.ini파일 - magic_quotes_gpc 설정을 Off로 해주어 특수문자 사용이 가능하게 해준다.

 

 

 

php코딩시 변수에 ' , " 등이 있을경우에 대해서 글을 쓴적이 있다. 

위와같은 입력이 허용되면 SQL 인젝션 공격에 취약해지기 때문에 addslashes()를 해줘야한다. 

그러면 특수문자 앞에 \(역슬러시)가 붙기 때문에 입력값으로 인젝션 공격에 사용되는 특수문자가 들어왔을 때 이 특수문자를 일반문자열로 처리하여 SQL 인젝션을 방어할 수 있게 된다. 

그리고 데이터를 불러온후 표현할때는 stripslashes를 사용하여 특수문자 앞에 붙은 \ 를 제거하고 원래 데이터를 표현한다. 

 

사용자의 데이터 입력값에 쿼리를 조작하기 위한 ' 등이 있을경우 이를 \ 처리 해주므로 안전하게 된다.

get_magic_quotes_gpc()는 magic_quotes_gpc의 설정값을 반환한다.

 

 

 

<사용 예>

 

1. DB에 저장시 해당 문자에 \(역슬래시) 추가
$_POST['text'] = addslashes($_POST['text']);

2. 화면에 출력시 추가된 \(역슬래시) 제거
$_POST['text'] = stripslashes($_POST['text']);

3. magic_quotes_gpc 설정에 따른 방법
php.ini 파일에서 magic_quotes_gpc 설정이 true 인경우 GET, POST, COOKIE 에 ', ", \ 가 있으면 \(역슬래시) 자동추가

 


magic_quotes_gpc 설정값 true, false 확인하여 처리

 

if (!get_magic_quotes_gpc())
{
// false이면 \ 추가
$_POST['text'] = addslashes($_POST['text']);
}
else
{
// true이면 \ 제거
$_POST['text'] = stripslashes($_POST['text']);
}

 

 

 

 

출처 :

blog.naver.com/soul7992/221708477422

 

blog.naver.com/ilikebigmac/221378608109

session_destroy( )

 

세션 변수와 쿠키만 설정 해제하는 경우 세션은 여전히 ​​서버 측에서 활성화되며 일부 세션 변수가 다시 설정되고 원래 세션 ID가있는 쿠키가 클라이언트로 다시 전송되면 잠재적으로 재활용될 수 있습니다. 따라서, session_destroy( ) 함수를 이용해 세션을 제거하여야 합니다. 

 

 

 

(PHP 4, PHP 5, PHP 7)

 

session_destroy( )  :  세션에 등록된 모든 데이터를 삭제합니다.

 

설명 

 

session_destroy ( void ) : bool

 

session_destroy ()는 현재 세션과 관련된 모든 데이터를 파괴합니다. 세션과 관련된 전역 변수를 설정 해제하거나 세션 쿠키를 설정 해제하지 않습니다. 세션 변수를 다시 사용하려면 session_start ()를 호출해야합니다.

 

세션을 완전히 종료하려면 세션 ID도 설정 해제해야합니다. 쿠키를 사용하여 세션 ID를 전파하는 경우 (기본 동작) 세션 쿠키를 삭제해야합니다. 이를 위해 setcookie ()를 사용할 수 있습니다.

 

 

 

반환 값

 

TRUE성공 또는 FALSE실패 에 대해 반환합니다 .

 

 

예 #1 $ _SESSION을 사용하여 세션 삭제

<?php
// 세션을 초기화하십시오.
// session_name("something")을 사용하고 있다면 지금 잊지 마십시오!

session_start();

// 모든 세션 변수 설정 해제.

$_SESSION = array();

// 세션을 종료하려면 세션 쿠키도 삭제하십시오.
// 참고: 이렇게 하면 세션이 파괴되고 세션 데이터만 파괴되는 것이 아니다!

if (ini_get("session.use_cookies")) {
    
$params session_get_cookie_params();
    
setcookie(session_name(), ''time() - 42000,
        
$params["path"], $params["domain"],
        
$params["secure"], $params["httponly"]
    );
}

// Finally, destroy the session.
session_destroy();
?>

 

 

session_start() : php에서 세션을 관리(핸들링)하기 위해 선언하는 함수.

 

 

세션


세션(session)이란?

 

세션(session)이란 웹 사이트의 여러 페이지에 걸쳐 사용되는 사용자 정보를 저장하는 방법을 의미합니다.

사용자가 브라우저를 닫아 서버와의 연결을 끝내는 시점까지를 세션이라고 합니다.

 

앞서 살펴본 쿠키는 클라이언트 측의 컴퓨터에 모든 데이터를 저장합니다.

하지만 세션은 서비스가 돌아가는 서버 측에 데이터를 저장하고, 세션의 키값만을 클라이언트 측에 남겨둡니다.

브라우저는 필요할 때마다 이 키값을 이용하여 서버에 저장된 데이터를 사용하게 됩니다.

 

이러한 세션은 보안에 취약한 쿠키를 보완해주는 역할을 하고 있습니다.


세션 시작

PHP에서는 session_start() 함수를 이용하여 새로운 세션을 시작하거나, 기존의 세션을 다시 시작할 수 있습니다.

 

session_start() 함수는 세션 아이디가 이미 존재하는지를 확인하고, 존재하지 않으면 새로운 아이디를 만듭니다.

만약 이미 존재하는 세션 아이디가 있을 때는 원래 있던 세션 변수를 다시 불러와서 사용할 수 있도록 합니다.

 

세션 아이디는 웹 서버에 의해 무작위로 만들어진 숫자입니다.

이 세션 아이디는 세션이 유지되는 동안 클라이언트 측에 저장되며, 세션 변수를 등록하는 키로 사용됩니다.

웹 서버에서는 클라이언트로부터 받아온 세션 아이디를 가지고, 해당 아이디에 대응되는 세션 변수에 접근할 수 있습니다.

 

쿠키와 마찬가지로 세션도 어떤 헤더보다도 먼저 생성해야만 합니다.

 

<예제>

@session_start();

 

세션의 지속 시간은 쿠키와 달리 php.ini 파일에 설정되어 있으므로, 따로 명시해주지 않아도 됩니다.

 

 

 

 

출처 : 

tcpschool.com/php/php_cookieSession_session

+ Recent posts