PGR21.com
- PGR21 관련된 질문 및 건의는 [건의 게시판]을 이용바랍니다.
- (2013년 3월 이전) 오래된 질문글은 [이전 질문 게시판]에 있습니다.
통합 규정을 준수해 주십시오. (2015.12.25.)
Date 2014/07/29 07:21:53
Name 포포탄
Subject [질문] codeigniter의 세션관련 질문입니다.
지난번 좋은 답변 주신분들 먼저 감사하다는 말씀 드립니다.

사이트를 하나 코딩하고 있는데, 세션관련해서 자꾸 애를 먹어서 질문을 남깁니다.

이메일과 비번을 치고 로그인을 하면 로그인이 되고 세션쿠키와 DB 모두 작성이 되는데, 컨트롤러 부분에 기입한
'nickname' => $result->nickname
을 넣으면 다이렉션한 주소로 넘어가고, 로그인 했을 때, 뷰에서 로그인 시 출력하도록 한 로그아웃 버튼이라던가 환영메세지라던가가 출력이 되지 않습니다. 그리고 화면도 로그인하지 않은 것과 같은 상태 그대로 유지되구요. 쿠키와 DB는 마찬가지로 모두 작성되는데 말이죠.

이게 또
'password' => $result->password
와 같이 로그인 시에 입력한 정보를 세션에 담으라고 코딩하면 신기하게 로그인이 잘 됩니다. -_-;


[한마디로 정리하면, 세션데이터에 로그인 시 기입하지 않은 정보를 담으려고 하면 로그인이 안되는 증상이네요. ]


하도 답답해서 교재를 보고 똑같이 페이지를 만들어서 해보는데도 안되니 미쳐버리겠네요... ㅠㅠ

차라리 오류메세지를 뿜어내면 마음이 편할텐데 말이죠...

도와주시면 감사하겠습니다.

아래는 코드의 일부입니다.

autoload.php 파일에 form헬퍼, 라이브러리에 session, database 로드해 둔 상태입니다.
이를 이용하는 다른 페이지는 또 잘 작동하는 것 보니 헬퍼나 라이브러리 로드문제는 아닌 것 같구요..


컨트롤러 부분입니다.
        public function login()
        {
                $this->load->library('form_validation');
                $this->load->helper('alert');

                $this->form_validation->set_rules('email', '이메일', 'required|valid_email');
                $this->form_validation->set_rules('password', '비밀번호', 'required');

                echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />';

                if( $this->form_validation->run() == True )
                {
                        $auth_data = array(
                                'email' => $this->input->post('email', TRUE),
                                'password' => $this->input->post('password', TRUE)
                                );

                        $result = $this->auth_m->login($auth_data);

                        if($result)
                        {
                                $newdata = array(
                                        'logged_in' => TRUE,
                                        'email' => $result->email,
                                        'nickname' => $result->nickname
                                        );

                                $this->session->set_userdata($newdata);

                                alert('로그인 되었습니다.', '/sinabro');
                                exit;
                        }
                        else
                        {
                                alert('이메일 주소나 비밀번호를 확인해 주세요.');
                                exit;
                        }
                }
                else
                {
                        $this->load->view('auth/login_v');
                }
        }



