$_FILES의 error가 2번이 나오는데 왜 그러냐는 질문을 오늘 받았습니다.
그래서 메뉴얼을 살펴 본 결과...
html에서도 max file size를 제어할 수 있다는 것을 알았습니다. ^^

html 폼 안에 hidden으로 다음과 같이 넣어주면 됩니다.


<form enctype="multipart/form-data" action="_URL_" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
이 파일을 전송합니다: <input name="userfile" type="file" />
<input type="submit" value="파일 전송" />
</form>


여기서

<input type="hidden" name="MAX_FILE_SIZE" value="30000" />

이 부분이 중요합니다.
요기에다 업로드 max value(M*1024)를 적어 주시면 됩니다.
그러면 서버측에서 에러 메세지($_FILES['userfile']['error'])가 2로 나오거나... php 4.3.0 이상에서는 UPLOAD_ERR_FORM_SIZE 라고 나옵니다.

메뉴얼에는 다음과 같이 나오네요

"MAX_FILE_SIZE는 PHP가 확인하기도 하지만, 브라우저에 대한 권고입니다. 이 값을 변경하는건 매우간단하기에, 크기가 큰 파일을 막기 위해서는 이 기능에 의존해서는 안됩니다. 대신, 최대 크기에 관한 PHP 설정은 속일 수없습니다. 그러나 MAX_FILE_SIZE 폼 변수는 사용자가 파일이 너무 크다는 것을 파악하기 위해서 실제 전송을 하는 동안기다릴 필요를 없애줍니다.

"사용자가 파일이 너무 크다는 것을 파악하기 위해서 실제 전송을 하는 동안 기다릴 필요를 없애줍니다" 라는 말뜻을 정확히 못알아 들어서 직접 테스트 해 보니...
MAX_FILE_SIZE까지만 올리고.. 그 이상 더 업로드가 되면 중지하는 거 같습니다. ^^
업로드 하기 전에 체크 해 주면 더 좋을 텐데요 ^^;;
어째든... 오늘 새로운 것을 알게 되었습니다. ^^

WRITTEN BY
체리필터
프로그램 그리고 인생...

받은 트랙백이 없고 , 댓글이 없습니다.
secret
window open을 할 때 똑같은 사이즈를 줘도,
sp2에서 팝업창 아래 상태바가 있는 경우와 그외의 os에서 상태바가 없는 경우 창 안의 내용들이 달라 보이는 경우가 있다.

또한 앞으로 나올 IE7의 경우에는 창 상단에 주소까지 나와서 많이 틀려보이는 경우가 발생한다.

이때 다음과 같은 스크립트를 사용하여 onload에 넣어주면, 상당히 깔끔한 window resize가 된다.




cf) Dwidth, Dheight를 제대로 못 알아오는 경우가 발생할 때에는...
적당히 조절 해서 해당 수치를 그대로 넣어주는 수 밖에 없는 듯 하다.

special thanks - 행복한고니님... 귀찮게 질문 드려 알아냈습니다 ㅋ

WRITTEN BY
체리필터
프로그램 그리고 인생...

받은 트랙백이 없고 , 댓글  2개가 달렸습니다.
  1. 좋은 정보 감사드립니다.
    두고두고 참고해서 보려고 제 블로그에 출처 표기한 이후에 스크립트 부분만 데리고 갔습니다(__)

    혹시라도 삭제를 원하시면 이 글의 댓글이나 http://databook.tistory.com/11 여기에 댓글을 달아주시면 바로 조치를 취하도록 하겠습니다.

    좋은 정보 감사드립니다. 덕분에 살았습니다 ^^;
secret
객체를 만들어 사용하다가 객체의 개수를 object.length로 못 알아 온다는 것을 알고... -.-;;
이 역시 고니님께 물어봤다...
팁 겸... 자료 백업 겸... 올려본다 ㅋ


WRITTEN BY
체리필터
프로그램 그리고 인생...

받은 트랙백이 없고 , 댓글이 없습니다.
secret
phpschool의 피곤해 님이 올리신 팁입니다.

***************************************************************************

팁란에 이클립스에서 콘솔상에서 php 실행하는거 보고.. 괜찮다 싶어 적어봅니다.
그래서 에디터플러스에서도 콘솔상으로 출력하는거 적어 봅니다.
큰 팁은 아니지만.. 생각치 못한 분들을 위해..

우선 php.exe 파일이 있어야 윈도우상에서 콘솔로 실행이 가능합니다.
php.net에서 윈도우용 php를 다운 받아서 설치합니다.

그리고 에디터 플러스의 사용자 도구 구성에다 php.exe의 경로를 잡아줍니다.
명령에는 php.exe 파일의 경로를, 인수에는 파일이름, 디렉토리에는 파일디렉토리를 선택해 줍니다.


그리고 아래는 hello world를 콘솔상에서 찍은 겁니다.


에러를 출력하는 화면.. html 태그가 같이 붙어서 출력하는거 말곤.. 괜찮네요..


그럼 왜 콘솔상에서 출력을 하는 것일까??
웹상에서 보면 되지..이런 분이 계실 거라 생각합니다.
php가 웹용에 주로 쓰이다 보니.. 브라우저상에서 확인을 해야 하지만..
class로 생성된 라이브러리(?)나 리턴값을 던지는 함수를 테스트할때 유용할것 같습니다.
ftp로 파일 올리고, 브라우저 띄워서 확인하는 것보다..
코딩후 임의의 데이타를 입력후 에러나 결과값을 테스트하기에 편할거라 생각이 됩니다.
(html과 같이 출력되는 것은 보기에 그렇고, 결과값을 리턴해 주는 함수를 테스트 해 보는데 좋을것 같습니다.)

