Media Log

// 호출시
put_gdimage('원본파일명', 생성가로, 생성세로, '저장될파일명');

// 정상생성여부 확인시 : 정상생성시 1을 리턴, 이외는 실패

// gd 이미지 생성
// $img_name = 생성에 사용될 원본 파일명, $width = 생성이미지 가로크기, $height = 생성이미지 세로크기, $save_name = 저장될 파일명
function put_gdimage($img_name, $width, $height, $save_name){

// GD 버젼체크
$gd = gd_info();
$gdver = substr(preg_replace("/[^0-9]/", "", $gd['GD Version']), 0, 1);
if(!$gdver) return "GD 버젼체크 실패거나 GD 버젼이 1 미만입니다.";

$srcname = "../upload/goods/".$img_name;
$timg = getimagesize($srcname);
if($timg[2] != 1 && $timg[2] != 2 && $timg[2] != 3) return "확장자가 jp(e)g/png/gif 가 아닙니다.";

// jpg, jpeg
if($timg[2] == 2){

$cfile = imagecreatefromjpeg($srcname);
// gd 버전별로
if($gdver == 2){
$dest = imagecreatetruecolor($width, $height);
imagecopyresampled($dest, $cfile, 0, 0, 0, 0, $width, $height, $timg[0], $timg[1]);
}else{
$dest = imagecreate($width, $height);
imagecopyresized($dest, $cfile, 0, 0, 0, 0, $width, $height, $timg[0], $timg[1]);
}
imagejpeg($dest, "../upload/goods/".$save_name, 90);

// png
}else if($timg[2] == 3){

$cfile = imagecreatefrompng($srcname);
if($gdver == 2){
$dest = imagecreatetruecolor($width, $height);
imagecopyresampled($dest, $cfile, 0, 0, 0, 0, $width, $height, $timg[0], $timg[1]);
}else{
$dest = imagecreate($width, $height);
imagecopyresized($dest, $cfile, 0, 0, 0, 0, $width, $height, $timg[0], $timg[1]);
}
imagepng($dest, "../upload/goods/".$save_name, 90);

// gif
}else if($timg[2] == 1){

$cfile = imagecreatefromgif($srcname);
if($gdver == 2){
$dest = imagecreatetruecolor($width, $height);
imagecopyresampled($dest, $cfile, 0, 0, 0, 0, $width, $height, $timg[0], $timg[1]);
}else{
$dest = imagecreate($width, $height);
imagecopyresized($dest, $cfile, 0, 0, 0, 0, $width, $height, $timg[0], $timg[1]);
}
imagegif($dest, "../upload/goods/".$save_name, 90);
}
// 메모리에 있는 그림 삭제
imagedestroy($dest);
return 1;
}

* 개래닷컴에서 퍼옴
1. 날짜 및 시간 관련함수

*t ime()
-용도: 현재 시각을 timestamp값으로 구한다.
-방법: time()
 
* date()
-용도: 사용자가 지정한 형태로 시간을 표시. 특정시간의 날짜와 요일등을 배열로 리턴한다.
-방법: date("표시할 시간의 포맷형태","특정한 timestamp값")
 
* mktime()
-용도: 지정된 날짜를 timestamp값으로 변환한다.
-방법: mktime(시,분,초,월,일,년)
 
* checkdate()
-용도: 날짜와 시간이 올바른 범위 안에 있는지 검사한다.
-방법: checkdate(월,일,년)
 
* getdate()
-용도: 특정timestamp값으로 시간,요일,날짜정보를 배열로 반환한다.
-방법: getdate(timestamp값) 또는 getdate()
 
* gettimeofday()
-용도: 현재 시스템의 현재 시간 정보를 배열로 리턴한다.
-방법: gettimeofday()
 
* gmmktime()
-용도: 그리니치표준 시간으로 지정한 날짜의 timestamp값을 리턴한다.
-방법: gmmktime(시,분,초,월,일,년)
 