모델부분입니다.


        function login($auth)
        {
                $sql = "SELECT `email`, `nickname` FROM `users` WHERE email = '".$auth['email']."' AND password = '".$auth['password']."' ";
                $query = $this->db->query($sql);

                if( $query->num_rows() > 0 )
                {
                        return $query->row();
                } else {
                        return FALSE;
                }
        }

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
14/07/29 11:47
수정 아이콘
쿼리에 칼럼과 테이블명의 주위에 `가 들어가는게 맞는지요?
Leeroy_Jenkins
14/07/29 11:52
수정 아이콘
쿼리는 문제가 없는거같은데.. 혹시 암호를 sql password 처리 안하고 그냥 넣고 계신가요? 보통은 password('암호')로 찾는게 일반적이라..

그리고 로그인에 관련된 쿼리는 왠만하면 [email = ? and password = password(?)] 이런식으로 처리해주시고 [$query = $this->db->query($sql, array($email, $pwd)); ] 이런식으로 처리해주시는게 좋습니다. sql injection 방어가 되거든요. 뭐 꼭 로그인 아니더라도 모든 model문은 저렇게 작성해주시는게 편하고 관리하기도 좋고.. 뭐 그렇습니다.

음.. 그리고 view쪽은, 저는 왠만하면 controll쪽에선 많은 작업을 시키지 않고 view쪽은 controll에서 넘어온 데이터가지고 직접 만지는 편이라.. 예를들면 로그인 된 사람만 보여질 데이터가 있다면 view html 단에서 <? if ($this->member_id) { echo 'blahblah'; } ?> 이렇게 삽입하는 편이라 뭐라 말씀을 못드리겠네요.

아 그리고 쿼리문을 $sql = "SELECT `email`, `nickname` FROM `users` WHERE email = '".$auth['email']."' AND password = '".$auth['password']."' "; 이렇게 작성하셨는데,

$sql = "SELECT email, nickname FROM users WHERE email = ? AND password = ? "; 이렇게 작성하시는게 맞습니다. 지금보니 테이블명과 컬럼에 ' 가 붙어있는데 안쓰셔도 되요.. 아니 쓰면 안될꺼같은데-.-;; 저렇게 써본적이 없어서 모르겠네요.
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
공지 댓글잠금 [질문] 통합 규정(2019.11.8. 개정) jjohny=쿠마 19/11/08 99794
공지 [질문] [삭제예정] 카테고리가 생겼습니다. [9] 유스티스 18/05/08 120644
공지 [질문] 성인 정보를 포함하는 글에 대한 공지입니다 [38] OrBef 16/05/03 168372
공지 [질문] 19금 질문은 되도록 자제해주십시오 [8] OrBef 15/10/28 202700
공지 [질문] 통합 공지사항 + 질문 게시판 이용에 관하여. [22] 항즐이 08/07/22 252508
175961 [질문] 금투세는 일반적인 전국민 찬성률? 의견은 어떨까요? [1] LG의심장박용택154 24/04/26 154
175960 [질문] 다이어트 하시는 분들께 물어보고 싶은 증상이 있습니다. [4] 독각203 24/04/26 203
175959 [질문] 시트커버형(?) 통풍시트 쓸만 할까요? 친친나트104 24/04/26 104
175958 [질문] 맛있는 뼈치킨 추천 부탁드립니다 [9] 미카855 24/04/26 855
175957 [질문] 서울에서만 맛볼 수 있는 음식이 있을까요?(혼밥) [19] 사람되고싶다1205 24/04/26 1205
175956 [질문] 갤럭기 s8 빅스비 키 비활성화 하는법 없나요? [5] 제니885 24/04/26 885
175955 [질문] 고1 수학문제 하나 질문드립니다 [7] 파이리1042 24/04/26 1042
175954 [질문] 부산 부모님 모시고 갈만한 식당 추천 부탁드립니다. [7] 콘초1017 24/04/26 1017
175953 [질문] 자전거 안장 좀 여쭤봅니다. [1] 아케르나르603 24/04/26 603
175952 [질문] 유산소 운동후 손톱/입술이 보라색으로 변하는 현상 [11] Lord Be Goja993 24/04/26 993
175951 [질문] 분당~판교에서 출발하는 드라이브 코스 추천 부탁드립니다. [7] 버드맨709 24/04/26 709
175950 [질문] 자동차 이정도 긁힌거는 얼마정도로 합의하나요? [13] 황신강림1517 24/04/26 1517
175949 [질문] 43인치 티비 추천부탁드립니다!! [1] 언니네 이발관552 24/04/26 552
175948 [질문] 자전거 전동 펌프 질문입니다 [1] 레드드레곤~772 24/04/26 772
175947 [질문] 와우 fhd 환경에서 7500과 783d 차이가 클까요? [6] 길갈1153 24/04/25 1153
175946 [질문] 아이브 곧 나올 앨범CD를 구입하려고 합니다 [5] 서쪽으로가자1324 24/04/25 1324
175945 [질문] 중저가 유선 헤드셋 추천 부탁드립니다 [3] 요하네즈1287 24/04/25 1287
175944 [질문] PC 견적 재문의 [3] 이동파1534 24/04/25 1534
목록 이전 다음
댓글

+ : 최근 1시간내에 달린 댓글
+ : 최근 2시간내에 달린 댓글
맨 위로