【问题标题】:Issue with form validation in codeignitercodeigniter 中的表单验证问题
【发布时间】:2017-03-09 12:35:55
【问题描述】:

我在验证我的表单时遇到问题,它是一个注册表单,我有登录名和用户控制器,当我提交表单时,它会将我带到登录页面。

当我将默认控制器更改为“用户”时,它会验证表单,但当我想登录时它不起作用。我想知道是什么问题!

这是来自用户控制器的验证表单代码:

public function __construct()
    {
        parent::__construct();
        $this->load->helper(array('form','url'));
        $this->load->library(array('session', 'form_validation', 'email'));
        $this->load->database();
        $this->load->model('user_model');
    }
    function index()
        {
            //set validation rules
            $this->form_validation->set_rules('name', 'First Name', 'trim|required|alpha|min_length[3]|max_length[30]|xss_clean');
            $this->form_validation->set_rules('prenom', 'Last Name', 'trim|required|alpha|min_length[3]|max_length[30]|xss_clean');
            $this->form_validation->set_rules('email', 'Email ID', 'trim|required|valid_email|is_unique[teacher.email]');
            $this->form_validation->set_rules('password', 'Password', 'trim|required|matches[cpassword]|md5');
            $this->form_validation->set_rules('cpassword', 'Confirm Password', 'trim|required|md5');

            //validate form input
            if ($this->form_validation->run() == FALSE)
            {
                // fails
                $this->load->view('backend/user_registration_view');
            }

这是视图:

<div class="panel-body">
                <?php $attributes = array("name" => "registrationform");
                echo form_open("user/register", $attributes);?>
                <div class="form-group">
                    <label for="name">First Name</label>
                    <input class="form-control" name="name" placeholder="Your First Name" type="text" value="<?php echo set_value('name'); ?>" />
                    <span class="text-danger"><?php echo form_error('fname'); ?></span>
                </div>

这是我测试我的应用程序的墨水,请帮我解决这个问题:

http://prof.skolarie.com(登录是默认控制器)。

我认为默认设置登录时会覆盖用户控制器!

谢谢

更新:路由文件;

$route['default_controller'] = 'login';

$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;

您可以在下面的链接中找到代码源:

http://prof.skolarie.com/uploads/myapp.zip

【问题讨论】:

  • 您是在索引函数中定义规则并将表单数据发布到注册函数吗?

标签: php forms codeigniter validation login


【解决方案1】:

您的页面很难阅读,尽量让事情尽可能简单,这样您就可以看到您在哪里犯了任何错误,我试图找出问题所在,但我只能找到您的表格指向奇怪的链接前注册表指向:

http://prof.skolarie.com/index.php/user/index

这个链接真的错过了,表单应该指向一个控制器,该控制器检查输入,使用模型将它们放入数据库,然后再指向日志记录控制器

也可能是路由问题,或者您更改了 404 错误视图,因为访问您网站上的任何随机页面,它都会生成登录表单而不是显示 404 错误(例如:我访问过:@987654324 @ 并且它一直向我显示登录表单),确保您的路由有效,并且它们指向正确的控制器。

如果您仍然遇到此问题,请发布正确的代码示例以及您的路线。

【讨论】:

  • 你可以从这个链接看到代码源:prof.skolarie.com/uploads/myapp.zip,在路由文件中我有这个:$route['default_controller'] = 'login'; $route['404_override'] = ''; $route['translate_uri_dashes'] = FALSE;
  • 您没有利用 codeigniter 提供的 MVC 架构。从模型中启动功能是
  • 小姐点击了上一条评论的输入,正如我所说,您没有正确使用您的 codeigniter 代码,我对您的文件进行了一些更改,请在此处下载它们:mediafire.com/?4ff7c4u1cpxepxm
  • 非常感谢您的帮助,但我尝试了您发送给我的修改,但没有成功,
  • 我做了一些修改,它对我有用,我将登录和 singup 控制器分组到一个文件中,现在你可以试试。
【解决方案2】:

您在user/register 上发布表单,我认为您在index 函数中进行了验证,所以请在register 函数上而不是index 上进行验证。

【讨论】:

  • 我已将验证表单从 register 函数更改为 inde 函数,看看这是否是问题,但似乎不是,您可以从此链接下载代码源:prof.skolarie.com/uploads/myapp.zip。谢谢
猜你喜欢
  • 2011-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多