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');
}
}
?>
答案 0 :(得分:4)
你不需要所有这些"<?='...
的东西。
只是
$member_data=array(
'name'=>$_POST['register_name'],
'email'=>$_POST['register_email'],
'pass'=>$_POST['password'],
'activation'=>md5(uniqid(rand(),true)));
答案 1 :(得分:3)
更改此
$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)));
答案 2 :(得分:0)
其他答案解决了语法错误。这解决了您似乎认为$member_data
可以神奇地传递给模型的事实。这不可以。您必须加载模型并以insert_member
作为参数调用$member_data
。
将以下代码添加到控制器:
$this->load->model('Forums_model', 'forum');
$this->forum->insert_member($member_data);
答案 3 :(得分:0)
如果您未在控制器中使用模型,为什么要显示模型?
我强烈反对使用原始$_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');