将codeigniter网站重定向到www域的最佳方法是什么?我想到的唯一方法是使用htaccess,但无法弄清楚具体如何.这是我正在使用的重写规则,用于从url中删除index.php.我应该如何正确地将重定向添加到www域?
RewriteEngine on
RewriteCond $1 !^(index\.php|images|assets|uploads|robots\.txt|favicon\.png|favicon\.ico)
RewriteRule ^(.*)$ index.php/$1 [L]
Run Code Online (Sandbox Code Playgroud) 我想知道是否有任何方法可以删除所有域名网站cookie和会话参数.
somenthing喜欢$this->session->destroy();?
只是在堆栈溢出时读取这个,因此让我想知道是否可以通过CI中的活动记录进行SQL注入.
在我的项目的大多数地方,为了用户注册和用户配置文件更新,我已经完成了这样的SQL插入:
控制器:
$name = $this->input->post('name');
$last_name = $this->input->post('last_name');
$age = $this->input->post('dob');
$user_data = array(
'name' => $name,
'last_name' => $last_name,
'age' => $age
);
$this->user_model->add_user_function($user_data);
Run Code Online (Sandbox Code Playgroud)
模型:
function add_user_function($data)
{
$this->db->insert('user_table',$data);
return;
}
Run Code Online (Sandbox Code Playgroud)
就像上面SO链接中的示例一样,我的代码是否可以用于SQL注入?
如果可能损害我的系统,你能给出一个特定的例子,如果它存在,我该如何防止它.
我有使用杂货CRUD进行文件上传的以下代码
function test(){
$crud=new grocery_CRUD();
$crud->set_table('test');
$crud->add_fields('name', 'image');
$crud->set_field_upload('image', 'test');
$crud->callback_before_upload('image', array($this, 'before_test_upload'));
$output=$crud->render();
$output->page_title="Test Page";
$this->_crud_output($output);
}
function before_test_upload($files_to_upload, $field_info){
// Here I want to check the file format before that file upload to source folder.
}
Run Code Online (Sandbox Code Playgroud) 我写的以下代码只显示表中的最后一行.但是我需要在表格中loop显示每一个row.
class Catalog_products extends CI_Model {
function Show_all_products()
{
$q = $this->db->get('printer');
foreach ($q->result() as $row)
{
$data = array();
$data['id'] = $row->id;
$data['name'] = $row->name;
}
return $data;
}
}
Run Code Online (Sandbox Code Playgroud)
<?php echo $id ?>
<?php echo $name ?>
Run Code Online (Sandbox Code Playgroud)
public function catalog()
{
$this->load->model('Catalog_products');
$data = $this->Catalog_products->Show_all_products();
$this->load->view('catalog', $data);
}
Run Code Online (Sandbox Code Playgroud) 在Codeigniter中,当我使用form_open()函数时,它会添加index.php到url.
怎么能删除它?
注意:我使用htaccess从url中删除了index.php.
我在我的视图中有这个代码.
$country = array(
'id' => 'country',
'name' => 'country',
'value' => get_user_info('country'),
'size' => 30
);
<tr>
<td><?php echo form_label('Country', $country['id']); ?></td>
<td><?php echo form_input($country); ?></td>
<td style="color: red;"><?php echo form_error($country['name']); ?><?php echo isset($errors[$country['name']])?$errors[$country['name']]:''; ?></td>
</tr>
Run Code Online (Sandbox Code Playgroud)
get_user_info()是我的form_helper中定义的函数,如下所示:
Form_Helper.php
if(! function_exists('get_user_info')){
function get_user_info($field)
{
$ci = & get_instance();
$ci->load->model('users');
return $ci->users->get_user_profile($field);
}
}
Run Code Online (Sandbox Code Playgroud)
如您所见,在此函数内部,我通过用户模型访问数据库.User_Model
function get_user_profile($field)
{
$user_id = $this->session->userdata('user_id');
$this->db->select($field);
$this->db->where('user_id',$user_id);
$query = $this->db->get($this->profile_table_name);
if($query->num_rows()==1)return $query->row();
return NULL;
}
Run Code Online (Sandbox Code Playgroud)
我们的想法是在页面加载时自动填充表单的Country字段.
但在视图中我收到此错误
A PHP Error was encountered
Severity: Warning
Message: …Run Code Online (Sandbox Code Playgroud) CodeIgniter - 我在控制器中有一个公共函数,但我不希望有人通过URL请求它.
即,我有这个:
public function process_images($images) {
...
}
Run Code Online (Sandbox Code Playgroud)
我需要公开因为我正在使用GroceryCRUD并使用回调 - 将其设置为受保护意味着GroceryCRUD不会使用其回调来调用它.
所以看起来它必须是公开的.我如何声明它是公开的,但确保CodeIgniter不会从URL请求中调用它(即,如果我去http://site.com/images/process_images/test.jp它不会调用它::process_images('test.jpg'))
这已经困扰了我一个星期了.好吧,我非常需要在用户成功登录后清除登录页面的缓存,并防止用户在按下后退按钮后退出后查看上一页.我尝试在codeigniter中添加此代码(索引页面和登录页面),但仍然没有任何反应
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Pragma: no-cache");
Run Code Online (Sandbox Code Playgroud)
以及这一个:
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
<META HTTP-EQUIV="EXPIRES" CONTENT="01 Jan 1970 00:00:00 GMT">
<META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
Run Code Online (Sandbox Code Playgroud)
我已经在考虑在后台运行的同步任务来检查会话但是我在AJAX中并不是那么好.那么我想要的就是让它像使用轨道上的红宝石一样简单Cache-Control: no-cache.顺便说一下,我也没有关于ruby的知识,但看到代码让我想知道为什么在codeigniter中没有像这样的简单解决方案?解决这个问题的任何解决方案?
我刚刚开始使用活动记录(之前我只是编写手动查询,因为我已经习惯了它们).
我正在查看ion_auth的代码,我发现即使使用了活动记录,在某些地方字符串也已被转义,
即
->where($this->identity_column, $this->db->escape_str($identity))
->where($this->tables['groups'].'.name', $this->db->escape_str($group))
Run Code Online (Sandbox Code Playgroud)
事实是,我没有逃过任何我使用过活动记录的地方,因为在文档上它表示活动记录会自动转义字符串.
我的问题,当使用活动记录时,是否存在一些应该转义字符串的情况?
codeigniter ×10
php ×7
activerecord ×2
mysql ×2
.htaccess ×1
cookies ×1
escapestring ×1
file-upload ×1
forms ×1
grocery-crud ×1
http-headers ×1
public ×1
session ×1