아래는 time stamp를 date로 찍어주는 클래스를 테스트로 돌린겁니다.




WRITTEN BY
체리필터
프로그램 그리고 인생...

받은 트랙백이 없고 , 댓글이 없습니다.
secret
회사에서 특정 내용을 클립보드에 복사하는 기능을 만들 필요가 있었는데...
그동안 파폭은 지원이 안된다는 단정하에, 익스에서만 돌아가도록 만들었었다.
그런데 혹시나 하는 맘에 구글링 해 보았더니...
다음과 같은 팁이 나오더라... ㅋ
무단 펌질이라서 -.-;;

##### 펌 내용 시작...

<input type="button" onclick='return copy_clip("클립보드로 복사했습니다.")'> 혹은, MT에선
<input type="button" onclick='return copy_clip("<$MTEntryTrackbackLink$>")'>

무버블타입의 경우 아래의 스크립트를 바로 해당 아카이브 템플릿의 <head>태그 사이에 복사해 넣지 말고, Template Modules 섹션에서 clipboard라는 이름으로 템플릿 모듈을 만든 후에,
적용할 아카이브 템플릿의 <head> 태그 안에서 <MTInclude module="clipboard"> 식으로 사용하는게 낫다. 블록을 오래 운용하다보면 당연히 이런 저런 자바스크립트 모듈을 덧붙이게 되는데 그럴 때 마다 한 메인 아카이브 템플릿에다 복사해 넣는다면 차후 수정시에 곤란을 겪기 쉽다.


<script language="javascript" type="text/javascript">
<!--
function copy_clip(meintext){
if (window.clipboardData)
{

// the IE-manier
window.clipboardData.setData("Text", meintext);

// waarschijnlijk niet de beste manier om Moz/NS te detecteren;
// het is mij echter onbekend vanaf welke versie dit precies werkt:
}
else if (window.netscape)
{

// dit is belangrijk maar staat nergens duidelijk vermeld:
// you have to sign the code to enable this, or see notes below
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');

// maak een interface naar het clipboard
var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
if (!clip) return;

// maak een transferable
var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
if (!trans) return;

// specificeer wat voor soort data we op willen halen; text in dit geval
trans.addDataFlavor('text/unicode');

// om de data uit de transferable te halen hebben we 2 nieuwe objecten nodig om het in op te slaan
var str = new Object();
var len = new Object();

var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);

var copytext=meintext;

str.data=copytext;

trans.setTransferData("text/unicode",str,copytext.length*2);

var clipid=Components.interfaces.nsIClipboard;

if (!clip) return false;

clip.setData(trans,null,clipid.kGlobalClipboard);

}
alert("반갑습니다.\n" + meintext);
return false;
}
//-->
</script>

가능하면 해석 불가한 주석이라도 지우지 말고 사용하는게 좋을 것 같다.



모 질라, 파이어폭스는 보안이 강화되어서 자바스크립트라 하더라도 그 내용에 따라 기존의 Active-X컨트롤처럼 일종의 권한 허가를 받아야 가능하다고 한다. 이 스크립트의 경우 시스템의 클립보드에 접근하는 것이라 그런지, 이를 실행시키려 하면 시스템 보안에 관한 창이 뜨면서 권한 허가 여부를 묻는다. 당연히 "예" 를 눌러야 복사가 될 것이다.

위 루틴은 복사한 후에 확인창(alert창)을 띄워 주는데 혹 이런 창이 안뜨고 복사만 된다 던지 혹은 정상적인 작동이 안된다 싶을 경우엔, 브라우져의 주소창에 about:config 를 치면 해당 설정 내용이 쭉 나타나는데 그 중에서 Signed.applets.codebase_principal_support 라는 부분을 찾아서 true로 바꿔주면 문제없이 작동할 것이다.


##### 펌 내용 끝...

WRITTEN BY
체리필터
프로그램 그리고 인생...

받은 트랙백이 없고 , 댓글  2개가 달렸습니다.
  1. 위 코드를 사용해보았는데 마찬가지로 파이어폭스에서 동작을 하지 않네요.
    시간이 많이 지난 포스트인데.. 혹시 해결하셨나요?
    • 잘 되던데요 ^^;;
      지금은 잘 모르겠네요. 그당시에는 잘 됬었습니다.
      위 내용에 나와 있다 시피 about:config를 주소창에 넣고 해당 내용을 설정해 주어야 하는 단점은 있습니다.
secret
[CODE] function addNumbers(x, y){   if (arguments.length == addNumbers.length) {       return (x + y);   }   else       return 0; }[/CODE]

ex)
addNumbers(3,4,5)  // returns 0
addNumbers(3,4)    // returns 7
addNumbers(103,104) // returns 207

arguments.length는... 실제 넘어온 인자 개수를
함수명.length는 함수에서 정의 한 인자 개수를 반환합니다.
두개를 비교해서 같은 경우에만 실행 시키면 되겠네요 ㅋ

제가 만든 팁은 아니구 모질라 디벨롭 센터에서 퍼 왔습니다 ^^

WRITTEN BY
체리필터
프로그램 그리고 인생...

받은 트랙백이 없고 , 댓글이 없습니다.
secret