フォーム検証機能を使用しています。現在、アカウントの作成時にユーザーが誤ったユーザー名とパスワードのパラメーターを入力することはできません。ただし、これはユーザーをサインアップ画面に戻すことを目的としています。代わりに、それらはホーム画面に表示されます。とにかくデータベースに入る前に使用されたユーザー名を使用するとします。
サインアップコントローラー:
class Signup extends CI_Controller {
function Signup() {
parent::__construct();
$this->load->model('membership');
}
function index() {
$this->load->view('shared/header');
$this->load->view('account/signuptitle');
$this->load->view('account/signupview');
$this->load->view('shared/footer');
}
function register() {
$this->load->helper(array('form', 'url'));
$this->load->library('form_validation');
$this->form_validation->set_rules('username', 'Username', 'required|min_length[5]|max_length[12]|trim');
$this->form_validation->set_rules('password', 'Password', 'required|md5|trim');
$this->form_validation->set_rules('username', 'Username', 'callback_usernameTaken');
$username = $this->input->post('username');
$password = $this->input->post('password');
if ($this->form_validation->run()) {
$this->membership->newUser($username, $password);
$this->session->set_userdata('status', 'OK');
$this->session->set_userdata('username', $username);
redirect('home');
}
if ($this->membership->usernameTaken($username)) {
$this->load->view('shared/header');
$this->load->view('account/signuptitle');
$this->load->view('account/signupview');
$this->load->view('shared/footer');
} else {
$this->load->view('shared/header');
$this->load->view('account/signuptitle');
$this->load->view('account/signupview');
$this->load->view('shared/footer');
}
}
}
ステートメントは特定の方法で配置する必要があると思いますif ($this->membership->usernameTaken($username))
が、それはおそらくelse ifステートメントである可能性がありますか?
メンバーシップモデル:
class Membership extends CI_Model {
function Membership() {
parent::__construct();
}
function newUser($username, $password) {
$newMember = array('username' => $username,
'password' => $password);
$insert = $this->db->insert('membership', $newMember);
}
function usernameTaken($username) {
$this->db->select('*')->from('membership')->where('username', $username);
$query = $this->db->get();
if ($query->num_rows > 0) {
return true;
} else {
return false;
}
}
もう一度助けてくれてありがとう—私はこのサイトで同様の問題を見てきましたが、私はそれらがあまりにも混乱していることに気づきました