| 제목 | 300페이지 sns프로젝트 질문입니다. | ||
|---|---|---|---|
| 글쓴이 | 책상다리 | 작성시각 | 2013/11/06 11:15:51 |
|
|
|||
|
게시판 만들기 끝내고, sns프로젝트로 넘어왔는데요. 업로드 기능 만들기에서, controlls.php 와 sns_m.php, upload_photo_v.php만들어서 사진 업로드하고 쓰기 부분 만들어 주려고 하고 있습니다. 그런데 책 313페이지에서 보면 localhost/sns/controlls 로 접속해서 로그인 후에 쓰기화면 접속이라고 나와있는데요. controlls.php쪽 소스를 보면 로그인 되있지 않을경우 document.location = '/sns/auth/login/' 이쪽으로 넘어가게 되어있는데요. 위의 주소를 치면 로그인 후 작성하세요 애러 메세지 발생 후 404 page not found 가 뜹니다;;; localhost/sns/auth/login/ 주소는 이렇구요.. C:\xampp\htdocs\sns\application\views\ 이 경로 안에 헤더와 풋터 넣어놨구요. C:\xampp\htdocs\sns\application\views\auth 이 경로 안에 login_v.php 파일 있습니다. 아래에 controlls.php 첨부하겠습니다. 어제부터 이것저것 바꿔보고 하는데도 해결이 안되네요 ㅠ 부탁드립니다 ㅠ 아 index.php 는 .htaccess 와 컨피그 파일 수정으로 정상적으로 생략가능하게 되있습니다.
<?php if ( ! defined('BASEPATH')) exit ('No direct script access allowed');
class Controlls extends CI_Controller {
function __construct()
{
parent::__construct();
$this->load->model('sns_m');
$this->load->helper(array('form','date','url'));
$this->load->database();
$this->load->library('session');
echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />';
}
public function _remap($method)
{
$this->load->view('header_V');
if( method_exists($this, $method) )
{
$this->{"{$method}"}();
}
$this->load->view('footer_v');
}
public function index()
{
$this->upload_photo();
}
function upload_photo()
{
if(@$this->session->userdata['logged_in'] == TRUE )
{
//폼 검증 라이브러리 로드
$this->load->library('form_validation');
//폼 검증할 필드와 규칙 사전 정의
$this->form_validation->set_rules('subject','제목','required');
$this->form_validation->set_rules('contents','내용','required');
if( $this->form_validation->run() == FALSE )
{
$this->load->view('upload_photo_v');
}
else
{
$config = array(
'upload_path' => 'uploads/',
'allowed_types' => 'gif|jpg|png',
'encrypt_name' => TRUE,
'max_size' => '1000'
);
$this->load->library('upload',$config);
if(!$this->upload->do_upload())
{
$data['error'] = $this->upload->display_errors();
$this->load->view('upload_photo_v',$data);
}
else
{
$upload_data = $this->upload->data();
$upload_data['subject'] = $this->input->post('subject',true);
$upload_data['contents'] = $this->input->post('contents',true);
$upload_data['user_id'] = $this->session->userdata[('username')];
$result = $this->sns_m->insert_sns($upload_data);
redirect('/controlls/lists'); exit;
//페이스북 전송
if($result)
{
//sns 라이브러리 로드
$this->load->library('sns');
$this->facebook = $this->sns->facebook();
$this->facebook->setCallback(site_url('upload_photo/facebook_upload/'.$result));
if(!$this->facebook->isLoggedIn())
{
$this->facebook->login();
}
}
else
{
echo "<script> alert('입력실패했습니다.');</script>";
redirect('/controlls/upload_photo');
}
}
}
}
else
{
echo "<script>alert('로그인 후 작성하세요');
document.location = '/sns/auth/login/';
</script>";
exit;
}
}
function facebook_upload()
{
//글 정보 가져오기
$id = $this->uri->segment(3);
$result = $this->sns_m->get_sns($id);
//앨범 업로드
$this->facebook->uploadPhoto($result['contents'], $result['file_path'].$result['file_name'],'');
redirect('/cotrolls/lists');
}
function lists()
{
//검색어 초기화
$search_word = '';
//주소중에서 q(검색어) 세그먼트가 있는지 검사하기 위해 주소를 배열로 변환
$uri_array = array_values($this->uri->segment_array());
if( in_array('q', $uri_array) ) {
//주소에 검색어가 있을 경우의 처리. 즉 검색시
$search_word = urldecode($this->url_explode($uri_array, 'q'));
}
$data['list'] = $this->sns_m->get_sns_list('sns_files', '', 0, 6, $search_word);
if( BROWSER_TYPE == 'M' )
{
$this->load->view('mobile_lists_v', $data);
}
else
{
$this->load->view('lists_v', $data);
}
}
/**
* sns 보기
*/
function view()
{
$id = $this->uri->segment(3);
//게시물 가져오기
$data['views'] = $this->sns_m->get_view($id);
//댓글 리스트 가져오기
$data['comment_list'] = $this->sns_m->get_comment($id);
//view 호출
if( BROWSER_TYPE == 'M' )
{
$this->load->view('mobile_view_v', $data);
}
else
{
$this->load->view('view_v', $data);
}
}
/**
* 게시물 삭제
*/
function delete()
{
//경고창 헬퍼 로딩
$this->load->helper('alert');
if( @$this->session->userdata('logged_in') == TRUE )
{
//삭제하려는 글의 작성자가 본인인지 검증
$board_id = $this->uri->segment(3);
$writer_id = $this->sns_m->writer_check($board_id);
if( $writer_id->user_id != $this->session->userdata('username') )
{
alert('본인이 작성한 글이 아닙니다.', '/sns/controlls/view/'.$this->uri->segment(3).'/page/'.$this->uri->segment(5));
exit;
}
//게시물 번호에 해당하는 게시물 삭제
$return = $this->sns_m->delete_content($this->uri->segment(3));
//게시물 목록으로 돌아가기
if ( $return )
{
//삭제가 성공한 경우
alert('삭제되었습니다.', '/sns/controlls/lists/page/'.$this->uri->segment(5));
exit;
}
else
{
//삭제가 실패한 경우
alert('삭제 실패하였습니다.', '/sns/controlls/view/'.$this->uri->segment(3).'/page/'.$this->uri->segment(5));
exit;
}
}
else
{
alert('로그인후 삭제하세요', '/sns/auth/login/');
exit;
}
}
function modify_photo()
{
//경고창 헬퍼 로딩
$this->load->helper('alert');
//주소 중에서 page 세그먼트가 있는지 검사하기 위해 주소를 배열로 변환
$uri_array = array_values($this->uri->segment_array());
if( in_array('page',$uri_array) )
{
$pages = urldecode($this->url_explode($uri_array, 'page'));
}
else
{
$pages = 1;
}
if( @$this->session->userdata('logged_in') == TRUE )
{
$id = $this->uri->segment(3);
//수정하려는 글의 작성자가 본인인지 검증
$writer_id = $this->sns_m->writer_check($id);
if( $writer_id->user_id != $this->session->userdata('username') )
{
alert('본인이 작성한 글이 아닙니다.','/sns/controlls/view/'.$id.'/page/'.$pages);
exit;
}
//폼 검증 라이브러리 로드
$this->load->library('form_validation');
//폼 검증할 필드와 규칙 사전 정의
$this->form_validation->set_rules('subject','제목','required');
$this->form_validation->set_rules('contents','내용','required');
if ( $this->form_validation->run() == TRUE )
{
if ( !$this->input->post('subject',TRUE) AND !$this->input->post('contents',TRUE) )
{
//글 내용이 없을 경우, 프로그램 단에서 한번 더 체크
alert('비정상적인 접근입니다.','/sns/controlls/lists/page/'.$pages);
exit;
}
if($_FILES) //수정할 파일이 있다면
{
//upload 실행
$config = array(
'upload_path' => 'uploads/',
'allowed_types' => 'gif|jpg|png',
'encrypt_name' => TRUE,
'max_size' => '1000'
);
$this->load->library('upload',$config);
if(!$this->upload->do_upload())
{
$data['error'] = $this->upload->display_errors();
$this->load->view('modify_photo_v',$data);
}
else
{
$upload_data = $this->upload->data();
if($upload_data['image_width'] > 300)
{
//이미지 리사이즈, 파일명_thumb.확장자 형태로 섬네일 생성
$config['image_library'] = 'gd2';
$config['source_image'] = $upload_data['full_path'];
$config['create_thumb'] = TRUE;
$config['maintain_ratio'] = TRUE;
$config['width'] = 300;
$config['hight'] = 300;
$this->load->library('image_lib',$config);
$this->image_lib->resize();
}
}
}
else
{
$upload_data = array();
}
//수정할 데이터 정리
$upload_data['subject'] = $this->input->post('subject',true);
$upload_data['contents'] = $this->input->post('contents',true);
$upload_data['user_id'] = $this->session->userdata('username');
$upload_data['id'] = $id;
$result = $this->sns_m->update_sns($upload_data);
redirect('/controlls/lists'); exit;
//페이스북 전송
if($result)
{
//sns 라이브러리 로드
$this->load->library('sns');
$this->facebook = $this->sns->facebook();
$this->facebook->setCallback(site_url('upload_photo/facebook_upload/'.$result));
if(!$this->facebook->isLoggedIn())
{
$this->facebook->login();
}
}
else
{
echo "<script> alert('입력 실패했습니다.'); </script>";
redirect('/controlls/upload_photo');
}
if ($result)
{
//글 작성 성공 시 게시판 목록으로
alert('수정되었습니다.','/sns/controlls/lists/page/'.$pages);
exit;
}
else
{
//글 수정 실패 시 글 내용으로
alert('다시 수정해 주세요.','/sns/controlls/view/'.$id.'/page/'.$this->uri->segment(5));
exit;
}
}
else
{
//게시물 내용 가져오기
$data['views'] = $this->sns_m->get_view($id);
//쓰기 폼 뷰 호출
$this->load->view('modify_photo_v',$data);
}
}
else
{
alert('로그인 후 수정하세요','/sns/auth/login/');
exit;
}
}
function url_explode($url, $key)
{
$cnt = count($url);
for($i=0; $cnt>$i; $i++ )
{
if($url[$i] ==$key)
{
$k = $i+1;
return $url[$k];
}
}
}
}
|
|||
| 다음글 | 세션관련 질문입니다. (4) | ||
| 이전글 | p203 세션 로드 후 게시판에서 보안키를 요구하네요 (4) | ||
|
책상다리
/
2013/11/06 13:14:26 /
추천
0
|
|
변종원(웅파)
/
2013/11/06 14:14:42 /
추천
0
네. 답변 올리러 들어왔는데 자답이 있네요.
404는 파일이 없다는 에러입니다. not found ci에서 주소가 컨트롤러와 메소드(함수)와 연결되는 걸 아실테니 다음부터는 해당 파일이 있는지 살펴보세요. |
이상하네요..ㅠㅠ bbs에서 통째로 가져왔는데..ㅠㅠ