Php 控制器动作不正确

Php 控制器动作不正确,php,codeigniter,Php,Codeigniter,我对code igniter还不熟悉,但我一直在看很多youtube视频,我开始掌握它的基本原理。不过,在我对注册表进行测试后,它会出现一个白色页面,其中包含请求的URL/kowmanager/user/register,但在该服务器上找不到。我不知道为什么。有什么想法吗 控制器: function User() { parent :: __construct(); $this->view_data['base_url'] = base_url(); $this

我对code igniter还不熟悉,但我一直在看很多youtube视频,我开始掌握它的基本原理。不过,在我对注册表进行测试后,它会出现一个白色页面,其中包含请求的URL/kowmanager/user/register,但在该服务器上找不到。我不知道为什么。有什么想法吗

控制器:
function User() 
{
    parent :: __construct();
    $this->view_data['base_url'] = base_url();

    $this->load->model('User_model');
}

function index()
{
    $this->register();
}

function register()
{

    $this->form_validation->set_rules('username', 'Username', 'trim|required|alpha_numeric|min_length[6]|xss_clean|strtolower|callback_usernameNotExists');
    $this->form_validation->set_rules('password', 'Password', 'trim|required|alpha_numeric|min_length[6]|xss_clean');
    $this->form_validation->set_rules('passwordConfirm', 'Confirm Password', 'trim|required|alpha_numeric|min_length[6]|xss_clean|matches[password]');
    $this->form_validation->set_rules('email', 'Email', 'trim|required|min_length[6]|xss_clean|valid_email|callback_emailNotExists');
    $this->form_validation->set_rules('firstName', 'First Name', 'trim|required|alpha_numeric|min_length[6]|xss_clean');
    $this->form_validation->set_rules('lastName', 'Last Name', 'trim|required|alpha_numeric|min_length[6]|xss_clean');

    if ($this->form_validation->run() == FALSE)
    {
        $this->load->view('view_register', $this->view_data);
    }
    else
    {
        $username = $this->input->post('username');
        $password = $this->input->post('password');
        $email = $this->input->post('email');
        $firstName = $this->input->post('firstName');
        $lastName = $this->input->post('lastName');

        $registrationKey =  substr(md5(mt_rand()), 0, 5);

        $this->User_model->registerUser($username, $password, $email, $firstName, $lastName, $registrationKey);
    }

}

function usernameNotExists($username)
{
    $this->form_validation->set_message('usernameNotExists', ' That %s already exists inside the database!');

    if($this->User_model->checkExistsUsername($username))
    {
        return false;
    }
    else
    {
        return true;
    }
}

function emailNotExists($username)
{
    $this->form_validation->set_message('emailNotExists', ' That %s already exists inside the database!');

    if($this->User_model->checkExistsEmail($email))
    {
        return false;
    }
    else
    {
        return true;
    }
}

}
?>
查看页面:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
    <title>KOW Manager Registration Form</title>
</head>

<body>

<?php 

    echo form_open($base_url . 'user/register');

    $username = array ('name'  => 'username', 'id' => 'username', 'value' => set_value('username'));
    $password = array ('name'  => 'password', 'id' => 'password', 'value' => '');
    $passwordConfirm = array ('name'  => 'passwordConfirm', 'id' => 'passwordConfirm', 'value' => '');
    $email = array ('name'  => 'email', 'id' => 'email', 'value' => set_value('email'));
    $firstName = array ('name'  => 'firstName', 'id' => 'firstName', 'value' => set_value('firstName'));
    $lastName = array ('name'  => 'lastName', 'id' => 'lastName', 'value' => set_value('lastName'));

?>

<?php echo form_fieldset('User Information') ?>

<dl>

    <dt><label for="username">Username:</label></dt>
    <dd><?php echo form_input($username); ?></dd>

</dl>

<dl>

    <dt><label for="password">Password:</label></dt>
    <dd><?php echo form_password($password); ?></dd>

</dl>

<dl>

    <dt><label for="passwordConfirm">Confirm Password:</label></dt>
    <dd><?php echo form_password($passwordConfirm); ?></dd>

</dl>

<dl>

    <dt><label for="email">Email Address:</label></dt>
    <dd><?php echo form_input($email); ?></dd>

</dl>

<dl>

    <dt><label for="firstName">First Name:</label></dt>
    <dd><?php echo form_input($firstName); ?></dd>

