제목 | 다른 cms 툴과 세션공유 | ||
---|---|---|---|
글쓴이 | emc | 작성시각 | 2009/10/20 20:38:35 |
|
|||
안녕하세요. 다른 cms툴과 세션을 공유하고 싶은데요. cms 밑에 ci 폴더를 놓고, 거기에서 컨트롤 할려고 합니다. cms/ci/ $this->session->userdata('test')로 취득이 안되는군요. ps. 디비세션은 사용하지 않습니다. 도움좀 구합니다. |
|||
다음글 | view의 frameset 사용 (3) | ||
이전글 | 로그인 들은 다들 어떻게 만들고 계시나요? (7) | ||
ci세상
/
2009/10/21 01:33:59 /
추천
0
|
ci세상
/
2009/10/21 09:15:07 /
추천
0
궁금증? |
emc
/
2009/10/21 09:39:12 /
추천
0
오픈소스로 된 (생php로 된) 그룹웨어를 사용하고 있구요.
커스터마이징이 필요해서 ci를 이용해서 커스터마이징 할려고 합니다. 전혀다른 시스템인데요. 같이 세션 공유를 할수 있는지에 .... 궁금하네요. ci는 하나만 설치되어있습니다. $config['cookie_path'] = "/"; 로 되어있구요. |
ci세상
/
2009/10/21 13:32:59 /
추천
0
|
emc
/
2009/10/22 08:15:13 /
추천
0
cms 에서는 다음과 같이 ..
로그인 후에 .... 세션을 저장합니다. session_regenerate_id(); $_SESSION['timestamp'] = time(); $_SESSION['accesstime'] = $_SESSION['timestamp']; $_SESSION['authorized'] = md5(__FILE__.$_SESSION['timestamp']); $_SESSION['userid'] = $data['userid']; $_SESSION['realname'] = $data['realname']; $_SESSION['group'] = $data['user_group']; $_SESSION['authority'] = $data['authority']; 왜 안되는지 이해가 안가네요. http://l-groupware.com/ 여기에서 다운받은 프로그램입니다. 다운로드는 여기에서 ..http://l-groupware.com/download/ |
ci세상
/
2009/10/22 10:39:23 /
추천
0
해당 프로그램 세션 처리 부분이 보안상 때문인지 어렵게 되어 있는것을 좀 쉽게 처리했습니다.^^
1. Authority부분에 session_name(APP_TYPE.'sid'); 제거 2. authorize 부분에 세션값만 있으면 true 처리 3. 세션생성시 session_regenerate_id 대신에 session_register 사용 <?php /* * Copyright(c) 2009 limitlink,Inc. All Rights Reserved. * http://limitlink.jp/ * 文字コード UTF-8 */ class Authority { function Authority() { session_start(); } function check() { $authorized = $this->authorize(); if ($authorized !== true) { if (basename($_SERVER['SCRIPT_NAME']) != 'login.php') { $_SESSION['referer'] = $_SERVER['REQUEST_URI']; if (!file_exists('login.php')) { $root = '../'; } header('Location:'.$root.'login.php'); exit(); } } } function authorize() { $authorized = false; if (isset($_SESSION['authorized'])) { if ($_SESSION['authorized']) { $authorized = true; } } return true; } function login() { $authorized = false; $error = array(); if ($_SERVER['REQUEST_METHOD'] == 'POST') { if (strlen($_POST['userid']) > 0) { if (preg_match('/^[-_\.a-zA-Z0-9]+$/', $_POST['userid'])) { $userid = trim($_POST['userid']); } else { $error[] = 'ユーザー名は半角英数字で入力してください。'; } if (preg_match('/^[a-zA-Z0-9]*$/', $_POST['password'])) { $password = md5(trim($_POST['password'])); } else { $error[] = 'パスワードは半角英数字で入力してください。'; } if ($userid != '' && count($error) <= 0) { $connection = new Connection; $query = sprintf("SELECT id,userid,password,realname,user_group,authority FROM %suser WHERE userid = '%s'", DB_PREFIX, $connection->quote($userid)); $data = $connection->fetchOne($query); $connection->close(); if (count($data) > 0 && $data['userid'] === $userid && $data['password'] === $password) { $authorized = true; } else { $error[] = 'ユーザー名もしくはパスワードが<br />異なります。'; } } } else { $error[] = 'ユーザー名を入力してください。'; } } elseif (isset($_SESSION['status'])) { if ($_SESSION['status'] == 'idle') { $error[] = '自動的にログアウトしました。<br />ログインしなおしてください。'; } elseif ($_SESSION['status'] == 'expire') { $error[] = 'ログインの有効期限が切れました。<br />ログインしなおしてください。'; } session_unregister('status'); } if ($authorized === true && count($error) <= 0) { session_register(); $_SESSION['timestamp'] = time(); $_SESSION['accesstime'] = $_SESSION['timestamp']; $_SESSION['authorized'] = md5(__FILE__.$_SESSION['timestamp']); $_SESSION['userid'] = $data['userid']; $_SESSION['realname'] = $data['realname']; $_SESSION['group'] = $data['user_group']; $_SESSION['authority'] = $data['authority']; if (isset($_SESSION['referer'])) { header('Location: '.$_SESSION['referer']); session_unregister('referer'); } else { header('Location: index.php'); } exit(); } else { return $error; } } function logout() { $this->sessionDestroy(); if (!file_exists('login.php')) { $root = '../'; } header('Location:'.$root.'login.php'); exit(); } function sessionDestroy() { $_SESSION = array(); if (isset($_COOKIE[session_name()])) { setcookie(session_name(), '', time() - 42000, '/'); } session_destroy(); } } ?> |
변종원(웅파)
/
2009/10/22 12:16:30 /
추천
0
흠.. 나두 참고 좀. ㅋㅋ
|
emc
/
2009/10/22 13:39:55 /
추천
0
회사에서 좀 커스터마이징 해서 써야 할것 같아서 손좀 보고 있습니다.
|
emc
/
2009/10/23 08:27:38 /
추천
0
세션수정후에... 로그인 하지 않아도 페이지에 들어와 버리네요.
새션 부분을 좀 봐야겠네요. |
ci세상
/
2009/10/23 09:07:20 /
추천
0
세션 유지시간 때문에 창을 닫고 열어도 계속 열려지는것 같습니다.^^
기존 소스에는 보니깐 시간체크를 넣어서 좀 빨리 끊어지게 해두었더라구요 authorize 이부분을 적절히 조절하거나 ~~ 창을 닫았을때 세션이 끊어지게 처리하면 좋을것 같습니다.^^ |
emc
/
2009/10/23 11:35:04 /
추천
0
authorize 펑션이 항상 true 가 리턴되고 있었네요.
아래와 같이 리턴시키면 잘 되는것 같습니다. return $authorized; |
ci세상
/
2009/10/23 11:51:50 /
추천
0
아~~ 제 실수이네요~~ 테스트한다고 true로 고정해 두었습니다. ^^
|
emc
/
2009/10/23 16:39:31 /
추천
0
ci로 접근은 가능한데요.
다른 컨트롤러로 이동이 안되네요. test 컨트롤러를 만들어서 했는데.. htdocs 루트가 표시가 되는군요. 혹시 뭔가 설정이 안맞는것일까요 |
ci세상
/
2009/10/23 17:25:42 /
추천
0
cofig.php에서 다음 base_url을 수정해 보세요
$config['base_url'] = "http://example.com/"; c:/apmsetup/htdocs/crm/ci 라면 http://127.0.0.1/crm/ci/ 까지 작성해 줘야 할것 같습니다. |
emc
/
2009/10/23 18:37:44 /
추천
0
그렇게 했는데, 안되더라구요
혹시 되나요? 저만 안되나.. ^^; |
1. 프로파일로 확장해서 세션, 디비상태 점검
http://codeigniter-kr.org/source/view/204/page/1/q/
2. Flashdata 사용유무 체크
http://codeigniter-kr.org/user_guide/libraries/sessions.html
3. cofing.php
$config['cookie_path'] = "/";