자바스크립트로 fb API연동하여 로그인하기



그래프 API 탐색기 이용하기

url : https://developers.facebook.com/tools-and-support 



appid 에서 가져올 권한 선택추가 선택


default : id, name 

추가로 가져올 정보 : email






위 api 탐색기로 선 테스트 후 

아래처럼 javascript로 코드작성.

참고url : https://developers.facebook.com/docs/facebook-login/web#logindialog



<<html code>>


<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <title>Page Title</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<!--
reference to : https://developers.facebook.com/tools-and-support
-->
<script>
window.fbAsyncInit = function() {
FB.init({
appId : '2028791704043595',
     cookie : true, // enable cookies to allow the server to access the session
xfbml : true, // parse social plugins on this page
version : 'v3.0' // use graph api version 2.8
});
    FB.getLoginStatus(function(response) {
statusChangeCallback(response);
});
};

(function(d, s, id){
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "https://connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));

   /*
     콜백에 제공되는 response 개체에는 다음과 같은 여러 필드가 포함되어 있습니다.
    {
        status: 'connected',
        authResponse: {
            accessToken: '...',
            expiresIn:'...',
            signedRequest:'...',
            userID:'...'
        }
    }코드 복사
    status는 앱 사용자의 로그인 상태를 지정합니다. 상태는 다음 중 하나일 수 있습니다.
    connected - 사용자가 Facebook에 로그인하고 앱에 로그인했습니다.
    not_authorized - 사용자가 Facebook에는 로그인했지만 앱에는 로그인하지 않았습니다.
    unknown - 사용자가 Facebook에 로그인하지 않았으므로 사용자가 앱에 로그인했거나 FB.logout()이 호출되었는지 알 수 없어,
Facebook에 연결할 수 없습니다.
    connected 상태인 경우 authResponse가 포함되며 다음과 같이 구성되어 있습니다.
    accessToken - 앱 사용자의 액세스 토큰이 포함되어 있습니다.
    expiresIn - 토큰이 만료되어 갱신해야 하는 UNIX 시간을 표시합니다.
    signedRequest - 앱 사용자에 대한 정보를 포함하는 서명된 매개변수입니다.
    userID - 앱 사용자의 ID입니다.
    앱에서 앱 사용자의 로그인 상태를 알게 되면 다음 중 하나를 수행할 수 있습니다.
    사용자가 Facebook과 앱에 로그인한 경우 앱의 로그인된 환경으로 리디렉션됩니다.
    사용자가 앱에 로그인하지 않았거나 Facebook에 로그인하지 않은 경우 FB.login()을 사용하여 로그인 대화 상자에 메시지를
표시하거나 로그인 버튼을 표시합니다.
        */
   function statusChangeCallback(response) {
    
      console.log('statusChangeCallback');

      if (response.status === 'connected') {
        console.log(response.authResponse.accessToken);
        // Logged into your app and Facebook.
        testAPI();
      } else if (response.status === 'not_authorized') {
        document.getElementById('status').innerHTML = 'Please log ' + 'into this app.';
      } else {
        document.getElementById('status').innerHTML = 'Please log ' + 'into Facebook.';
      }

  }

function checkLoginState() {
FB.getLoginStatus(function(response) {
statusChangeCallback(response);
});
}
  
function testAPI() {
  console.log('Welcome! Fetching your information.... ');
  FB.api(
    '/me',
    {"fields":"id,name,email"},
    function(response) {
       // Insert your code here
      console.log('Successful login for: ' + response.name);

      document.getElementById('status').innerHTML = JSON.stringify(response);
    }
  );
}

function fblogout(){

  FB.logout(function(response) {
    window.location.reload();
  });
}

</script>

<fb:login-button
scope="public_profile,email"
onlogin="checkLoginState();">
</fb:login-button>

<input type="button" onclick="javascript:fblogout();" value ="로그아웃" />
<div id="status"/>

</body>
</html>


로그인페이지>>


로그인후 fb의 개인정보 받아 display



로그인은 잘 되나, 로그아웃은 아래와 같은 에러내용으로 console log를 찍고 로그아웃이 안되고 있음.

유투브 동영상등 찾아보고 진행했지만 해결못함.


Refused to display 'https://www.facebook.com/home.php' in a frame because it set 'X-Frame-Options' to 'deny'.


password 암호화 알고리즘 bcrypt


php script : 

아래 옵셥의 cost 값은 해싱의 속도를 나타낸다.

default : 10이며 값이 커질수록 해싱의 속도가 느려진다. 이는 오토 크래킹으로 부터 보안성을 높여 줄 수 있다.


<?php

/*
if (defined("CRYPT_BLOWFISH") && CRYPT_BLOWFISH)
echo "CRYPT_BLOWFISH is enabled!";
else
echo "CRYPT_BLOWFISH is not available";

*/
#첫번째 매개변수 - $password - 해시할 값(비밀번호)
#두번째 매개변수 - PASSWORD_BCRYPT - 해시에 사용될 알고리즘(PASSWORD_DEFAULT, PASSWORD_BCRYPT, ...)

$password ="tester";
$options15 = [ 'cost' => 15 ] ;
$options12 = [ 'cost' => 12 ] ;

$hashedValue = password_hash($password, PASSWORD_BCRYPT);

$hashedValueWithO12 = password_hash($password, PASSWORD_BCRYPT, $options12);
$hashedValueWithO15 = password_hash($password, PASSWORD_BCRYPT, $options15);

echo "1hashedPassword:".$hashedValue;
echo "<br>2hashedPassword:".$hashedValueWithO12;
echo "<br>3hashedPassword:".$hashedValueWithO15;

/*
if(password_verify($password, $hashedValue))
echo "<br>1true";
else
echo "<br>1false";
if(password_verify($password, $hashedValueWithO12))
echo "<br>2true";
else
echo "<br>2false<br>";

if(password_verify($password, $hashedValueWithO15))
echo "<br>3true";
else
echo "<br>3false<br>";
*/
echo "<br>1.hashedValue:";
print_r( password_get_info( $hashedValue ));

echo "<br>2.hashedValue:";
print_r( password_get_info( $hashedValueWithO12 ));

echo "<br>3.hashedValue:";
print_r( password_get_info( $hashedValueWithO15 ));

?>




cost => 10



cost => 12



cost => 15




reference to : http://dolgo.net/PHP/lecture/18


업로드된 파일을 삭제하고 싶을 때 , unlink 메소드를 사용한다.


bool unlink ( string $filename [, resource $context ] )


인수

filename : Path to the file.

반환값

성공 시 TRUE를, 실패 시 FALSE를 반환합니다.


 

php초보자로 이벤트(클릭)를 발생시키고 파일을 삭제하는 것도 쉽지 않네.

 

php에서 파일삭제 메소드를 사용하기 위해서 아래 순서대로 호출.

크게 나쁘진 않은 것 같다. 보안관련 이슈는 차후에 학습하면서 추가하면 되겠다.

 

1)    Html a tag 사용한다.

2)    A tag에 삭제파라미터 : 파일명 를 넣고 해당 페이지를 호출

