[fileupload0.php]

html tag enctype="multipart/form-data" 

파일을 업로드 할때 파일속 데이타 모두 encode해서 넘겨야 원본파일을 넘길수 있다. 

그래서 enctype="multipart/form-data" 로 지정해서 넘김.

<form enctype="multipart/form-data" action="fileupload1.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="4000000" />
Send File: <input name="userfile" type="file" />
<input type="submit" value="Send File" />
</form>



[fileupload1.php]

php에서 file upload 시키는 함수는 move_uploaded_file


아래는 업로드시 에러발생했을 경우 에러 메시지를 case별로 적어봤다.

bool move_uploaded_file ( string $Filename , string $Destination )


실제 fileupload0에서 submit되면서 fileupload1으로 넘어올때.

$_FILES 에는 업로드 성공여부(temp폴더에 임시 업로드됨)가 모두 담겨 넘어온다.

그 후 temp폴더에서 "move_uploaded_file" 메소드를 이용 개발자가 정의한 폴더로 move시키는 것이다.


$_FILES info : Array

(

    [userfile] => Array

        (

            [name] => uploaded1.jpg

            [type] => image/jpeg

            [tmp_name] => C:\Windows\Temp\phpFD71.tmp

            [error] => 0

            [size] => 68985

        )

)


<?php

$uploaddir = $_SERVER['DOCUMENT_ROOT']."/admin1/test/img/";

print_r($uploadfile = $uploaddir.basename($_FILES['userfile']['name']));

echo '<pre>';
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "File was successfully uploaded.\n";
} else {
echo "FileUpload was failed.\n";
}

echo 'info:';
print_r($_FILES);
echo "<br />";

if(UPLOAD_ERR_OK !=$_FILES['userfile']['error'])
{

switch ($_FILES['userfile']['error']) {
case UPLOAD_ERR_INI_SIZE:
$message = "The uploaded file exceeds the upload_max_filesize directive in php.ini";
break;
case UPLOAD_ERR_FORM_SIZE:
$message = "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form";
break;
case UPLOAD_ERR_PARTIAL:
$message = "The uploaded file was only partially uploaded";
break;
case UPLOAD_ERR_NO_FILE:
$message = "No file was uploaded";
break;
case UPLOAD_ERR_NO_TMP_DIR:
$message = "Missing a temporary folder";
break;
case UPLOAD_ERR_CANT_WRITE:
$message = "Failed to write file to disk";
break;
case UPLOAD_ERR_EXTENSION:
$message = "File upload stopped by extension";
break;
default:
$message = "Unknown upload error";
break;
}

echo $message;

}
print "</pre>";
?>


자 이렇게 해서 fileupload0.php => fileupload1.php 순서로 실행되면 

아래의 로그를 받아볼 수 있다.

화일은 temp로 임시 저장된 후 다시 최초 지정한 경로로 옮겨간다. 

'프로그래밍 > PHP' 카테고리의 다른 글

unlink(=delete) 메소드 이용하기  (0) 2018.04.22
directory entry 읽어 파일리스트업  (0) 2018.04.20
fileupload 에러메시지 설명  (0) 2018.04.14
angularJS 사용하기  (0) 2018.04.01
json 데이타 사용하기  (0) 2018.03.28

화일 업로드 수행시 에러건에 대한 코드 설명


에러 코드는 PHP로 파일을 업로드 했을때 만들어지는 파일 배열의 error 세그먼트에서 확인할 수 있음.

예) $_FILES['userfile']['error']에서 확인할 수 있음.



UPLOAD_ERR_OK

값: 0; 오류 없이 파일 업로드가 성공했습니다.


UPLOAD_ERR_INI_SIZE

값: 1; 업로드한 파일이 php.ini upload_max_filesize 지시어보다 큽니다.



이 에러의 경우 php.ini의 아래 2곳 수정한다.


; Maximum allowed size for uploaded files.

; http://php.net/upload-max-filesize

upload_max_filesize = 40M


; Maximum size of POST data that PHP will accept.

; Its value may be 0 to disable the limit. It is ignored if POST data reading

; is disabled through enable_post_data_reading.

post_max_size = 40M



UPLOAD_ERR_FORM_SIZE

값: 2; 업로드한 파일이 HTML 폼에서 지정한 MAX_FILE_SIZE 지시어보다 큽니다.


html tag에서 max_file_size를 변경한다. 

Validation순서

first) html의 MAX_FILE_SIZE

second) php.ini 의 upload_max_filesize 

<form enctype="multipart/form-data" action="fileupload.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="200000" />
Send File: <input name="userfile" type="file" />
<input type="submit" value="Send File" />
</form>



UPLOAD_ERR_PARTIAL

