codeigniter - 单击按钮时加载函数

时间:2014-04-02 01:32:20

标签: php codeigniter

一旦点击登录按钮,我在加载函数login_validation时遇到问题,我收到404错误,说它找不到。我已经包含了以下两个相关页面的代码。

的login.php:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Login Page</title>
</head>
<body>
  <div id="container">
  <h1>Login</h1>
  <?php
    echo form_open('main/login_validation');
    echo validation_errors();
    echo "<p>Email: ";
    echo form_input('email');
    echo "</p>";
    echo "<p>Password: ";
    echo form_password('password');
    echo "</p>";
    echo "<p>";
    echo form_submit('login_submit', 'Login');
    echo "</p>";
    echo form_close();
  ?>
  </div>
</body>
</html>

main.php:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Main extends CI_Controller {

  public function index() {
    $this->login();
  }

  public function login() {
    $this->load->view('login');
  }

  public function members() {
    $this->load->view('members');
  }

  public function login_validation() {
    $this->load->library('form_validation');
    $this->form_validation->set_rules('email', 'Email', 'required|trim|xsss_clean');
    $this->form_validation->set_rules('password', 'Password', 'required|md5');

    if ($this->form_validation->run()) {
      redirect('main/members');
    }
    else {
      $this->load->view('login');
    }
  }
}

有没有人知道为什么这个功能无法正常工作?!

3 个答案:

答案 0 :(得分:1)

您确定在login_validation()上获得了404,而不是因为它无法在$this->load->library('form_validation');中找到该库吗?

尝试从login_validation()函数中删除所有行,然后只需输入&#34; echo inside login_validation();&#34;看看你是否仍然获得了404

同时尝试将echo form_open('main/login_validation');更改为 - &gt; echo form_open('main/login_validation'/);注意结尾处的正斜杠

修改:查看教程后面的第(1 {3}}集第3集到第3集。看来您遇到的问题很可能与输入错误或使用问题有关mod重写和.HTACCESS

首先,我建议暂时删除HTACCESS文件(或临时重命名)并测试是否有效。然后返回并再次执行本教程的第一步。在他解释要更换RewriteBase时,请确保正确更换。我相信你的情况应该是/ci_intro/。它需要是代码igniter目录的路径。但无论在此之前,只需删除.HTACCESS并确认它有效。

编辑2:似乎HTACCESS是该教程中的一个问题,我可以看到有几个人在youtube评论中抱怨。我建议你刚开始尝试一个新的教程。

本教程仅为&#34; 40分钟&#34;并且似乎更新(DEC 2013)看看你如何去做。让我知道你是怎么做的:)

https://www.youtube.com/watch?v=FmKm1gCgUoM

答案 1 :(得分:0)

您是否从网址中删除了index.php?

我有一台服务器(iis 6)在重写规则时失败,所以你的链接

/~1103884/ci_intro/main/login_validation

将是

/~1103884/ci_intro/index.php/main/login_validation

这意味着您的表单链接应该反映完整路径

* 编辑:将index.php放入错误的位置

答案 2 :(得分:0)

你在字符串中有错误:

$this->form_validation->set_rules('email', 'Email', 'required|trim|xsss_clean');

&#39; xsss_clean&#39; - 可能是codeigniter试图找到未使用的过滤器,这会导致错误。 试着解决这个问题:

$this->form_validation->set_rules('email', 'Email', 'required|trim|xss_clean');