</dl>

<dl>

    <dt><label for="lastName">Last Name:</label></dt>
    <dd><?php echo form_input($lastName); ?></dd>

</dl>

<?php echo form_fieldset_close() ?>

<?php echo validation_errors() ?>

<dl class="submit">

    <?php echo form_submit(array('name' => 'register'), 'Register'); ?>

</dl>

<?php echo form_close(); ?>

</body>

</html>

九龙区经理登记表
用户名:
密码:
确认密码:
电邮地址:
名字:
姓氏:
编辑:

这是我的新代码,它仍在做同样的事情

<?php
class User extends CI_Controller {

function User() 
{
    parent :: __construct();
    $this->view_data['base_url'] = base_url();

    $this->load->model('User_model');
}

function index()
{
    $this->register();
}

function register()
{

    $this->form_validation->set_rules('username', 'Username', 'trim|required|alpha_numeric|min_length[6]|xss_clean|strtolower|callback_usernameNotExists');
    $this->form_validation->set_rules('password', 'Password', 'trim|required|alpha_numeric|min_length[6]|xss_clean');
    $this->form_validation->set_rules('passwordConfirm', 'Confirm Password', 'trim|required|alpha_numeric|min_length[6]|xss_clean|matches[password]');
    $this->form_validation->set_rules('email', 'Email', 'trim|required|min_length[6]|xss_clean|valid_email|callback_emailNotExists');
    $this->form_validation->set_rules('firstName', 'First Name', 'trim|required|alpha_numeric|min_length[6]|xss_clean');
    $this->form_validation->set_rules('lastName', 'Last Name', 'trim|required|alpha_numeric|min_length[6]|xss_clean');

    if ($this->form_validation->run() == FALSE)
    {
        $this->load->view('view_register', $this->view_data);
    }
    else
    {
        $username = $this->input->post('username');
        $password = $this->input->post('password');
        $email = $this->input->post('email');
        $firstName = $this->input->post('firstName');
        $lastName = $this->input->post('lastName');

        $registrationKey =  substr(md5(mt_rand()), 0, 5);

        $this->User_model->registerUser($username, $password, $email, $firstName, $lastName, $registrationKey);

        $this->load->library('email');
        $this->email->from('kowmanagement@kansasoutlawwrestling.com', 'KOW Management');
        $this->email->to($email);
        $this->email->subject('KOW Manager Account Registration');
        $this->email->message('Hello '.$firstName.' '.$lastName.' Welcome to our website!<br /><br />You, or someone using your email address, has completed registration at '.myDomainName().'. You can complete registration by clicking the following link:<br /><br />' . anchor('http://www.'.myDomainName().'/manager/verify.php?userID='.$userID.'&verifyHash='.$verifyHash.'", http://www.'.myDomainName().'/manager/verify.php?userID='.$userID.'&verifyHash='.$verifyHash.''));
        $this->email->send();
    }

}

function registerConfirm()
{
    $registrationKey = $this->uri->segment(3);

    if ($registrationKey == '')
    {
        echo 'No registration key found in URL';
        exist(); 
    }

    $registrationConfirmed = $this->User_model->confirmRegistration($registrationKey);

    if ($registrationConfirmed)
    {
        echo 'You have successfully registered!';
    }
    else
    {
        echo 'You have failed to register!';
    }
}

function usernameNotExists($username)
{
    $this->form_validation->set_message('usernameNotExists', ' That %s already exists inside the database!');

    if($this->User_model->checkExistsUsername($username))
    {
        return false;
    }
    else
    {
        return true;
    }
}

function emailNotExists($username)
{
    $this->form_validation->set_message('emailNotExists', ' That %s already exists inside the database!');

    if($this->User_model->checkExistsEmail($email))
    {
        return false;
    }
    else
    {
        return true;
    }
}

function myDomainName() 
{
    $my_domain = $_SERVER['HTTP_HOST'];
    $my_domain = str_replace('www.', '', $my_domain);
    return $my_domain;
}

}
?>

默认情况下,CodeIgniter路由的结构如下所示

如果您的代码中没有'index.php',除非您在Apache中设置了mod_重写规则,否则它将无法正确路由

试着像这样设置你的url

看看会发生什么

看看这个:

默认情况下,CodeIgniter路由的结构如下