값: 3; 파일이 일부분만 전송되었습니다.


UPLOAD_ERR_NO_FILE

값: 4; 파일이 전송되지 않았습니다.


UPLOAD_ERR_NO_TMP_DIR

값: 6; 임시 폴더가 없습니다. PHP 4.3.10과 PHP 5.0.3에서 추가.


UPLOAD_ERR_CANT_WRITE

값: 7; 디스크에 파일 쓰기를 실패했습니다. PHP 5.1.0에서 추가.


UPLOAD_ERR_EXTENSION

값: 8; 확장에 의해 파일 업로드가 중지되었습니다. PHP 5.2.0에서 추가.


※출처 : http://php.net/manual/kr/features.file-upload.errors.php

'프로그래밍 > PHP' 카테고리의 다른 글

directory entry 읽어 파일리스트업  (0) 2018.04.20
파일 업로드(move_uploaded_file)  (3) 2018.04.14
angularJS 사용하기  (0) 2018.04.01
json 데이타 사용하기  (0) 2018.03.28
Cookie 사용하기  (0) 2018.03.18

Session과 Cookies는 같이 적절히 사용하면 사이트 운영에 효율적임.



>>refer to : https://www.w3schools.com/php/php_cookies.asp 

Syntax

setcookie(name, value, expire, path, domain, secure, httponly);

Only the name parameter is required. All other parameters are optional.


domain 파라미터를 이용하면 해당 도메인에서만 쿠키가 적용됨.


sessionstep21.php에 cookie적용하고 sessionstep2.php open시 cookie를 화면으로 확인
sessionstep21.php 코드보기