3)    Php get파라미터로 대상을 받아 파일삭제 메소드 호출


>> entries.PNG 삭제 버튼을 클릭함



>>bootstrap css 적용위한 css파일 첨부

bootstrap.min.css

light-bootstrap-dashboard.css



php source : 


<?php
$dir = $_SERVER['DOCUMENT_ROOT']."/admin1/test/img/";


if ( isset ( $_GET['delete']) ) {
echo $_GET['delete'];
echo "<br>";

if ( unlink ( $dir. $_GET['delete'] ) ) {

header("Location: ./fileupload0.php");
exit;
};
}

?>

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>fileupload</title>
<!-- Fonts and icons -->
<link href="https://fonts.googleapis.com/css?family=Montserrat:400,700,200" rel="stylesheet" />
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/latest/css/font-awesome.min.css" />
<!-- CSS Files -->
<link href="../../admin3/assets/css/bootstrap.min.css" rel="stylesheet" />
<link href="../../admin3/assets/css/light-bootstrap-dashboard.css?v=2.0.1" rel="stylesheet" />

</head>
<body>
<div class="wrapper">
<div class="content">
<div class="container-fluid">
<div class="row">
<div class="col-md-6">
<div class="card card-tasks">
<div class="card-header ">
<h4 class="card-title">Uploaded File's info</h4>
<p class="card-category">files이 있는 directory의 모든 파일을 읽어 리스트업</p>
</div>
<div class="card-body ">
<div class="table-full-width">
<table class="table">
<tbody>
<?php
/**
* Description.
*
* @author: JinMyung <dcan@doitforyou.co.kr>
* @category Filesystem
* @version 1.0
*/

