【发布时间】:2014-01-31 20:19:09
【问题描述】:
设置表单的 "method" 属性 为我解决了这个问题,一切都很好地提交到数据库,现在,我的验证凭据有类似的问题,但它可能与这个问题,因为我一开始忘记了方法,非常感谢大家。
我在尝试学习 CodeIgniter 和一般 MVC 原则时遇到问题。
我有一个注册表单视图
<div class="container">
<form class="form-horizontal" style="width:500px;" action="sign_up">
<fieldset>
<!-- Form Name -->
<legend>Sign Up</legend>
<!-- Text input-->
<div class="control-group">
<label class="control-label" for="username">Username</label>
<div class="controls">
<input id="username" name="username" placeholder="Username" class="input-xlarge" required="" type="text">
<p class="help-block">Your username</p>
</div>
</div>
<!-- Text input-->
<div class="control-group">
<label class="control-label" for="email_address">Email</label>
<div class="controls">
<input id="email_address" name="email_address" placeholder="Email address " class="input-xlarge" required="" type="text">
<p class="help-block">Enter your email address</p>
</div>
</div>
<!-- Text input-->
<div class="control-group">
<label class="control-label" for="first_name">First Name</label>
<div class="controls">
<input id="first_name" name="first_name" placeholder="First name" class="input-xlarge" required="" type="text">
<p class="help-block">Enter your first name</p>
</div>
</div>
<!-- Text input-->
<div class="control-group">
<label class="control-label" for="last_name">Last Name</label>
<div class="controls">
<input id="last_name" name="last_name" placeholder="Last name" class="input-xlarge" type="text">
<p class="help-block">help</p>
</div>
</div>
<!-- Password input-->
<div class="control-group">
<label class="control-label" for="password">Password Input</label>
<div class="controls">
<input id="password" name="password" placeholder="Password" class="input-xlarge" required="" type="password">
<p class="help-block">help</p>
</div>
</div>
<div class="control-group">
<label class="control-label" for="password">Password Confirmation</label>
<div class="controls">
<input id="password2" name="password2" placeholder="Password" class="input-xlarge" required="" type="password">
<p class="help-block">help</p>
</div>
</div>
<!-- Button -->
<div class="control-group">
<label class="control-label" for="singlebutton"></label>
<div class="controls">
<button class="btn btn-success" onclick="submit" >Sign Up</button>
</div>
</div>
</fieldset>
</form>
</div>
提交给 (user/)sign_up
public function sign_up() {
$this->load->model('login_model');
if($query = $this->login_model->create_member()){
$data['main_content'] = 'user_login_view';
$this->load->view('template', $data);
}
}
并传递给模型函数“create_member”
function create_member()
{
$newdata = array(
'user_name' => $this->input->post('username'),
'password' => md5($this->input->post('password')),
'email' => $this->input->post('email_address'),
'first_name' => $this->input->post('first_name'),
'last_name' => $this->input->post('last_name')
);
$insert = $this->db->insert('users', $newdata);
return $insert;
}
我相信我已经设置了正确的表,并且我遵循 MVC 原则。
id int(11)
user_name varchar(25)
password varchar(32)
email varchar(50)
first_name varchar(32)
last_name varchar(32)
我的问题是密码是唯一传递到数据库中的值,其余的只是提交 0,有什么建议或明显的错误需要指出吗?
ID user_name password email first_name last_name
20 0 d41d8cd98f00b204e9800998ecf8427e 0 0 0
谢谢
【问题讨论】:
-
你在使用ajax表单提交吗?尝试不使用
md5()功能并检查密码值。密码也是0吗? -
如果您真的提交表单,您是否在控制台中进行了检查。打开控制台检查一下。
-
@Pheonix2105 你在使用ajax 表单提交吗?如果不是,为什么你没有
action和method属性。 -
form_open应始终使用!使用form_open函数也可以防止csrf攻击。 -
@RahilWazir 只有在 config.php 中有
$config['csrf_protection'] = TRUE;时才能防止 CSRF 攻击
标签: php forms codeigniter