* strftime()
-용도: 특정한 포맷으로 날짜 정보를 출력하는데 언어를 지정할수 있다.
-방법: strftime("표시할 시간의 포맷형태","특정시간의 timestamp값")
 
* microtime()
-용도: 현재시간의 마이크로타임 값과 timestamp값을 표시한다.
-방법: microtime()
 
* localtime()
-용도: 현재 서버의 로컬 타임을 표시
-방법: localtime() 또는 localtime("timestamp값")
 
 
2. 문자열 처리함수
 
* addslashes()
-용도: 작은따옴표 큰따옴표와 같은 특정문자 앞에 역슬래시 문자를 붙인다.
-방법: addslashes()
 
* stripslashes()
-용도: allslashes로 역슬래시 처리된 문자를 원상태로 되돌린다.
-방법: stripslashes()
 
* htmlspecialchars()
-용도: HTML코드를 소스 그대로 출력해준다.
-방법: htmlspecialchars()
 
* nl2br()
-용도: 문자열에 포함된 개행 문자를 <br>태그로 모두 바꿔준다.
-방법: nl2br()
 
* echo()
-용도: 문자열 출력
-방법: echo("변수명" 또는 "문자열")
 
* sprintf()
-용도: 포맷 문자열을 통해 지정해 준 포맷으로 문자열을 표시한다.
-방법: sprintf("포맷","변수명")
 
* printf()
-용도: 지정할 수 있는 포맷에 따라 문자열을 출력한다.
-방법: printf("포맷","변수명")
 
* explode()
-용도: 문자열을 지정해준 구분자로 분리하여 배열에 저장한다.
-방법: explode("구분자","문자열인수")
 
* implode()
-용도: 구분자로 나누어 배열에 담은 문자열을 다시 지정해준 구분자로 연결하여 전체 문자열을 반환한다.
-방법: implode("구분자",배열변수명)
 
* join()
-용도: implode()와 동일한 기능을 수행한다.
-방법: join("/", "배열변수명")
 
* split()
-용도: 주어진 문자열을 정규표현식의 패턴에 따라 분리하여 배열에 저장한다.
-방법: implode("정규표현식","문자열")
 
* strcmp()
-용도: 두개의 문자열을 비교하여 참이면1, 거짓이면 0을 반환한다.
-방법: strcmp("문자열","문자열") 또는 strcmp("문자열","변수명") 또는 strcmp(변수명, 변수명)
 
* substr()
-용도: 문자열에서 특정시작 문자부터 길이만큼의 문자열을 추출하여 반환한다.
-방법: substr("문자열", 시작문자번호, 문자열의 길이)
 
* strchr()
-용도: 문자열이 처음으로 나타나는 위치부터 끝까지 반환
-방법: strchr("문자열","찾을 문자열")
 
* strstr()
-용도:strchr()함수와 동일한 수행을 한다.
-방법: strstr("문자열","찾을 문자열")
 
* strrchr()
-용도: 문자열이 마지막으로 나타나는 위치부터 끝까지 반환한다.
-방법: strrchr("문자열","찾을문자열")
 
* strpos()
-용도: 문자열 대신 처음으로 나타나는 위치를 숫자로 반환, 이때 숫자는 0부터 시작.
-방법: strpos("문자열","찾을 문자열")
 
* strrpos()
-용도: 찾고자 하는 문자열에서 마지막으로 나타나는 위치를 반환한다.
-방법: strrpos("문자열", "찾을 문자열")
 
* strlen()
-용도: 문자열의 길이를 반환한다.
-방법: strlen($변수명) 또는 strlen("문자열")
 
* strtolower()
-용도: 알파벳 대문자를 모두 소문자로 바꾸어 반환한다.
-방법: strtolower("문자열")
 
* strtoupper()
-용도: 알파벳 대문자를 소문자로 바꾸어 반환한다.
-방법: strtoupper("문자열")
 
* ucfirst()
-용도: 알파벳 문자열의 첫 글자를 대문자로 반환한다.
-방법: unfirst("문자열")
 
* ucwords()
-용도: 알파벳 문자열의 첫 글자를 대문자로 반환한다.
-방법: ucwords("문자열")
 
