我正在使用codeIgniter 3.x.我加载了一个包含提交给 User.php 控制器的表单的视图,但每当我点击提交按钮时,它都会重定向到此网址&#34; http://localhost/signup/Users/register&#34; < / em>它始终给出&#34;找不到对象!在此服务器上找不到请求的URL。&#34;
以下是我的 .htaccess 文件
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /signup/index.php/$1 [L]
</IfModule>
<IfModule !mod_rewrite.c>
ErrorDocument 404 /signup/index.php
</IfModule>
以下是 autload.php
中的自动加载助手$autoload['helper'] = array('url','form');
以下是 config.php
$config['base_url'] = 'http://localhost/signup/';
$config['index_page'] = '';
$config['uri_protocol'] = 'REQUEST_URI';
以下是我如何打开表单并在 Welcome.php 视图中关闭它。
<?php echo form_open("Users/register", $attributes);?>
<?php echo form_close(); ?>
以下是 Users.php 控制器
class Users extends CI_Controller
{
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');
$this->load->view('user_registration_view');
}
function index()
{
$this->register();
}
function register()
{
//set validation rules
$this->form_validation->set_rules('fname', 'First Name', 'trim|required|alpha|min_length[3]|max_length[30]|xss_clean');
$this->form_validation->set_rules('lname', '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[user.email]');
$this->form_validation->set_rules('password', 'Password', 'trim|required|md5');
$this->form_validation->set_rules('cpassword', 'Confirm Password', 'trim|required|matches[password]|md5');
//validate form input
if ($this->form_validation->run() == FALSE)
{
// fails
$this->load->view('user_registration_view');
}
else
{
//insert the user registration details into database
$data = array(
'fname' => $this->input->post('fname'),
'lname' => $this->input->post('lname'),
'email' => $this->input->post('email'),
'password' => $this->input->post('password')
);
// insert form data into database
if ($this->user_model->insertUser($data))
{
// send email
if ($this->user_model->sendEmail($this->input->post('email')))
{
// successfully sent mail
$this->session->set_flashdata('msg','<div class="alert alert-success text-center">You are Successfully Registered! Please confirm the mail sent to your Email-ID!!!</div>');
redirect('user/register');
}
else
{
// error
$this->session->set_flashdata('msg','<div class="alert alert-danger text-center">Oops! Error. Please try again later!!!</div>');
redirect('user/register');
}
}
else
{
// error
$this->session->set_flashdata('msg','<div class="alert alert-danger text-center">Oops! Error. Please try again later!!!</div>');
redirect('user/register');
}
}
}
答案 0 :(得分:0)
文件名应与班级名称相同 Users.php Class Users extends CI_Controller
答案 1 :(得分:0)
如果您的应用程序位于注册文件夹下(由.htaccess文件显示),那么您需要执行以下操作...
<强>的.htaccess 强> 它与您的应用程序位于同一文件夹中。即与系统index.php文件相同的文件夹。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
由于您的网址为http://localhost/signup/,您已在$ config [&#39; base_url&#39;]中正确设置了该网址。
我刚刚创建了一个虚拟测试站点并进行了测试。
如果有效,请告诉我。
答案 2 :(得分:0)
htaccess
的问题因此将其更改为默认
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
并在配置
$root=(isset($_SERVER["HTTPS"]) ? "https://" : "http://").$_SERVER["HTTP_HOST"];
$root.= str_replace(basename($_SERVER["SCRIPT_NAME"]), "", $_SERVER["SCRIPT_NAME"]);
$config["base_url"] = $root;
答案 3 :(得分:0)
我认为你在重定向时犯了错误......
替换: 重定向( '用户/注册');
用: 重定向( '用户/寄存器');或重定向('用户/注册','刷新');