/* files이 있는 directory의 모든 파일을 읽어 리스트업 */
// $dir = $_SERVER['DOCUMENT_ROOT']."/admin1/test/img/";

// 핸들 획득
$handle = opendir($dir);
$files = array();
// 디렉터리에 포함된 파일을 저장한다.
while (false !== ($filename = readdir($handle))) {
if ($filename =="." || $filename =="..") {
continue;
}

// 파일인 경우만 목록에 추가한다.
if (is_file($dir . "/" . $filename)) {
$files[] = $filename;
}
}
// 핸들 해제
closedir($handle);

sort($files);

// 파일명을 출력한다.
foreach ($files as $f) {
//echo $f . "(" . round(filesize($dir . "/" . $f)/1024, 2) . " KB)" ;
$FileFullPathName = "";
$FileFullPathName = $dir . "/" . $f;
echo "<tr>";
echo "<td>".$f . "(" . round(filesize($FileFullPathName)/1024, 2) . " KB)(".date("Y-m-d H:i:s", filemtime($FileFullPathName)) .")</td>";
echo "<td class=\"td-actions text-right\">";
echo " <a href=\"?delete=". $f."\">"."<button type=\"button\" style=\"cursor:hand\" rel=\"tooltip\" title=\"Remove\" class=\"btn btn-danger btn-simple btn-link\">";
echo "<i class=\"fa fa-times\"></i>";
echo "</button></a>";
echo "</td>";
echo "</tr>";

}
?>

</tr>
</tbody>
</table>
</div>
</div>
<div class="card-footer ">
<hr>
<div class="stats">
<i class="now-ui-icons loader_refresh spin"></i>
<?php
echo "refer to : http://blog.devez.net/292 | http://php.net/manual/en/function.readdir.php";
?>
</div>
<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>

</div>
</div>
</div>
</div>
</div>
</div>
</div>

</body>
</html>


[영단어] directory entry 

           디스크에 있는 각 파일의 이름·크기·특징 등을 기재한 것

Reference url : http://dic.daum.net/search.do?q=entry



(PHP 4, PHP 5, PHP 7)

readdir — Read entry from directory handle


Description

string readdir ([ resource $dir_handle ] )

Returns the name of the next entry in the directory. The entries are returned in the order in which they are stored by the filesystem.


reference url : http://php.net/manual/en/function.readdir.php



<?php
/**
* Description.
*
* @author: JinMyung <dcan@doitforyou.co.kr>
* @category Filesystem
* @version 1.0
*/

/* files이 있는 directory의 모든 파일을 읽어 리스트업 */
echo "<pre>";
echo "<b>files이 있는 directory의 모든 파일을 읽어 리스트업</b>";
echo "<br>";

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