* strrev()
-용도: 인자로 전달한 문자열의 순서를 역전시킨다.
-방법: strrev("문자열")
 
* strtr()
-용도: 문자열에서 변경하고자 하는 문자열을 변경할문자열로 1:1 변경해준다.
-방법: strtr("문자열","변경하고자하는 문자열","변경할 문자열")
 
* str_replace()
-용도: 문자열 중에 변경하고자 하는 문자열을 찾아 변환한다.
-방법: str_replace("찾을 문자열","변경할 문자열","문자열 원본")
 
* chop()
-용도: 문자열의 뒷부분의 공백 문자를 제거한 후 반환한다.
-방법: chop("문자열")
 
* trim()
-용도: 문자열의 앞과 뒤에 있는 공백을 제거한 후 문자열을 반환한다.
-방법: trim("문자열")
 
* quotemeta()
-용도: 메타문자 앞에 역슬래시를 붙인다.
-방법: quotemeta()
 
* ord() / chr()
-용도: ord()함수는 문자열에서 첫번째 문자에 아스키코드값을 반환하고 chr()함수는 아스키함수에 해당하는 문자를 반환한다.
-방법: ord("문자열"), chr("아스키값")
 
* parse_str()
-용도: get방식과 같은 형태의 변수형을 변수와 값으로 받을 수 있게 해준다.
-방법: parse_str(변수명)
 
 
3.파일관련함수
 
* fopen()
-용도: 로컬경로의 파일이나 url경로의 파일을 읽기 모드나 쓰기 모드로 열어준다.
-방법: fopen("절대경로명/파일", "모드")또는 fopen("url주소", "모드")
 
* fclose()
-용도: fopen으로 열린 파일을 닫는다.
-방법: fclose($fp)
 
* fread()
-용도: 파일포인터가 가리키는 파일의 내용을 지정한 크기만큼 읽어 들인다.
-방법:fread($fp,"읽어들일 바이트")
 
* feof()
-용도: 현재 파일 포인터가 파일의 끝인지를 알려주는 함수
-방법: feof($fp)
 
* fgets()
-용도: 파일을 읽어올때 한줄씩 읽어온다.
-방법: fgets($fp,"읽어들일 바이트")
 
* fputs()
-용도: 파일을 a 또는 w 모드로 열어 문자열을 파일에 기록한다.
-방법: fputs($fp, "문자열")
 
* fwirte()
-용도: 파일을 기록한다.
-방법: fwrite($fp, "문자열")
 
* fpassthru()
-용도: 파일포인터의 현재 위치에서 파일의 끝까지 읽어 들이도록 한다.
-방법: fpassthru($fp)
 
* readfile()
-용도: fpassthru와 비슷하지만 fopen()없이 직접 바로 파일을 읽어들일 수 있다. 읽어들인 파일의 절대경로를 포함한다.
-방법: readfile("파일의 절대경로 또는 상대경로/파일명")
 
* fgetc()
-용도: 파일로부터 한문자를 읽어들인다.
-방법: fgetc($fp)
 
* filesize()
-용도: 파일의 크기를 바이트수로 반환한다.
-방법: filesize("파일경로/파일명")
 
* file_exists()
-용도: 파일이름으로 지정한 파일이 존재하는지 검사한다.
-방법: file_exists("파일경로/파일명")
 
* is_file()
-용도: 파일이름으로 지정한 이름이 파일면 true를 반환한다.
-방법: is_file("파일경로/파일명")
 
* is_dir()
-용도: 파일이름으로 지정한 이름이 디렉토리일경우 true를 반환한다.
-방법: is_dir("파일경로/파일명")
 
* is_link()
-용도: 파일이름으로 지정한 이름이 심볼릭 링크일경우 true를 반환한다.
-방법: is_link("파일경로/파일명")
 
* is_escutable()
-용도: 파일이름으로 지정한 파일이 실행 가능한 파일이면 true를 반환한다.
-방법: is_excutable("파일경로/파일명")
 
