我几个小时以来一直在调试这段代码而没有成功。我试图做的就是获取加载视图。而不是它加载,我得到一个白色的屏幕,没有任何错误消息。
这是来自控制器的代码:
<?php if ( ! defined('BASEPATH')) 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->load->view('welcome_message');
}
//echo "we made it to the function";
public function login_form()
{
$this->load->view('login_form');
}
public function login_submit()
{
print_r( $_POST );
$this->load->model('Usermodel', 'users');
$match = $this->users->authenticate_user( $_POST['email'], $_POST['password'] );
if( $match )
{
echo "User exists in database!";
}
else
{
echo "Email or password is wrong, bretheren!";
}
}
}
重要的部分是&#34;函数login_form&#34;。以下是该视图的代码:
<form action="<?php base_url() ?>welcome/login_submit" method="post">
<label>
email:
<input id="email" name="email" />
</label>
<label>
password:
<input type="password" id="password" name="password" />
</label>
<input type="submit" value="Log me in!" />
</form>
这是我在浏览器中使用的链接到达页面: 本地主机/内联网/ index.php的/欢迎/ login_form
代码对我来说都很好看,我似乎无法弄清楚程序在哪里破解。有没有人有任何想法?
编辑:我拿出了速记,但我遇到了同样的问题。答案 0 :(得分:3)
1)你错过了echo
...
<?php echo base_url() ?>
2)要使用base_url()
,您还需要在某处加载URL Helper。
https://www.codeigniter.com/user_guide/helpers/url_helper.html
3)我强烈建议您阅读整个文档,包括简单的演示和演示文稿。教程,在启动CodeIgniter项目之前......
https://www.codeigniter.com/user_guide/
4)虽然您可以使用PHP短标签(根据您的服务器配置),但不建议使用它们。
https://www.codeigniter.com/user_guide/general/styleguide.html#short-open-tags
答案 1 :(得分:1)
您必须在配置中启用URL Helper,或者如果要使用base_url()函数,则必须在控制器中启用:
$this->load->helper('URL');
<form action="<?php base_url() ?>welcome/login_submit" method="post">
应该是
<form action="<?php echo base_url() ?>welcome/login_submit" method="post">
如果您正确配置,则为速记:
<form action="<?=base_url() ?>welcome/login_submit" method="post">
关于无法使用CodeIgniter的简写的帖子,是的,你可以,我刚刚完成了一个用速记的项目。这就是你如何配置你的php.ini
<?= is just short for <?php echo
答案 2 :(得分:1)
您正在使用codeigniter,所以为什么不使用它的所有功能。你可以在codeigniter中创建这样的表单
所以你不需要使用 base_url 左右,这是在codeigniter中使用的正确方法。
<?php echo form_open("welcome/login_submit",array('method'=>'post')); ?>
<label>
email:
<?php echo form_input(array('name'=>'email','id'=>'email')); ?>
</label>
<label>
password:
<?php echo form_password(array('name'=>'password','id'=>'password')); ?>
</label>
<?php
echo form_button(array('type'=>'submit','value'=>'Log me in!'));
echo form_close(); ?>