【问题标题】:CodeIgniter not submitting form values to databaseCodeIgniter 未将表单值提交到数据库
【发布时间】: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 表单提交吗?如果不是,为什么你没有 actionmethod 属性。
  • form_open 应始终使用!使用form_open函数也可以防止csrf攻击。
  • @RahilWazir 只有在 config.php 中有 $config['csrf_protection'] = TRUE; 时才能防止 CSRF 攻击

标签: php forms codeigniter


【解决方案1】:

我建议您更改表单打开标记以显式调用控制器,并且您需要包含method="post" 属性才能使表单发布。例如

<form class="form-horizontal" style="width:500px;" action="/user/sign_up" method="post">

如果您想使用 CI 的表单助手,您可以使用以下内容:

$attributes = array('class' => 'form-horizontal', 'style' => 'width:500px;');

echo form_open('user/sign_up', $attributes);

【讨论】:

    【解决方案2】:

    在您的帖子变量上使用 Var_dump,您没有得到任何帖子变量,您认为自己获得密码的唯一原因是因为您在空字符串上运行 md5。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多