* is_readable()
-용도: 파일이름으로 지정한 파일이나 디렉토리가 읽기 가능한경우 true를 반환한다
-방법: is_readable("파일경로/파일명 또는 디렉토리명")
 
* is_writeable()
-용도: 파일이름으로 지정한 파일이나 디렉토리가 쓰기 가능한 경우 true를 반환한다
-방법: is_writeable("파일경로/파일명 또는 디렉토리명")
 
* copy()
-용도: 파일을 복사하고 제대로 수행이 되면 true를 반환한다.
-방법: copy("파일경로/복사할 파일명", "파일경로/복사된 파일명")
 
* rename()
-용도: 파일을 이름을 바꾼다. 제대로 수행이 되면 true를 반환한다.
-방법: rename("파일경로/변경할 파일명", "파일경로/변경후 파일명")
 
* unlink()
-용도: 파일을 삭제한다. 제대로 수행될 경우 true를 반환한다.
-방법: unlink("파일경로/삭제할 파일명")
 
* mkdir()
-용도: 디렉토리를 생상하고 동시에 권한도 함께 지정할 수 있다.
-방법: mkdir("경로/디렉토리명")
 
* rmdir()
-용도: 디렉토리 삭제
-방법: rmdir("경로/디렉토리명")
 
* basename()
-용도: 경로명과 파일명을 받아 파일명만을 반환한다.
-방법: basename("파일경로/파일명")
 
* dirname()
-용도: 경로명과 파일명을 받아 경로명만을 반환한다.
-방법: dirname("파일경로/파일명")
 
* file()
-용도: 줄단위로 읽어서 각 줄으 문자열을 배열로 하여 반환한다.
-방법: dirname("파일경로/파일명")
 
 
4.디렉토리 관련함수
 
* opendir()
-용도: 지정한 디렉토리에 대한 핸들을 얻는다.
-방법: opendir("디렉토리 경로")
 
* closedir()
-용도: opendir()함수 호출로 열어둔 디렉토리에 대한 핸들을 닫는다.
-방법: closedir($od)
 
* readdir()
-용도: 디렉토리에 있는 모든 디렉토리 및 파일들의 이름을 읽어 배열의 형태로 반환
-방법: readdir($od)
 
* rewinddir()
-용도: 디렉토리 핸들의 포인터 위치를 제일 처음으로 되돌린다.
-방법: rewinddir($od)
 
* chdir()
-용도: 지저한 디렉토리로 바꾼다.
-방법: chdir("경로명/디렉토리명")
 
* dir()
-용도: 디렉토리 관련 함수를 사용할 수 있는 클래스
-방법: dir("경로/디렉토리명")
 
 
5. URL관련함수
 
* parse_url()
-용도: url을 입력하면 해당 url에 대한 정보를 연관 배열로 저장하여 반환
-방법: parse_url("URL주소")
 
* urlencode()
-용도: 데이터를 url인코딩해준다.
-방법: urlencode("문자열")
 
* urldecode()
-용도: url을 통해 넘어온 값 중 인코딩된 문자열을 디코딩한다.
-방법: urldecode("문자열")
 
 
6.변수 및 수학 관련함수
 
* gettype()
-용도: 변수형을 반환한다.
-방법: gettype("변수명")
 
* settype()
-용도: 변수형을 변환한다.
-방법: settype("변수명", "변수타입")
 
* intval()
-용도: 변수값을 정수형 값으로 변환
-방법: intval("변수값")
 
* doubleval()
-용도: 변수값을 실수형 값으로 변환한다.
-방법: doubleval("변수값")
 
* strval()
-용도: 변수를 문자형 값으로 변환한다.
-방법: strval("변수값")
 
* isset()
-용도: 변수가 존재하는지 확인한다.
-방법: isset("변수명")
 
* unset()
-용도: 변수를 삭제한다.
-방법: unset("변수명")
 
* empty()
-용도: 변수에 값이 존재하는지 확인하여 없으면 true를 있으면 false를 반환한다.
-방법: empty("변수명")
 