如果您的代码中没有'index.php',除非您在Apache中设置了mod_重写规则,否则它将无法正确路由

试着像这样设置你的url

看看会发生什么

看看这个:

请记住,您所做的是:

mysite.com/kowmanager/user/register
mysite.com/index.php/kowmanager/user/register

无论如何

1) 您正在使用knownmanager目录

2) 您正在使用控制器用户

3) 您正在调用方法“register

您可以检查以下内容:

如果您使用的是CI 2 use,则看起来您正在将用户方法用作构造函数

function __constructor() {
  parent::__constructor();
}
作为你的构造器

此外,您没有在此控制器中调用视图,是否使用其他控制器调用该视图?我将创建一个名为registration_form的新方法,并从那里调用视图:

$data['data'] = array();
$this->load->view('view_name', $data); 
在这种情况下,您将使用以下url

mysite.com/kowmanager/index.php/user/registration_form/
然后,当表单提交时,它将调用验证方法

我不确定您是否在使用表单前加载表单验证

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

祝你好运

请记住,您正在做的是:

mysite.com/kowmanager/user/register
mysite.com/index.php/kowmanager/user/register

无论如何

1) 您正在使用knownmanager目录

2) 您正在使用控制器用户

3) 您正在调用方法“register

您可以检查以下内容:

如果您使用的是CI 2 use,则看起来您正在将用户方法用作构造函数

function __constructor() {
  parent::__constructor();
}
作为你的构造器

此外,您没有在此控制器中调用视图,是否使用其他控制器调用该视图?我将创建一个名为registration_form的新方法,并从那里调用视图:

$data['data'] = array();
$this->load->view('view_name', $data); 
在这种情况下,您将使用以下url

mysite.com/kowmanager/index.php/user/registration_form/
然后,当表单提交时,它将调用验证方法

我不确定您是否在使用表单前加载表单验证

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

祝你好运

尝试设置您的基本url。如果您在本地工作并使用MAMP或XAMP,则可能是这样的:

$config['base_url'] = 'http://localhost/kowmanager';

尝试设置您的基本url。如果您在本地工作并使用MAMP或XAMP,则可能是这样的:

$config['base_url'] = 'http://localhost/kowmanager';


您是否已将路由添加到控制器?如果您的意思是$route['default_controller']=“user”;然后是的,我做了。我对一些事情感到困惑:您使用不同的控制器调用视图来呈现注册表?另外,为什么索引方法调用注册方法?最后一个问题,您使用的是CI 2还是CI 1.7?我想我可以提供更清晰的帮助:)您不需要将
base\u url()
传递到您的视图。该方法在视图中可用。此外,如果您提交的方法与显示视图的方法相同,则可以将
form_open()
留空。您可以发布您
base_url设置为from config.php的内容吗?您是否已将路由添加到控制器?如果您的意思是$route['default_controller']=“user”;然后是的,我做了。我对一些事情感到困惑:您使用不同的控制器调用视图来呈现注册表?另外,为什么索引方法调用注册方法?最后一个问题,您使用的是CI 2还是CI 1.7?我想我可以提供更清晰的帮助:)您不需要将
base\u url()
传递到您的视图。该方法在视图中可用。另外,如果您提交的方法与显示视图的方法相同,则可以将
form_open()
留空。您可以发布您
base_url
从config.php设置的内容吗?我转到最后一个链接,复制了第一步中的所有内容并保存了它,但我仍然得到了相同的内容。确切的链接是什么?其次,您的webroot设置如何?codeigniter项目是在基础上还是在名为“/kowmanager”的子文件夹中?如果它在子文件夹中,您需要这样构造它:''我在本地与wamp一起工作,所以我有localhost/kowmanager(我的项目)/system/在这种情况下,请单击此链接:看看会发生什么。哦,我还以为您根本就没有进入表单。请看Chris Schmitz的回答。我去了最后一个链接,复制了第一步中的所有内容并保存了下来,我仍然得到了同样的东西。到底是什么链接?其次,您的webroot设置如何?codeigniter项目是在基础上还是在名为“/kowmanager”的子文件夹中?如果它在子文件夹中,您需要这样构造它:''我在本地与wamp一起工作,所以我有localhost/kowmanager(我的项目)/system/在这种情况下,请单击此链接:看看会发生什么。哦,我还以为您根本就没有进入表单。参见Chris Schmitz的答案。我还推荐以下系列