如何在 CodeIgniter 中正确调用控制器方法处理模态框登录表单提交-php教程

本文详解 codeigniter(ci)中模态框登录表单无法触发控制器方法的典型问题,重点指出嵌套表单导致的 html 结构错误,并提供基于 `form_open()` 的标准解决方案、url 路由配置要点及密码安全加固建议。

在使用 CodeIgniter 构建登录功能时,常通过 Bootstrap 模态框(Modal)嵌入登录表单。但许多开发者会遇到一个“静默失败”现象:点击提交后模态框直接关闭,既无跳转也无报错,后端控制器方法(如 login_action)完全未被执行。根本原因往往并非路由或数据库逻辑错误,而是HTML 表单结构被意外破坏。

? 问题根源:重复且嵌套的

标签,仅保留 form_open() / form_close(),并修正 URL 路径:

<div class="modal-body">
  <!-- ✅ 正确:仅用 CI 表单辅助函数 -->
  <?php echo validation_errors(); ?>
  <?php echo form_open('welcome/login_action', ['class' => 'form-signin']); ?>

  <p class="text-center text-danger">
    <?php 
      if ($this->input->get('action') === 'error') {
        echo "Email atau Kata Sandi salah";
      } elseif ($this->input->get('action') === 'notlog') {
        echo "Anda belum masuk";
      }
    ?> 
  </p>

  <div class="input-group mb-3">
    <input type="email" class="form-control" placeholder="Nama User" name="email" id="email" required>
    <div class="input-group-append">
      <div class="input-group-text"><span class="fas fa-user"></span></div>
    </div>
  </div>

  <div class="input-group mb-3">
    <input type="password" class="form-control" placeholder="Kata Sandi" name="password" id="password" required>
    <div class="input-group-append">
      <div class="input-group-text"><span class="fas fa-lock"></span></div>
    </div>
  </div>

  <div class="row">
    <div class="col-8">
      <div class="icheck-primary">
        <input type="checkbox" id="remember" name="remember">
        <label for="remember">Ingatkan Saya</label>
      </div>
    </div>
    <div class="col-4">
      <a tabindex="0" class="btn btn-xs" role="button" data-toggle="modal" data-target="#modalLupa">Lupa Kata Sandi</a>
    </div>
  </div>

  <div class="modal-footer justify-content-between">
    <input class="btn btn-lg btn-success btn-block" type="submit" name="submit" value="Masuk">
  </div>

  <?php echo form_close(); ?>
</div>

⚠️ 关键修正说明:删除 和 原生标签;form_open(‘welcome/login_action’) 中不加 index.php/ 前缀,也不加开头 / —— 因为你的 .htaccess 已启用重写,CI 会自动将 welcome/login_action 映射到 index.php/welcome/login_action;添加 required 属性提升前端校验体验;使用数组语法传入 [‘class’ => ‘form-signin’] 设置表单类名,更符合 CI 最佳实践。

?️ 安全增强:弃用 MD5,改用 password_hash() 与 password_verify()

当前控制器中使用 md5($password) 存储密码存在严重安全隐患(碰撞风险高、无盐值、易被彩虹表破解)。请立即升级:

夏夕资源网专注于CMS网站模板,主流语言整站网站源码下载,网站建设相关教程分享,好用的软件素材整合下载,提供一站式便捷自助服务。
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"zy.lucklyus.top",如遇到无法解压的请联系管理员!
夏夕资源网-网站模板_免费源码_资源素材 » 如何在 CodeIgniter 中正确调用控制器方法处理模态框登录表单提交-php教程
在线时间:12:00 - 22:00
关注微信公众号:微信公众号
站长邮箱:[email protected]
  • 运营天数: 1392+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4004597+
  • 本周更新: 0+
  • 最后更新: 2026-03-16

本站指数

×
  • 运营天数: 1392+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4004597+
  • 本周更新: 0+
  • 最后更新: 2026-03-16