* is_array()
-용도: 변수의 형이 배열인지 확인한다.
-방법: is_array("변수명")
 
* is_double()
-용도: 변수의 형이 더블형인지 확인한다.
-방법: is_double("변수명")
 
* abs()
-용도: 변수의 절대값을 반환
-방법: abs("변수명")
 
* round()
-용도: 변수의 반올림한 값을 구한다.
-방법: round("변수명")
 
* ceil()
-용도: 변수 값의 무조건 올림 값을 구한다.
-방법: ceil("변수명")
 
* floor()
-용도: 변수값의 무조건 내림 값을 구한다.
-방법: floor("변수명")
 
* pow()
-용도: 인자 값만큼 제곱승 한 값을 구한다.
-방법: pow("변수명", "제곱할 횟수")
 
* max() / min()
-용도: 최대값과 최소값을 구한다.
-방법: max("숫자값", "숫자값",...) min("숫자값", "숫자값",...)
 
 
7.기타 알아두어야 할 함수
 
* count() / sizeof()
-용도: 배열의 크기를 구한다.
-방법: count("변수명") sizeof("변수명")
 
* each() / list()
-용도: 배열의 내용을 출력할때 사용한다.
-방법: each("배열변수명"), list("배열의 인자를 받을 변수명", "배열의 인자를 받을 변수명"...)
 
* end() / next() / reset()
-용도: 현재 배열의 포인터를 끝이나 다음으로 이동시킨다. reset은 배열포인터를 다시 처음으로 되돌린다.
-방법: end("배열변수명") next("배열변수명")
 
* exec()
-용도: 리눅스 서버의 내부 명령어를 사용하게 한다.
-방법: exec("리눅스명령어", "결과를 저장할 변수명" ,"에러발생시 저장할 변수명")
 
* number_format()
-용도: 천단위마다 ","를 붙여준다.
-방법: number_format("변수명", "소수점자리수", "소수점 표시마크변경", "천단위 표시 마크변경")
 
* show_source() / highlight_string()
-용도: php파일의 소스를 보여준다.
-방법: show_source("경로명/파일명") highlight_string("변수명")
 
* uniqid()
-용도: 유일한 아이디 값을 만들어준다
-방법: uniqid()
php유동변수 만들기 이거 정말 찾았었는데 이렇게 기초적인걸 몰랐다니. ㅠ.ㅠ
$name = "yyyy";
$$name = "lee";

echo "$$name";
echo ("$yyy");

결과
$yyy
lee

세션과 쿠키에 대해 자세히 알아보는 시간을 갖어볼까 합니다.


쿠키(Cookie)란?


   쿠키는 지정된 내용을 고스란히 클라이언트(Client)측의 컴퓨터에 남겨놓아 필요시에 사용하는

   서버와의 연결고리로 쿠키라고 부르게 된 원인이 이처럼 클라이언트쪽에 과자 부스러기처럼 남아있다고

   해서 과자라는의미로 쿠키라고 부르게 되었다고 한다.


   그러나 보안에는 조금 결점이 있는데 그 이유가 추후에 사용하고자 하는 내용을 기록하게 되면

   그 내용이 고스란히 사용자의 컴퓨터(이하 클라이언트)에 남기때문이다.


   악성유저의 경우는 이를 악용하는 사례가 종종 생겨서 이방식만 있을땐 꽤 골치가 아팠었다..


   그래서 새롭게 나온 방식이 세션이라는 연결고리이며 병행하기도 한다.


 