";
var_dump($_POST);
?>

 0) {

    $snEmail =  $_POST['exampleInputEmail1'];
    $snId = "doitforyou";
    $snGroup = "MASTER";
    $snSdate = date("YmdHis");

    echo "

"; echo "세션 ID : ".session_id(); echo "
"; echo "
저장할 이메일 : ".$snEmail; echo "
저장할 ID : ".$snId; echo "
저장할 그룹 : ".$snGroup; // 세션에 저장 $_SESSION['snEmail'] = $snEmail; $_SESSION['snId'] = $snId; $_SESSION['snGroup'] = $snGroup; $_SESSION['snSdate'] = $snSdate; echo "
세션생성완료"; $cookie_name = "cnEmail"; $cookie_value = $snEmail; setcookie($cookie_name, $cookie_value, time() + (86400 * 1), "/", "doitforyou.co.kr"); // 86400 = 1 day } ?> go to the next, sessionStep2 => CLICK


doitforyou.co.kr 도메인에서 cookie 적용됨


타도메인에서는 cookie 적용안됨


'프로그래밍 > PHP' 카테고리의 다른 글

angularJS 사용하기  (0) 2018.04.01
json 데이타 사용하기  (0) 2018.03.28
Session 사용하기  (0) 2018.03.17
반응형 웹개발 admin 페이지 step1  (0) 2018.03.04
PHP Programming 해보기  (0) 2018.03.02

php Session 에 대해서 알아보자.


샘플이 되는 디자인은

https://startbootstrap.com/template-overviews/sb-admin/
를 이용하고 있습니다.



 

로그인페이지

login.html , 세션만들기 위한 front page

 

<form action="sessionstep1.php" method="POST">

          <div class="form-group">

            <label for="exampleInputEmail1">Email address</label>

            <input class="form-control" name="exampleInputEmail1" id="exampleInputEmail1" type="email" aria-describedby="emailHelp" placeholder="Enter email">

          </div>

          <div class="form-group">

            <label for="exampleInputPassword1">Password</label>

            <input class="form-control" name="exampleInputPassword1"  id="exampleInputPassword1" type="password" placeholder="Password">

          </div>

          <div class="form-group">

            <div class="form-check">

              <label class="form-check-label">

                <input class="form-check-input" type="checkbox"> Remember Password</label>

            </div>

          </div>

          <!--<a class="btn btn-primary btn-block" href="index.html">Login</a>-->

          <input type="submit" class="btn btn-primary btn-block" value="Login" />

        </form>

 

Session을 쓰는 페이지의 공통요소 session저장소, 유효시간설정등을 정의하는 페이지

includeSession.php 공통함수로 정의함 세션사용하는 페이지에서 include로 사용함.

 

<?php

// 쿠키를 적용하는 웹페이지에서 p3p 규약을 허용하는 HTTP 헤더를 추가하는 방법

header('P3P: CP="ALL CURa ADMa DEVa TAIa OUR BUS IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE LOC OTC"');

// 세션 파일을 저장할 경로 설정. 설정하지 않으면 php.ini 기본 경로에 저장.

ini_set('session.save_path',$_SERVER['DOCUMENT_ROOT']."/writtenSession");

// 세션ID 저장한 쿠키의 유효 시간 설정. 설정하지 않거나 0으로 설정하면 브라우저가 종료되면 쿠키는 파기.

ini_set('session.cookie_lifetime', 0) ;

// 세션파기 유효 시간 설정. (초단위)

ini_set('session.gc_maxlifetime', 1440);

// 서버에 저장된 세션 ID 활성화 시간.(분단위)

ini_set('session.cache_expire', 180);

// 세션 시작

session_start();

?>

 

 

sessionstep1.php

login.html page에서 post된 데이터를 이용 세션에 담기

 

<?php

include("includeSession.php");

?>

 

<?php

echo "var_dump:<br>";

var_dump($_POST);

?>

 

<?php

 

if (isset($_POST) && sizeof($_POST) > 0) {

 

    $snEmail =  $_POST['exampleInputEmail1'];

    $snId = "doitforyou";

    $snGroup = "MASTER";

    echo "<br/><br/>";

    echo "세션 ID : ".session_id();

    echo "<br/>";

    echo "<br/>저장할 이메일 : ".$snEmail;

    echo "<br/>저장할 ID : ".$snId;

    echo "<br/>저장할 그룹 : ".$snGroup;

      

   

    // 세션에 저장

    $_SESSION['snEmail'] = $snEmail;

    $_SESSION['snId'] = $snId;

    $_SESSION['snGroup'] = $snGroup;

   

    echo "<br>세션생성완료";

 

    //exit;

}

 

?>

 

<pre>

go to the next, sessionStep2 => <a href="./sessionstep2.php">CLICK</a>

</pre>

 

 

sessionstep2.php

세션에 저장된 데이터를 확인함.

<?php

include("includeSession.php");

echo "세션 ID : ".session_id();

echo "<br/>";

 

if(isset($_SESSION['snEmail']))

{

    echo "<br/>저장된 snEmail : ".$_SESSION['snEmail'];

    echo "<br/>저장된 snId : ".$_SESSION['snId'];

    echo "<br/>저장된 snGroup : ".$_SESSION['snGroup'];

}

else

{

    echo "<br/>저장된 email 존재하지 않습니다.";

}

?>

 

<pre>

go to the next, logout => <a href="./logout.php">CLICK</a>

</pre>

 

 


테스트 페이지 순서  login.html > sessionstep1.php > sessionstep2.php

적용페이지 : http://doitforyou.co.kr/admin/login.html





refer to : http://itsaessak.tistory.com/m/181  |   http://extbrain.tistory.com/m/67  |   http://egloos.zum.com/indirock/v/1497640




'프로그래밍 > PHP' 카테고리의 다른 글

angularJS 사용하기  (0) 2018.04.01
json 데이타 사용하기  (0) 2018.03.28
Cookie 사용하기  (0) 2018.03.18
반응형 웹개발 admin 페이지 step1  (0) 2018.03.04
PHP Programming 해보기  (0) 2018.03.02

반응형 웹개발 admin 페이지를 만들어 보려고 합니다.

몇 step 에서 끝날지는 모르겠습니다.

한번 해보죠.


php로 진행합니다. php는 초보지요. 이 것 왜 만들까요?

개인 연습용인데 오픈해도 될것 같아 만듭니다.

최종은 쇼핑몰입니다. 그래서 어드민 페이지 먼저 만들어요.

posting되는 글 보시고 코멘트 주시면 감사하겠습니다.



반응형 웹개발을 위해서

bootstrap디자인을 활용함.

먼저 어드민 page개발을 진행.

admin페이지는 폐쇄형 페이지로 해당 페이지들을 개발해보면서

php css를 좀 더 알게되 길

           to-do :

-     

-      쿠키

-      Paging

-      파일 업로드

 

Bootstrap free 디자인 구글링 :

https://www.google.co.kr/search?dcr=0&ei=0qObWoXXIce58QXNjK2oCA&q=bootstrap+free&oq=bootstrap+free&gs_l=psy-ab.3...27576.28308.0.29482.0.0.0.0.0.0.0.0..0.0....0...1.1.64.psy-ab..0.0.0....0.TL9d8eXHbl4

 

Template 다운로드 MIT라이센스 개인이 수정 후 배포 가능함.

3개 다운로드 함.

 

https://startbootstrap.com/template-overviews/sb-admin-2/

https://startbootstrap.com/template-overviews/sb-admin/

https://www.creative-tim.com/product/light-bootstrap-dashboard

 

 

압축풀고 해당 위치에 복사해 놓고 url로 직접 화면을 본다.




http://localhost/admin1/

http://localhost/admin2/pages/index.html

http://localhost/admin3/examples/dashboard.html

 

 

3개 템플릿 분석)

