我想在成员名称中的文件管理器中分离注册成员的目录
I want to separate directory of register member in filemanager within member name
- 我在店面添加新会员(不是客户添加的会员)
- 为他们制作登录页面和注册页面
- 会员登录后可以通过文件管理器上传自己的logo
我的问题是文件管理器显示目录文件夹中的所有图像,这是违反政策的,因为 reg.成员可以看到目录文件夹的所有图像,所以我想解决这个问题。
我想尝试用会员名建立一个目录,上传照片到那个目录,只给那个会员显示。
我的opencart版本是2.1.0.2
显然,如果文件管理器显示在前端,则意味着您已经将其文件从各自的管理文件夹复制到目录文件夹。
默认文件管理器代码是为管理员编写的,因此它显示所有文件,但对于您的成员,您必须添加条件,以便他们只能访问允许的文件夹,就像您说的那样。
为此,请编辑您的 catalog > controller > common > filemanager.php
文件并搜索此代码
if (isset($this->request->get['directory'])) {
$directory = rtrim(DIR_IMAGE . 'catalog/' . str_replace(array('../', '..\', '..'), '', $this->request->get['directory']), '/');
} else {
$directory = DIR_IMAGE . 'catalog';
}
此 $directory
变量负责显示这些文件夹。所以更新后你可以限制你的成员。
现在你说的是,基于名称会很好,但我建议名称和成员 ID 组合会很好,因为相同的名称会导致错误!!
现在您必须获取存储这些信息的当前登录会员表单 table 的详细信息。喜欢
$memberDetails = $this->db->query("your query")->row;
//Assuming $memberDetails have min 2 indexes -> ['id', 'name']
因此您的 filemanager.php 更新代码将是
if (isset($this->request->get['directory'])) {
$directory = rtrim(DIR_IMAGE . 'catalog/' . $memberDetails['id'] . $memberDetails['name'] . '/' . str_replace(array('../', '..\', '..'), '', $this->request->get['directory']), '/');
} else {
$directory = DIR_IMAGE . 'catalog'. $memberDetails['id'] . $memberDetails['name'];
}
//added member details after catalog folder.
这样你也可以添加上传和删除的条件
注意 - 未测试但会起作用:)
好的,我得到解决方案
在 filemanager.tpl
中设置变量
$('#button-upload').on('click', 函数()
{
..
var user_id='session->data['user_id']?>';
..
在 ControllerCommonFileManager 中
我编辑上传功能
public 函数上传()
{
if(!file_exists(DIR_IMAGE . 'catalog/user/' . $this->session->data['user_id']))
mkdir(DIR_IMAGE . 'catalog/user/' . $this->session->data['user_id'] , 0777);
$path = DIR_IMAGE . 'catalog/user/' . $this->session->data['user_id'];
$this->load->language('common/filemanager');
$json = array();
/* // Check user has permission
if (!$this->user->hasPermission('modify', 'common/filemanager')) {
$json['error'] = $this->language->get('error_permission');
} */
// Make sure we have the correct directory
if (isset($this->request->get['directory'])) {
$directory = rtrim(DIR_IMAGE . 'catalog/user/' . str_replace(array('../', '..\', '..'), '', $this->request->get['directory']), '/');
} else {
$directory = DIR_IMAGE . 'catalog';
}
$directory = $path;
// Check its a directory
if (!is_dir($directory)) {
$json['error'] = $this->language->get('error_directory');
}
if (!$json) {
if (!empty($this->request->files['file']['name']) && is_file($this->request->files['file']['tmp_name'])) {
// Sanitize the filename
$filename = basename(html_entity_decode($this->request->files['file']['name'], ENT_QUOTES, 'UTF-8'));
// Validate the filename length
if ((utf8_strlen($filename) < 3) || (utf8_strlen($filename) > 255)) {
$json['error'] = $this->language->get('error_filename');
}
// Allowed file extension types
$allowed = array(
'jpg',
'jpeg',
'gif',
'png'
);
if (!in_array(utf8_strtolower(utf8_substr(strrchr($filename, '.'), 1)), $allowed)) {
$json['error'] = $this->language->get('error_filetype');
}
// Allowed file mime types
$allowed = array(
'image/jpeg',
'image/pjpeg',
'image/png',
'image/x-png',
'image/gif'
);
if (!in_array($this->request->files['file']['type'], $allowed)) {
$json['error'] = $this->language->get('error_filetype');
}
// Check to see if any PHP files are trying to be uploaded
$content = file_get_contents($this->request->files['file']['tmp_name']);
if (preg_match('/\<\?php/i', $content)) {
$json['error'] = $this->language->get('error_filetype');
}
// Return any upload error
if ($this->request->files['file']['error'] != UPLOAD_ERR_OK) {
$json['error'] = $this->language->get('error_upload_' . $this->request->files['file']['error']);
}
} else {
$json['error'] = $this->language->get('error_upload');
}
}
if (!$json) {
move_uploaded_file($this->request->files['file']['tmp_name'], $directory . '/' . $filename);
$json['success'] = $this->language->get('text_uploaded');
}
$this->response->addHeader('Content-Type: application/json');
$this->response->setOutput(json_encode($json));
}
- 我在店面添加新会员(不是客户添加的会员)
- 为他们制作登录页面和注册页面
- 会员登录后可以通过文件管理器上传自己的logo
我的问题是文件管理器显示目录文件夹中的所有图像,这是违反政策的,因为 reg.成员可以看到目录文件夹的所有图像,所以我想解决这个问题。
我想尝试用会员名建立一个目录,上传照片到那个目录,只给那个会员显示。
我的opencart版本是2.1.0.2
显然,如果文件管理器显示在前端,则意味着您已经将其文件从各自的管理文件夹复制到目录文件夹。
默认文件管理器代码是为管理员编写的,因此它显示所有文件,但对于您的成员,您必须添加条件,以便他们只能访问允许的文件夹,就像您说的那样。
为此,请编辑您的 catalog > controller > common > filemanager.php
文件并搜索此代码
if (isset($this->request->get['directory'])) {
$directory = rtrim(DIR_IMAGE . 'catalog/' . str_replace(array('../', '..\', '..'), '', $this->request->get['directory']), '/');
} else {
$directory = DIR_IMAGE . 'catalog';
}
此 $directory
变量负责显示这些文件夹。所以更新后你可以限制你的成员。
现在你说的是,基于名称会很好,但我建议名称和成员 ID 组合会很好,因为相同的名称会导致错误!!
现在您必须获取存储这些信息的当前登录会员表单 table 的详细信息。喜欢
$memberDetails = $this->db->query("your query")->row;
//Assuming $memberDetails have min 2 indexes -> ['id', 'name']
因此您的 filemanager.php 更新代码将是
if (isset($this->request->get['directory'])) {
$directory = rtrim(DIR_IMAGE . 'catalog/' . $memberDetails['id'] . $memberDetails['name'] . '/' . str_replace(array('../', '..\', '..'), '', $this->request->get['directory']), '/');
} else {
$directory = DIR_IMAGE . 'catalog'. $memberDetails['id'] . $memberDetails['name'];
}
//added member details after catalog folder.
这样你也可以添加上传和删除的条件
注意 - 未测试但会起作用:)
好的,我得到解决方案
在 filemanager.tpl
中设置变量$('#button-upload').on('click', 函数() { .. var user_id='session->data['user_id']?>'; ..
在 ControllerCommonFileManager 中
我编辑上传功能
public 函数上传() {
if(!file_exists(DIR_IMAGE . 'catalog/user/' . $this->session->data['user_id']))
mkdir(DIR_IMAGE . 'catalog/user/' . $this->session->data['user_id'] , 0777);
$path = DIR_IMAGE . 'catalog/user/' . $this->session->data['user_id'];
$this->load->language('common/filemanager');
$json = array();
/* // Check user has permission
if (!$this->user->hasPermission('modify', 'common/filemanager')) {
$json['error'] = $this->language->get('error_permission');
} */
// Make sure we have the correct directory
if (isset($this->request->get['directory'])) {
$directory = rtrim(DIR_IMAGE . 'catalog/user/' . str_replace(array('../', '..\', '..'), '', $this->request->get['directory']), '/');
} else {
$directory = DIR_IMAGE . 'catalog';
}
$directory = $path;
// Check its a directory
if (!is_dir($directory)) {
$json['error'] = $this->language->get('error_directory');
}
if (!$json) {
if (!empty($this->request->files['file']['name']) && is_file($this->request->files['file']['tmp_name'])) {
// Sanitize the filename
$filename = basename(html_entity_decode($this->request->files['file']['name'], ENT_QUOTES, 'UTF-8'));
// Validate the filename length
if ((utf8_strlen($filename) < 3) || (utf8_strlen($filename) > 255)) {
$json['error'] = $this->language->get('error_filename');
}
// Allowed file extension types
$allowed = array(
'jpg',
'jpeg',
'gif',
'png'
);
if (!in_array(utf8_strtolower(utf8_substr(strrchr($filename, '.'), 1)), $allowed)) {
$json['error'] = $this->language->get('error_filetype');
}
// Allowed file mime types
$allowed = array(
'image/jpeg',
'image/pjpeg',
'image/png',
'image/x-png',
'image/gif'
);
if (!in_array($this->request->files['file']['type'], $allowed)) {
$json['error'] = $this->language->get('error_filetype');
}
// Check to see if any PHP files are trying to be uploaded
$content = file_get_contents($this->request->files['file']['tmp_name']);
if (preg_match('/\<\?php/i', $content)) {
$json['error'] = $this->language->get('error_filetype');
}
// Return any upload error
if ($this->request->files['file']['error'] != UPLOAD_ERR_OK) {
$json['error'] = $this->language->get('error_upload_' . $this->request->files['file']['error']);
}
} else {
$json['error'] = $this->language->get('error_upload');
}
}
if (!$json) {
move_uploaded_file($this->request->files['file']['tmp_name'], $directory . '/' . $filename);
$json['success'] = $this->language->get('text_uploaded');
}
$this->response->addHeader('Content-Type: application/json');
$this->response->setOutput(json_encode($json));
}