// 핸들 획득
$handle = opendir($dir);
$files = array();
// 디렉터리에 포함된 파일을 저장한다.
while (false !== ($filename = readdir($handle))) {
if ($filename =="." || $filename =="..") {
continue;
}

// 파일인 경우만 목록에 추가한다.
if (is_file($dir . "/" . $filename)) {
$files[] = $filename;
}
}
// 핸들 해제
closedir($handle);

sort($files);

// 파일명을 출력한다.
foreach ($files as $f) {
echo $f . "(" . round(filesize($dir . "/" . $f)/1024, 2) . " KB)" ;
echo "<br />";
}

echo "</pre>";
echo "reference url : http://blog.devez.net/292 | http://php.net/manual/en/function.readdir.php";

?>




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

php 패스워드 암호화 bcript  (0) 2018.05.02
unlink(=delete) 메소드 이용하기  (0) 2018.04.22
directory entry 읽어 파일리스트업  (0) 2018.04.20
파일 업로드(move_uploaded_file)  (0) 2018.04.14
fileupload 에러메시지 설명  (0) 2018.04.14
angularJS 사용하기  (0) 2018.04.01

[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
파일 업로드(move_uploaded_file)  (0) 2018.04.14
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)  (0) 2018.04.14
fileupload 에러메시지 설명  (0) 2018.04.14
angularJS 사용하기  (0) 2018.04.01
json 데이타 사용하기  (0) 2018.03.28
Cookie 사용하기  (0) 2018.03.18

DB를 핸들링하는 server-side 언어, php

반응형웹페이지디자인 : bootstrap

자바스크립트기반 웹어플리케이션 프레임웍 : angularjs

이것 3개 조합해서 웹페이지 만들기.


xmlhttp, ajax, jquery등 다양한 스크립트 형식의 모듈들이 많이 있었지만.

angularjs는 MVC패턴의 자바스크립트 프로그램방식으로 진행된다.

자바스크립트로 진행되지만 스크립트 같지 않은 아주 다양한 기능과 표준화, 개인생각임.. ㅋㅋ

모바일 웹앱만들때 가장 좋은것 같다.


angularjs를 적용한 html 페이지소스.




<html lang="en" ng-app="myApp">
<head>
...
 

        
Full Name: {{firstName + " " + lastName}}

Calc using AngularJs, expression: {{ 5 + 5 }}

{{ y.help_topic_id }} : {{ y.name }}
… /*angularjs 스크립트 적용부분은 웹페이지 맨 하단에 적용*/




angularjs 문법이 궁금하면, https://www.w3schools.com/angular/default.asp

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

파일 업로드(move_uploaded_file)  (0) 2018.04.14
fileupload 에러메시지 설명  (0) 2018.04.14
angularJS 사용하기  (0) 2018.04.01
json 데이타 사용하기  (0) 2018.03.28
Cookie 사용하기  (0) 2018.03.18
Session 사용하기  (0) 2018.03.17


json 데이타 사용하기

refer to : https://www.w3schools.com/js/js_json_php.asp


JSON type 을 이용해서 data 송수신하려 함.
PHP에서 제공하는 함수 json_encode/json_decode 사용
 


아래는 Database를 이용한 예제로 fetch후 data를 json_encode() 하여 화면에 뿌린것이다.



vJsonData1.php
getSomeTopics();

echo "{\"Table\":". json_encode($topics)."}";
?>
TopicData.php
    public function getSomeTopics()
    {
        $query = $this->connection->prepare("SELECT help_topic_id, name FROM TMP_help order by help_topic_id desc  limit 10 ");
        $query->execute();

        //return $query;

        return $query->fetchAll(\PDO::FETCH_ASSOC);
        
    }





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

fileupload 에러메시지 설명  (0) 2018.04.14
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

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
Cookie 사용하기  (0) 2018.03.18
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
Session 사용하기  (0) 2018.03.17
반응형 웹개발 admin 페이지 step1  (0) 2018.03.04
PHP Programming 해보기  (0) 2018.03.02

+ Recent posts