세션(session)이란?


  세션은 쿠키(Cookie)와 다르게 지정한 정보들을 서버쪽에 남겨두고 세션정보만을 클라이언트(Client)쪽에

  남겨두어 보안성에서 조금더 나은 방식의 연결고리인것이다.


  세션과 쿠키의 차이점을 아래 그림으로 보면 이해가 빠를것이다.



 


 


   위 그림처럼 쿠키의 경우는 서버쪽에서 저장하고자 하는 데이터를 몽땅 클라이언트쪽에

   넘겨주어 저장하게 되며 필요시 저장된 데이터를 불러오는데 이때 클라이언트쪽에서

   서버쪽에 받았던 내용을 다시 전달시켜주게 됩니다..

   그렇게 되면 서버쪽에서 전달받은 내용을 가지고 여러가지 비교등을 하여 사용에 맞도록

   가공하여 사용하게되겠습니다..


  이와 반대로 세션은 서버쪽에 저장하고자 하는 데이터가 고스란히 저장되며

  저장된 세션의 고유키(구분할수 있는 문자등)만을 클라이언트쪽에 넘겨주어

  클라이언트쪽에서는 넘겨받은 값(세션의 고유키)만을 저장하게 됩니다..

  그리고 필요시에 클라이언트쪽에 세션의 고유키값을 가지고 있는 쿠키를

  불러오도록 요청하게 되는데 이때 클라이언트는 요청받은 쿠키의 내용을

  서버에 전달시켜줍니다..

  그렇게 되면 서버쪽에서는 이 값이 정상적인 값(고유키를 넘겨주었을때 전달된 내용들)인지를 확인하고

  해당 내용을 가지고 사용에 맞도록 가공하여 사용됩니다..


  위에 언급한 내용중 "고유키를 넘겨주었을때 전달된 내용들" 이라고 명시한 부분이 있는데

  여기서 말하는 내용들에는 몇가지 정보가 함축되어있습니다..

  세션을 생성시에 클라이언트쪽에 넘겨주는 내용에는 다음과 같은 내용들이 함께 전달됩니다..


  1. 본인의 세션을 구별할수 있는 고유의 키값

  2. 생성한 세션에 대한 아이디값

  3. 도메인주소

  4. 그외


 세션과 쿠키는 어떻게 사용할까?


 세션과 쿠키를 생성할때 공통점이 있습니다..

 둘다 헤더가 시작하기 전에 사용해야 한다는 공통점이 있는데


 여기서 헤더라는것은 세션이나 쿠키가 생성되기 전에 어떠한 내용이 그 앞에 존재한다면

 그것이 헤더가 됩니다..


 그러나 웹의 용어로 보면 헤더는 문서가 시작되는 첫머리가 되겠는데요..


 이 용어에 대해서는 생략하기로 하구요


 세션과 쿠키에서 의미하는 헤더는 자신들이 실행되기 전에 무언가가 출력되어있는 것에 대한

 의미를 두고 있다는것을 인지하시면 됩니다..


 쉽게 예제를 보면


