【问题标题】:Codeigniter Form Validation opening blank pageCodeigniter 表单验证打开空白页
【发布时间】:2016-03-20 19:59:55
【问题描述】:

我正在学习如何使用 Codeigniter 创建登录系统的教程。

我在视图中创建了以下表单:

<!DOCTYPE html>
<html lang="en">

<body>

<div class="container">

    <h1>Login</h1>

<?php

    echo form_open('welcome/login_validation');

    echo validation_errors();


    echo form_label('Email: ');
    echo form_input('email'); //form_input(name,value)

    echo '<br />';

    echo form_label('Password: ');
    echo form_password('password');

    echo '<br />';

    echo form_submit('login_submit', 'Login'); //form_submit(name,value)


    echo form_close();


?>
</div>


</body>

</html>

但是当我在谷歌浏览器上点击提交按钮时,它会在地址栏中打开一个空白页面,其中包含“about:blank”。

在 FireFox 中,它具有正确的地址“...welcome/form_validation”,但出现以下消息:

"此地址被限制 此地址使用通常用于 Web 浏览以外的目的的网络端口。 Firefox 已取消保护您的请求。”

在 Microsoft Edge 上,它只停留在带有表单的页面上。

这是我的控制器:

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

class Welcome extends CI_Controller {

/**
 * Index Page for this controller.
 *
 * Maps to the following URL
 *      http://example.com/index.php/welcome
 *  - or -
 *      http://example.com/index.php/welcome/index
 *  - or -
 * Since this controller is set as the default controller in
 * config/routes.php, it's displayed at http://example.com/
 *
 * So any other public methods not prefixed with an underscore will
 * map to /index.php/welcome/<method_name>
 * @see http://codeigniter.com/user_guide/general/urls.html
 */
public function index()
{
    $this->login();
}

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

public function login_validation()
{

   $this->load->library('form_validation');

    $this->form_validation->set_rules('email', 'Email', 'required');
    $this->form_validation->set_rules('password', 'Password', 'required|md5');


    if($this->form_validation->run()){

        redirect('main/members');


    } else{

        $this->load->view('login');


    }

}


public function members()
{

    $this->load->view('users');



}

}

感谢任何帮助。如果您需要更多信息,请告诉我,我会发布。

谢谢

编辑:我使用的是 codeigniter 3.0.3

【问题讨论】:

  • echo form_open('welcome/form_validation'); 更改为 echo form_open('welcome/login_validation'); 在您的控制器中不存在这样的 form_validation 方法。
  • @Saty 我改变了,但我仍然遇到同样的问题。
  • @Ddrossi93 如果你没有通过 htaac​​ess 关闭它,你的 form_open 可能会添加一个 index.php 尝试使用这个 form_open(base_url().'welcome/login_validation');

标签: php forms codeigniter model-view-controller


【解决方案1】:

Form open 是指Welcome 控制器中的方法,它将处理登录表单。

在你看来是echo form_open('welcome/form_validation');

但是

在你的控制器中是public function login_validation()

更改视图form_open 操作或Controller's 方法名称

【讨论】:

  • 我仍然遇到同样的问题,我已将视图更改为“欢迎/登录验证”
  • 如果你使用的是linux,那么控制器的名字是区分大小写的
  • 我使用的是 Windows 10
  • 在你看来也使用echo form_open(site_url('welcome/login_validation'));
猜你喜欢
  • 2016-03-13
  • 1970-01-01
  • 1970-01-01
  • 2016-04-18
  • 1970-01-01
  • 1970-01-01
  • 2013-03-11
  • 2018-12-16
  • 1970-01-01
相关资源
最近更新 更多