무료라 템플릿 페이지가 별게 없음. ㅋㅋ

 

디자인

분류

내용

상세

admin2

page

login

 

Dashboard

접속통계

Chart

 

Notification Panel

코멘트

메지지

서버 crash정보

신규order정보

대금 알림정보

Chat 내용

chat기능임

기능

메뉴 레벨링

 

UI Elements

 

admin1

page

login

 

Register an Account

 

Reset Password

 

Dashboard

 

Chart

 

기능

네비게이션 바 컨트롤

 

메뉴 레벨링

 

admin3

page

Dashboard

디자인은
admin1/2
보다 깔끔

User Profile

Table List

Notification Panel

 

어느 걸 할지 같이 조합해서 해볼지는 다음 posting에서

 

이제 할건 

Admin1,2,3은 호스팅 사이트에 올려놓고

Pc 웹브라우저로 1차 모니터링

모바일 브라우저로 2차 모니터링 진행.


'프로그래밍 > PHP' 카테고리의 다른 글

angularJS 사용하기  (0) 2018.04.01
json 데이타 사용하기  (0) 2018.03.28
Cookie 사용하기  (0) 2018.03.18
Session 사용하기  (0) 2018.03.17
PHP Programming 해보기  (0) 2018.03.02

 

1.    APM 설치

아파치 : httpd-2.4.27-Win64-VC15.zip

DB : mariadb-10.0.33-winx64.msi

언어 : php-7.1.7-Win32-VC14-x64.zip

DB연결 Tools : ToadforMySQL_Freeware_8.0.0.296

 

 

2.    APM setting
: apache, php
의 설정파일을 수정.

 

2.1. httpd.conf

설치된 로컬 경로로 수정.

C:\APMorg\Apache24\conf\httpd.conf 파일 편집

#######################################################

#

ServerRoot "c:/APMorg/Apache24"

 

#

DocumentRoot "c:/APMorg/Apache24/htdocs"

<Directory "c:/APMorg/Apache24/htdocs">

 

#

ScriptAlias /cgi-bin/ "c:/APMorg/Apache24/cgi-bin/"

 

<Directory "c:/APMorg/Apache24/cgi-bin">

    AllowOverride None

    Options None

    Require all granted

</Directory>

 

#--php.ini 파일을 c:\windows 폴더에 복사해 넣음(php.ini파일 편집 에서 재 확인)

 

PHPIniDir "C:/Windows"

LoadModule php7_module "C:/APMorg/php/php7apache2_4.dll"

 

#######################################################

 

2.2. php.ini

C:\APMorg\php\php.ini-development 파일 편집하여 라이브러리 사용 가능하도록 수정

 

; Directory in which the loadable extensions (modules) reside.

; http://php.net/extension-dir

extension_dir = "C:\APMorg\php\ext\"

 

;extension=php_exif.dll      ; Must be after mbstring as it depends on it

extension=php_mysqli.dll

;extension=php_pdo_firebird.dll

extension=php_pdo_mysql.dll

;extension=php_pdo_oci.dll

 

=> C:\Windows\php.ini 로 저장  

 

3.    Apache, PHP 구동확인

 

웹서버 경로 ( C:\APMorg\Apache24\htdocs ) 에서

phpinfo.php파일을 만들고

아래 script를 쳐주면

 

<?php

phpinfo();

?>

 

php가 연결된 여러 정보들이 list-up된다. 해당 정보를 잘 활용하면 환경세팅에 도움이 된다.   

   



 

4.    테스트 데이타

: Mariadb install => Database : mysql => Table : HELP_TOPIC

 

임시테이블로 생성후 진행

create table TMP_HELP as
select * from help_topic;

 

TMP_HELP 테이블 데이터로 CRUD 테스트 진행한다.

 

alter table TMP_HELP2 add PRIMARY KEY (`help_topic_id`); pk까지 생성한다.

 

 

5    프로그래밍 패턴

                   http://phpbridge.org/intro-to-php/ 를 기준으로 진행함.

            구글링 해서 찾은 강의 중에 가장 좋음.

          

            만든 결과물 : http://doitforyou.co.kr/test/public/

            


            

           

              



'프로그래밍 > PHP' 카테고리의 다른 글

angularJS 사용하기  (0) 2018.04.01
json 데이타 사용하기  (0) 2018.03.28
Cookie 사용하기  (0) 2018.03.18
Session 사용하기  (0) 2018.03.17
반응형 웹개발 admin 페이지 step1  (0) 2018.03.04

+ Recent posts