ex)

 echo "룰루랄라";

 setcookie("test","하하하",0,"/);


라고 하면

  이것은 오류를 일으킵니다..


쿠키를 생성하기 전에 룰루랄라 라는 단어가 이미 출력이 되어있기때문에

오류를 일으키게 되는것입니다...


왜 오류를 일으킬까?


그 이유는 세션이나 쿠키는 자신의 일을 수행함에 있어 헤더를 수정하여 사용하기때문입니다..


수정하여 사용하여야 되는데 이미 어떤값이 출력된 상태이면 헤더가 이미 사용되었기때문에

수정이 불가능한 상태로 되버려서 수정할수가 없기때문에 오류가 생기는 거죠..


이때 발생되는 오류메세지는 아래와 같습니다..


Warning: Cannot modify header information - headers already sent by (output started at 경로/파일이름.php:라인번호) in /경로/파일이름.php on line 번호


해석하면 헤더에 정보를 수정할수 없다. 경로/파일이름.php의 라인번호에 있는 내용에 의해

이미 헤더는 전달되어져있다.


정도로 해석을 할수가 있겠네요..


그렇다면 쿠키와 세션은 어떻게 사용할까?



쿠키사용방법


쿠키는 setcookie() 라는 함수로 쿠키를 생성하거나 해제할수 있으며 $HTTP_COOKIE_VARS (구버전) 나 $_COOKIE (php 4.x 이후) 라는 예약변수를 이용해서 생성되어있는 쿠키내용을 가져올수 있습니다..


setcookie() 함수의 레퍼런스


setcookie("쿠키변수명",["내용",유지시간,"경로","도메인","보안여부","httponly"]);


쿠키변수명은 말 그대로 변수이름이며 추후 $_COOKIE["변수이름"]; 으로 호출할때 사용됩니다..


이 이후로는 옵션으로 사용하지 않아도 무방하지만 가능하면 경로까지는 설정하시는것이 좋습니다..


내용은 쿠키변수가 가지고 있을 데이터내용이며


유지시간은 이 쿠키를 얼마동안 유지시킬지를 설정하는 부분으로 기본값은 0이며 0은 브라우저가

닫히기 전까지를 의미합니다..


경로는 어느경로에서 작동할지를 설정하는것으로 "/" 로 설정시 해당 도메인의 모든 경로에서

작동될수 있습니다..


도메인은 이 쿠키를 어느 도메인에서 사용가능토록 할지를 설정하는 부분으로

설정시 이 쿠키는 설정된 도메인에서만 사용될수 있습니다..


보안여부는 https 를 이용한다면 True 로 설정하면 되며


httponly 는 http 프로토콜에서만 열람(사용)할수 있도록 할건지를 설정하는 부분으로 True 로 설정하면

http 프로토콜외엔 사용이 불가능해진다고 합니다...

본인은 경로까지만 사용하여 정확한 작동반응은 설명을 할수가 없겠네요..


쿠키를 파기(삭제 혹은 해제라고도 함)시키는 방법은 setcookie("쿠키변수명","",-1 혹은 설정한 시간만큼 빼주면 됨,"사용한 경로","도메인"...);

으로 파기시킬수 있습니다..


세션은 어떻게 사용할까?


세션은 session_start(); 라는 함수를 호출후에 session_register() 라는 함수를 이용하여

생성할수 있습니다..


세션 파기하는 방법은 변수내용을 빈값으로 전달하거나

session_destroy() 함수를 이용해서 파기시킬수 있습니다..


session_register() 의 레퍼런스는


session_register("세션변수명");


으로 세션변수는 앞에서 지정하여야 합니다..


ex)


$test = "세션내용";

session_register("test");


가 되겠네요..


이에 앞서 어떠한 헤더를 사용하기 전에 session_start(); 를 먼저 호출하여야 정상적으로

생성하고 사용할수 있겠습니다...



이상으로 세션과 쿠키에 대해 알아보았는데요..


알고보면 어려운것이 아님을 알수 있습니다..


제가 이렇게 오픈백과에 이런 내용을 올리는것은 지식인과 같은곳에서 같은 문제에 대해


많은 질문을 하시기때문에 하찮지만 이 내용으로 해결하시고 더불어 조금더 자신의 것으로

만드시길 바라면서 올려봅니다.

php 파일다운로드 소스
<?
$fileName = $_REQUEST["filePath"];
$t_name = $_REQUEST["t_name"];
$file = "/data/$fileName";

// 브라우저 골라서 헤더를 따로 따로 전송 해 준다.(5.5 일때는 다르게 해줘야 함)
if(strstr($HTTP_USER_AGENT, "MSIE 6.") or strstr($HTTP_USER_AGENT, "MSIE 5.5"))
{
 Header("Content-type: application/x-msdownload");
 header("Content-type: application/octet-stream");
 header("Cache-Control: private, must-revalidate");
 header("Pragma: no-cache");
 header("Expires: 0");
}
else
{
 header("Cache-control: private");
 header("Content-type: file/unknown");
 header('Content-Length: '.filesize("$file"));
 Header("Content-type: file/unknown");
 Header("Content-Disposition: attachment; filename=$fileName");
 Header("Content-Description: PHP5 Generated Data");
 header("Pragma: no-cache");
 header("Expires: 0");
}

if(file_exists("$file"))
{
 $fp = fopen("$file", "r");
 if(!fpassthru($fp))
 fclose($fp);
}
else
{
 echo "<script>alert('해당 파일이나 경로가 존재하지 않습니다.');history.back();</script>";
}
?>