public function register()
{
if(!file_exists('application/views/forum/register_view.php'))
{
show_404();
}
$member_data=array(
'name'=>"<?='$_POST['register_name']'?>",
'email'=>"<?='$_POST['register_email']'?>",
'pass'=>"<?='$_POST['password']'>",
'activation'=>"<?=md5(uniqid(rand(),true))?>");
$this->load->view('forums/register_view');
}
这是我的注册函数,在用户单击"注册"按钮后调用激活密钥用于在登录前激活他的帐户。我将此功能保留在控制器文件夹中。这是我在模型文件夹中的内容
<?php
class Forums_model extends CI_Model
{
public function __construct()
{
$this->load->database();
}
public function insert_member($member_data)
{
$this->db->insert('regmember_tb',$member_data);
}
}
?>
我得到的错误是
语法错误、意外T_ENCAPSED_AND_WHITESPACE、预期T_STRING 或T_VARIABLE或T_NUM_STRING
在寄存器函数中初始化member_data。
我目前的路由配置是
$route['default_controller'] = "forums/login";
$route['blog/(:any)']='forums/login/$1';
我想知道我还可以添加什么来加载forum_model类,就像我在控制器类的构造函数中所做的那样
<?php
class Login extends CI_Controller
{
public function __construct()
{
parent::__construct();
$this->load->model('forums_model');
$this->load->helper('form');
$this->load->helper('email');
}
}
?>
你不需要所有这些"<?='...
的东西。
只
$member_data=array(
'name'=>$_POST['register_name'],
'email'=>$_POST['register_email'],
'pass'=>$_POST['password'],
'activation'=>md5(uniqid(rand(),true)));
更改此设置
$member_data=array(
'name'=>"<?='$_POST['register_name']'?>",
'email'=>"<?='$_POST['register_email']'?>",
'pass'=>"<?='$_POST['password']'>",
'activation'=>"<?=md5(uniqid(rand(),true))?>");
自
$member_data=array(
'name'=>$_POST['register_name'],
'email'=>$_POST['register_email'],
'pass'=>$_POST['password'],
'activation'=>md5(uniqid(rand(),true)));
如果您没有在控制器中使用它,为什么要显示模型?
我非常不鼓励使用原始$_POST
数组。CodeIgniter 将$_POST
包装到一个名为 $this->input->post();
的函数中,它执行 sql 注入和 xss 预防算法。它通常会清理您的输入,并确保您正在使用的内容是安全的。
您可以在config/config.php
文件中启用全局 xss 筛选
if(!file_exists('application/views/forum/register_view.php'))
{
show_404();
}
$p = $this->input->post();
$member_data=array
(
'name'=> $p['register_name'],
'email'=> $p['register_email'],
'pass'=> $p['password'],
'activation' => md5(uniqid(rand(),true))
);
//are you going to do anything with $member_data?
$this->load->view('forums/register_view');
其他答案解决了您的语法错误。这解决了这样一个事实,即您似乎认为$member_data
可以神奇地传递给模型。不能。您必须加载模型并使用$member_data
作为参数调用insert_member
。
将以下代码添加到控制器:
$this->load->model('Forums_model', 'forum');
$this->forum->insert_member($member_data);