一旦点击登录按钮,我在加载函数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');
}
}
}
有没有人知道为什么这个功能无法正常工作?!
答案 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)看看你如何去做。让我知道你是怎么做的:)
答案 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');