【问题标题】:Is it possible to call codeigniter controller function from a html form action是否可以从 html 表单操作调用 codeigniter 控制器功能
【发布时间】:2019-06-17 20:07:09
【问题描述】:

我在 html 模板中有一个登录表单,并且想在表单提交时调用 codeigniter 控制器函数。其中html页面在CI文件夹外,CI文件夹名称为二进制,Ctrl_signin是我的控制器,chkvalidatelogin是我的函数,可以吗?

HTML 表单代码:

<form action="binary/Ctrl_signin/chkvalidatelogin" method="post">
  <input type="email" name="username" class="email" placeholder="Username" required="" />
   <input type="password" name="Password" class="password" placeholder="Password" required="" />
    <input type="submit" value="Submit">
  </form>

Ctrl_signin 控制器代码:

function chkvalidatelogin(){

  if(isset($_POST['login']) && $_POST['login']=='login')
  {
    $username=$_POST['username'];
    $password = $_POST['password'];
    $data = $this->Mdl_signin->validatelogin('member',$username,$password);
    if($data>0)
    {
      $userdata=$this->Mdl_signin->fetchmemid($username);
      $mid=$userdata->mem_lid;
      $mid1=$userdata->username;
      $_SESSION['user'] = $mid1;
      $_SESSION['mlid'] = $mid;
      $_SESSION['username'] = $mid;
      $this->session->set_userdata('login','true');
      $msg['message']="successfully login";
      redirect(base_url().'Ctrl_signin/Dashboard',$msg);
    }
    else
    {
      $msg="login failed!!";
      redirect(base_url().'Ctrl_signin/signin?mesg='.$msg);
    }
  }
 }

Mdl_signin 型号代码:

  function validatelogin($table,$mid,$password)
    {   
    $query=$this->db->query('select * from '.$table.' where username="'.$mid.'" and decrepted_password="'.$password.'"');
    return $query->num_rows();
    }
  function fetchmemid($username)
    {   
     $sql='select mem_lid,username from member where username="'.$username.'"';
     $query=$this->db->query($sql);
    return $query->row();
    }

我尝试了上面的代码,但它在函数 url 上显示空白页

【问题讨论】:

  • 从请求中调用控制器(通过浏览器/表单操作中的 URL 等)几乎就是控制器的用途,因此听起来您想使用 CI 的默认功能。有没有经过the manual about controllers?
  • 从外部 CI 应用调用控制器:stackoverflow.com/questions/12257538/…
  • 对不起,我的编码错误,当我将提交按钮代码从 更改为 它工作正常

标签: php html codeigniter


【解决方案1】:

很有可能。只需将表单操作指向完整的 URL,包括控制器和方法,例如 example.com/controller/method

但是请注意,如果您启用了 CSRF 保护,您可能会遇到控制器拒绝处理表单。您需要在该特定控制器/方法上禁用 CSRF(不是真的推荐),完全禁用 CSRF(绝对不推荐)或找出一种方法来遵守来自 Codeigniter 外部的 CI 的 CSRF 验证

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-16
    • 1970-01-01
    • 2013-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-27
    相关资源
    最近更新 更多