我正试图在codeigner中实现"signin或signup"表单。因此,它是一种接受电子邮件、密码和POST到下面控制器的表单。
期望:检查电子邮件是否重复,如果存在,张贴电子邮件,登录密码方法,否则张贴电子邮件,注册密码方法。
当前行为:它检查重复和发布验证错误,因为电子邮件已经退出并且从未登录。
这是我的用户控制器逻辑
public function index()
{
$email = $this->input->post('email');
$password = $this->input->post('password');
$this->form_validation->set_rules('email', 'Email', 'is_unique[user.email]');
if( $this->form_validation->run() === FALSE)
{
$this->login($email,$password);
}
else { $this->register($email,$password);}
}
根据Alex的评论,当用户键入的电子邮件地址错误时,使用单个按钮会创建不需要的用户帐户,因此我们决定为1个表单使用2个提交按钮(登录、注册(,该表单按预期工作,只需最少的工作量和干净的用户体验。只要formactionhtml标签就可以了!!。希望这能帮助到别人!
<form class="row" name="regform" action = "<?php echo base_url()?>user/login" method="POST">
<input type="hidden" name="ref" value=1>
<div class="col-md-6 col-lg-3"> <input type="email" name="email" placeholder="Email Address"> </div>
<div class="col-md-6 col-lg-3"> <input type="password" name="password" placeholder="Any Password"> </div>
<div class="col-md-6 col-lg-3"> <button type="submit" class="btn btn--primary type--uppercase" name="signup" value="signup" formaction = "<?php echo base_url()?>user/register">Signup</button> </div>
<div class="col-md-6 col-lg-3"> <button type="submit" class="btn btn--primary type--uppercase" name="signin" value="signin" formaction = "<?php echo base_url()?>user/login">Signin</button> </div>
</form>