Codeigniter 3 表格未发布
Codeigniter 3 form not posting
*更新,none 的表格似乎 post 正确。他们都加载在操作中指定的任何 URL 没有 POST 数据可用。
我的应用 运行 在 Lamp 本地运行良好。一旦上传到我的实时服务器,登录表单将无法使用。我正在使用 CI3 和 Ion Auth 库。
我试过了
var_dump($_POST)
始终输出以下内容:
array(0) {
}
所以看起来表格不是 posting。我的表格:
<?php echo form_open("auth/login");?>
<div class="form-group">
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-user"></i>
</span>
<?php echo form_input($identity);?>
</div>
</div>
<div class="form-group">
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-lock"></i>
</span>
<?php echo form_input($password);?>
</div>
</div>
<button type="submit" class="btn btn-primary text-theme-xs mr-8">Login</button>
<?php echo form_checkbox('remember', '1', FALSE, 'id="remember"');?>
<a href="<?= site_url('auth/forgot_password') ?>" class="text-theme-xs pull-right a-black">Forgot your password ?</a>
</form>
post 到 URL 与显示表单的那个相同,正如我所说,它在 lamp 上工作正常。 Firebug 显示有关密码字段和不安全站点的错误,但我认为这不会阻止表单 posting?
我已经用 var_dump 替换了重定向,但没有任何反应,问题是没有 _POST 数据被发送。
控制器:
function login()
{
$this->data['title'] = "Login";
//validate form input
$this->form_validation->set_rules('identity', 'Identity', 'required');
$this->form_validation->set_rules('password', 'Password', 'required');
if ($this->form_validation->run() == true)
{
//check to see if the user is logging in
//check for "remember me"
$remember = (bool) $this->input->post('remember');
if ($this->ion_auth->login($this->input->post('identity'), $this->input->post('password'), $remember))
{
//if the login is successful
//redirect them back to the home page
$this->session->set_flashdata('message', $this->ion_auth->messages());
redirect('/', 'refresh');
}
else
{
//if the login was un-successful
//redirect them back to the login page
$this->session->set_flashdata('message', $this->ion_auth->errors());
redirect('auth/login', 'refresh'); //use redirects instead of loading views for compatibility with MY_Controller libraries
}
}
else
{
//the user is not logging in so display the login page
//set the flash data error message if there is one
$this->data['message'] = (validation_errors()) ? validation_errors() : $this->session->flashdata('message');
$this->data['identity'] = array('name' => 'identity',
'id' => 'identity',
'type' => 'text',
'class' => 'form-control',
'value' => $this->form_validation->set_value('identity'),
'placeholder' => 'Username',
);
$this->data['password'] = array('name' => 'password',
'id' => 'password',
'type' => 'password',
'class' => 'form-control',
'placeholder' => 'Password',
);
$this->_render_page('templates/head', $this->data);
$this->_render_page('templates/navbar', $this->data);
$this->_render_page('auth/login', $this->data);
$this->_render_page('templates/footer', $this->data);
}
}
上面controller/view的html输出:
<form action="http://www.mydomain.uk/auth/login" method="post" accept-charset="utf-8">
<p>
<label for="identity">Email/Username:</label> <input type="text" name="identity" value="" id="identity" class="form-control" placeholder="Username" />
</p>
<p>
<label for="password">Password:</label> <input type="password" name="password" value="" id="password" class="form-control" placeholder="Password" />
</p>
<p>
<label for="remember">Remember Me:</label> <input type="checkbox" name="remember" value="1" id="remember" />
</p>
<p><input type="submit" name="submit" value="Login" />
</p>
</form>
我现在已经解决了这个问题,我对自己非常恼火,因为这是一个配置错误导致的简单修复。最费脑筋的问题不都是这样吗?
无论如何,如果其他人遇到同样的问题,请检查您的 site_url 配置。
我的设置为 http://www.example.com however the server redirected to http://example.com 因此使用 site_url 到 post 被重定向到丢失 post 数据的非 www 域。
现在是时候继续我周末应该做的事情了。
感谢大家的帮助
尝试启用 apache2 mod_rewrite 模块
*更新,none 的表格似乎 post 正确。他们都加载在操作中指定的任何 URL 没有 POST 数据可用。
我的应用 运行 在 Lamp 本地运行良好。一旦上传到我的实时服务器,登录表单将无法使用。我正在使用 CI3 和 Ion Auth 库。
我试过了
var_dump($_POST)
始终输出以下内容:
array(0) {
}
所以看起来表格不是 posting。我的表格:
<?php echo form_open("auth/login");?>
<div class="form-group">
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-user"></i>
</span>
<?php echo form_input($identity);?>
</div>
</div>
<div class="form-group">
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-lock"></i>
</span>
<?php echo form_input($password);?>
</div>
</div>
<button type="submit" class="btn btn-primary text-theme-xs mr-8">Login</button>
<?php echo form_checkbox('remember', '1', FALSE, 'id="remember"');?>
<a href="<?= site_url('auth/forgot_password') ?>" class="text-theme-xs pull-right a-black">Forgot your password ?</a>
</form>
post 到 URL 与显示表单的那个相同,正如我所说,它在 lamp 上工作正常。 Firebug 显示有关密码字段和不安全站点的错误,但我认为这不会阻止表单 posting?
我已经用 var_dump 替换了重定向,但没有任何反应,问题是没有 _POST 数据被发送。
控制器:
function login()
{
$this->data['title'] = "Login";
//validate form input
$this->form_validation->set_rules('identity', 'Identity', 'required');
$this->form_validation->set_rules('password', 'Password', 'required');
if ($this->form_validation->run() == true)
{
//check to see if the user is logging in
//check for "remember me"
$remember = (bool) $this->input->post('remember');
if ($this->ion_auth->login($this->input->post('identity'), $this->input->post('password'), $remember))
{
//if the login is successful
//redirect them back to the home page
$this->session->set_flashdata('message', $this->ion_auth->messages());
redirect('/', 'refresh');
}
else
{
//if the login was un-successful
//redirect them back to the login page
$this->session->set_flashdata('message', $this->ion_auth->errors());
redirect('auth/login', 'refresh'); //use redirects instead of loading views for compatibility with MY_Controller libraries
}
}
else
{
//the user is not logging in so display the login page
//set the flash data error message if there is one
$this->data['message'] = (validation_errors()) ? validation_errors() : $this->session->flashdata('message');
$this->data['identity'] = array('name' => 'identity',
'id' => 'identity',
'type' => 'text',
'class' => 'form-control',
'value' => $this->form_validation->set_value('identity'),
'placeholder' => 'Username',
);
$this->data['password'] = array('name' => 'password',
'id' => 'password',
'type' => 'password',
'class' => 'form-control',
'placeholder' => 'Password',
);
$this->_render_page('templates/head', $this->data);
$this->_render_page('templates/navbar', $this->data);
$this->_render_page('auth/login', $this->data);
$this->_render_page('templates/footer', $this->data);
}
}
上面controller/view的html输出:
<form action="http://www.mydomain.uk/auth/login" method="post" accept-charset="utf-8">
<p>
<label for="identity">Email/Username:</label> <input type="text" name="identity" value="" id="identity" class="form-control" placeholder="Username" />
</p>
<p>
<label for="password">Password:</label> <input type="password" name="password" value="" id="password" class="form-control" placeholder="Password" />
</p>
<p>
<label for="remember">Remember Me:</label> <input type="checkbox" name="remember" value="1" id="remember" />
</p>
<p><input type="submit" name="submit" value="Login" />
</p>
</form>
我现在已经解决了这个问题,我对自己非常恼火,因为这是一个配置错误导致的简单修复。最费脑筋的问题不都是这样吗?
无论如何,如果其他人遇到同样的问题,请检查您的 site_url 配置。
我的设置为 http://www.example.com however the server redirected to http://example.com 因此使用 site_url 到 post 被重定向到丢失 post 数据的非 www 域。
现在是时候继续我周末应该做的事情了。
感谢大家的帮助
尝试启用 apache2 mod_rewrite 模块