kaz
okui****@sanne*****
2009年 5月 17日 (日) 22:34:48 JST
こんばんは、kazです。
ユーザ認証についてご教授お願いします。
delete_file/index/ファイル名にアクセスしたらログイン画面になってログインしたらtrashにコピーしてrecording_fileのレコードを削除したいのですが、なぜかログイン画面に遷移する前にtrashにレコードをコピーしてしまってます。
どこが悪いのか何回も見直してるんですがわからず、煮詰まってます。
なにかヒントなど頂けないでしょうか?
controllers/recording_list/delete_file.php
<?php
class Delete_file extends MY_Controller
{
function Delete_file()
{
parent::MY_Controller();
}
function index($file)
{
//echo $file;exit;
$query = $this->db->query("SELECT * FROM recording_file where file='$file'");
$row = $query->row();
$data = array('delete_date' => date('Y-m-d-H:i:s',time()),
'date' => $row->date,
'station' => $row->station,
'station_code' => $row->station_code,
'location' => $row->location,
'file' => $row->file,
'program' => $row->program,
'title' => $row->title,
'info' => $row->info,
'tuner' => $row->tuner
);
$this->db->insert('trash', $data); //trashにデータコピー
// $this->db->delete('recording_file', array('file' => $file));
// redirect('auth/auth/logout');
}
}
?>
libraries/MY_Controller.php
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class MY_Controller extends Controller
{
function MY_Controller()
{
parent::Controller();
$this->load->library('session');
//login check
if($this->session->userdata('is_login') != TRUE)
{
//redirect page check
if(!$this->session->userdata('next'))
{
$newdata = array(
'next' => $this->uri->segment(2),
'file' => $this->uri->segment(4)
);
$this->session->set_userdata($newdata);
}
header("Location:".$this->config->item('base_url')."index.php/auth/auth/login");
}
}
}
?>
controllers/auth/auth.php
<?php
class Auth extends Controller
{
var $user_table = 'users'; //管理者情報のDBテーブル名
function Auth()
{
parent::Controller();
$this->load->library(array('session', 'validation'));
}
function index()
{
$data['username'] = "";
$data['password'] = "";
$this->load->view('auth/login_form_view', $data);
}
function login()
{
//after login
if($this->session->userdata('is_login') == TRUE)
{
$next = $this->session->userdata('next');
$file = $this->session->userdata('file');
//echo $next;echo $file;exit;
redirect($next.'/index/'.$file);
}
//before login
$username = $this->input->post('username');
$password = $this->input->post('password');
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$cancel = $this->input->post('cancel');
}
//validation rules
$rules['username'] = "trim|required";
$rules['password'] = "trim|required";
$this->validation->set_rules($rules);
//validation check
$data['page_title'] = "login";
$data['title'] = "ログイン";
if ($this->validation->run() == TRUE)
{
//login check
if ($this->_db_check($username, $password))
{
if (isset($cancel) and $cancel == "CANCEL")
{
redirect('');
} else {
//login OK
$next = $this->session->userdata('next');
$file = $this->session->userdata('file');
$this->session->sess_destroy();
$this->session->sess_create();
$this->session->set_userdata(array('is_login' => TRUE));
$this->session->set_userdata(array('username' => $username));
redirect('recording_list/'.$next.'/index/'.$file);
}
//redirect($next);
}
else
{
if (isset($cancel) and $cancel == "CANCEL")
{
redirect('');
} else {
//login NG
$data['username'] = "";
$data['password'] = "";
$this->load->view('auth/login_form_view', $data);
}
}
} else {
//validation error or first access
if (isset($cancel) and $cancel == "CANCEL")
{
redirect('');
} else {
$data['username'] = $username;
$data['password'] = $password;
$this->load->view('auth/login_form_view', $data);
}
}
}
function logout()
{
$this->session->sess_destroy();
redirect('');
}
function _db_check($username = '', $password = '')
{
$this->db->where('username', $username);
$query = $this->db->get('users');
if (0 < $query->num_rows())
{
$row = $query->row_array();
if(md5($password) == $row['password'])
{
return TRUE;
}
else
{
return FALSE;
}
}
else
{
return FALSE;
}
}
}
?>