通过表单发送数据的正确方法是什么(codeigniter)
What's the correct way to send data via form (codeigniter)
register.php - 控制器
<?php
class Register extends CI_Controller {
public function index()
{
$this->load->helper('url');
$this->load->library('form_validation');
$this->load->view('header');
$this->load->view('user/register');
$this->load->view('home');
$this->load->view('footer');
$this->form_validation->set_rules('username', 'Username', 'trim|required|min_length[5]|max_length[12]');
$this->form_validation->set_rules('password', 'Password', 'trim|required|min_length[8]',
array('required' => 'You must provide a %s.')
);
$this->form_validation->set_rules('passconf', 'Password Confirmation', 'trim|required|matches[password]');
$this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email');
if ($this->form_validation->run() == FALSE) {
$this->load->view('user/register');
}
else {
header( 'Location: dashboard/lfg' ) ;
}
}
}
?>
register.php - 查看
<div id="registration" class="modalDialog">
<div>
<a href="#close" title="Close" class="close">X</a>
<h2>Create Account</h2>
<?php echo validation_errors(); ?>
<?php echo form_open('Register'); ?>
<label>Username</label>
<input type="text" name="username" value="<?php echo set_value('username'); ?>" size="50" required />
<label>Email</label>
<input type="text" name="email" value="<?php echo set_value('email'); ?>" size="50" required />
<label>Password</label>
<input type="password" name="password" value="<?php echo set_value('password'); ?>" size="50" required />
<label>Confirm Password</label>
<input type="password" name="passconf" value="<?php echo set_value('passconf'); ?>" size="50" required />
<div>
<input type="submit" value="Create Account" /></div>
</form>
<a class="modal-link" href="#login">
<p>Already have an account?</p>
</a>
</div>
registration.php - 型号
<?php
class Registration extends CI_Model{
function __construct() {
parent::__construct();
}
function form_insert($data){
// Insert data
$this->db->insert('users', $data);
}
}
?>
视图和控制器目前按原样工作。如果输入的信息正确,则格式 "submits",即。密码匹配,电子邮件有效等,但我没有编码 php 来正确地将数据发送到数据库。我可以使用 stmt 正确执行此操作,但我想使用该框架来处理与数据库有关的所有事情,因为它是内置的。
有没有人知道我需要做什么,或者可以给我示例代码,使它能够工作并将数据发送到数据库。
我已经查看了 codeigniter 文档并了解了如何设置验证规则等,但它似乎没有讨论如何将数据实际发送到数据库。
如果有人知道link,那也会很有帮助。
您必须像这样在 controller
末尾加载视图文件:
<?php
class Register extends CI_Controller {
public function index()
{
$this->load->helper('url');
$this->load->library('form_validation');
$this->form_validation->set_rules('username', 'Username', 'trim|required|min_length[5]|max_length[12]');
$this->form_validation->set_rules('password', 'Password', 'trim|required|min_length[8]',
array('required' => 'You must provide a %s.')
);
$this->form_validation->set_rules('passconf', 'Password Confirmation', 'trim|required|matches[password]');
$this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email');
if ($this->form_validation->run() == FALSE) {
$this->load->view('header');
$this->load->view('user/register');
$this->load->view('home');
$this->load->view('footer');
}else {
$data = $this->input->post();
$allowed = array('username','email','password');
$data = array_intersect_key($data,array_flip($allowed));
//$data['password'] = do_hash($data['password']); ...
$this->load->model('registration');
$this->registration->form_insert($data);
// set sessions and login data ...
redirect('dashboard/lfg');
}
}
}
You can also load helper,library and model in --construct() function only one time
<?php
class Register extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->helper('url');
$this->load->library('form_validation');
$this->load->model('registration');
}
public function index()
{
$this->form_validation->set_rules('username', 'Username','trim|required|min_length[5]|max_length[12]');
$this->form_validation->set_rules('password', 'Password', 'trim|required|min_length[8]',
array('required' => 'You must provide a %s.')
);
$this->form_validation->set_rules('passconf', 'Password Confirmation', 'trim|required|matches[password]');
$this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email');
if ($this->form_validation->run() == FALSE) {
$this->load->view('header');
$this->load->view('user/register');
$this->load->view('home');
$this->load->view('footer');
}else {
$data = $this->input->post();
$allowed = array('username','email','password');
$data = array_intersect_key($data,array_flip($allowed));
//$data['password'] = do_hash($data['password']); ...
$this->registration->form_insert($data);
// set sessions and login data ...
redirect('dashboard/lfg');
}
}
register.php - 控制器
<?php
class Register extends CI_Controller {
function __construct()
{
parent::__construct();
$this->load->model('Registration');
}
public function index()
{
$this->load->helper('url');
$this->load->library('form_validation');
$this->load->view('header');
$this->load->view('user/register');
$this->load->view('home');
$this->load->view('footer');
$this->form_validation->set_rules('username', 'Username', 'trim|required|min_length[5]|max_length[12]');
$this->form_validation->set_rules('password', 'Password', 'trim|required|min_length[8]',
array('required' => 'You must provide a %s.')
);
$this->form_validation->set_rules('passconf', 'Password Confirmation', 'trim|required|matches[password]');
$this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email');
if ($this->form_validation->run() == FALSE) {
$this->load->view('user/register');
}
else {
$data= array("username"=>$this->input->post('username'),
"password"=>$this->input->post('password'));
$this->Registration->form_insert($data);
header( 'Location: dashboard/lfg' ) ;
}
}
}
?>
register.php - 控制器
<?php
class Register extends CI_Controller {
public function index()
{
$this->load->helper('url');
$this->load->library('form_validation');
$this->load->view('header');
$this->load->view('user/register');
$this->load->view('home');
$this->load->view('footer');
$this->form_validation->set_rules('username', 'Username', 'trim|required|min_length[5]|max_length[12]');
$this->form_validation->set_rules('password', 'Password', 'trim|required|min_length[8]',
array('required' => 'You must provide a %s.')
);
$this->form_validation->set_rules('passconf', 'Password Confirmation', 'trim|required|matches[password]');
$this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email');
if ($this->form_validation->run() == FALSE) {
$this->load->view('user/register');
}
else {
header( 'Location: dashboard/lfg' ) ;
}
}
}
?>
register.php - 查看
<div id="registration" class="modalDialog">
<div>
<a href="#close" title="Close" class="close">X</a>
<h2>Create Account</h2>
<?php echo validation_errors(); ?>
<?php echo form_open('Register'); ?>
<label>Username</label>
<input type="text" name="username" value="<?php echo set_value('username'); ?>" size="50" required />
<label>Email</label>
<input type="text" name="email" value="<?php echo set_value('email'); ?>" size="50" required />
<label>Password</label>
<input type="password" name="password" value="<?php echo set_value('password'); ?>" size="50" required />
<label>Confirm Password</label>
<input type="password" name="passconf" value="<?php echo set_value('passconf'); ?>" size="50" required />
<div>
<input type="submit" value="Create Account" /></div>
</form>
<a class="modal-link" href="#login">
<p>Already have an account?</p>
</a>
</div>
registration.php - 型号
<?php
class Registration extends CI_Model{
function __construct() {
parent::__construct();
}
function form_insert($data){
// Insert data
$this->db->insert('users', $data);
}
}
?>
视图和控制器目前按原样工作。如果输入的信息正确,则格式 "submits",即。密码匹配,电子邮件有效等,但我没有编码 php 来正确地将数据发送到数据库。我可以使用 stmt 正确执行此操作,但我想使用该框架来处理与数据库有关的所有事情,因为它是内置的。
有没有人知道我需要做什么,或者可以给我示例代码,使它能够工作并将数据发送到数据库。
我已经查看了 codeigniter 文档并了解了如何设置验证规则等,但它似乎没有讨论如何将数据实际发送到数据库。
如果有人知道link,那也会很有帮助。
您必须像这样在 controller
末尾加载视图文件:
<?php
class Register extends CI_Controller {
public function index()
{
$this->load->helper('url');
$this->load->library('form_validation');
$this->form_validation->set_rules('username', 'Username', 'trim|required|min_length[5]|max_length[12]');
$this->form_validation->set_rules('password', 'Password', 'trim|required|min_length[8]',
array('required' => 'You must provide a %s.')
);
$this->form_validation->set_rules('passconf', 'Password Confirmation', 'trim|required|matches[password]');
$this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email');
if ($this->form_validation->run() == FALSE) {
$this->load->view('header');
$this->load->view('user/register');
$this->load->view('home');
$this->load->view('footer');
}else {
$data = $this->input->post();
$allowed = array('username','email','password');
$data = array_intersect_key($data,array_flip($allowed));
//$data['password'] = do_hash($data['password']); ...
$this->load->model('registration');
$this->registration->form_insert($data);
// set sessions and login data ...
redirect('dashboard/lfg');
}
}
}
You can also load helper,library and model in --construct() function only one time
<?php
class Register extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->helper('url');
$this->load->library('form_validation');
$this->load->model('registration');
}
public function index()
{
$this->form_validation->set_rules('username', 'Username','trim|required|min_length[5]|max_length[12]');
$this->form_validation->set_rules('password', 'Password', 'trim|required|min_length[8]',
array('required' => 'You must provide a %s.')
);
$this->form_validation->set_rules('passconf', 'Password Confirmation', 'trim|required|matches[password]');
$this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email');
if ($this->form_validation->run() == FALSE) {
$this->load->view('header');
$this->load->view('user/register');
$this->load->view('home');
$this->load->view('footer');
}else {
$data = $this->input->post();
$allowed = array('username','email','password');
$data = array_intersect_key($data,array_flip($allowed));
//$data['password'] = do_hash($data['password']); ...
$this->registration->form_insert($data);
// set sessions and login data ...
redirect('dashboard/lfg');
}
}
register.php - 控制器
<?php
class Register extends CI_Controller {
function __construct()
{
parent::__construct();
$this->load->model('Registration');
}
public function index()
{
$this->load->helper('url');
$this->load->library('form_validation');
$this->load->view('header');
$this->load->view('user/register');
$this->load->view('home');
$this->load->view('footer');
$this->form_validation->set_rules('username', 'Username', 'trim|required|min_length[5]|max_length[12]');
$this->form_validation->set_rules('password', 'Password', 'trim|required|min_length[8]',
array('required' => 'You must provide a %s.')
);
$this->form_validation->set_rules('passconf', 'Password Confirmation', 'trim|required|matches[password]');
$this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email');
if ($this->form_validation->run() == FALSE) {
$this->load->view('user/register');
}
else {
$data= array("username"=>$this->input->post('username'),
"password"=>$this->input->post('password'));
$this->Registration->form_insert($data);
header( 'Location: dashboard/lfg' ) ;
}
}
}
?>