jQuery-File-Upload mysql select显示所有文件,而不仅仅是用户的文件

时间:2014-08-13 10:23:01

标签: php jquery mysql jquery-file-upload

欢迎,

我遇到了jQuery-File-Upload的问题。我将插件与MySQL集成 - > https://github.com/blueimp/jQuery-File-Upload/wiki/PHP-MySQL-database-integration当我将文件添加到数据库中时添加了记录:name file, id_user, active...添加了很好的内容。

加载我的网站后,加载的是列表上传文件:https://stackoverflow.com/a/15448692/2788495

我只想加载当前加载所有用户文件。

jQuery代码:

    $.ajax({
// Uncomment the following to send cross-domain cookies:
//xhrFields: {withCredentials: true},
url: $('#fileupload').fileupload('option', 'url'),
    dataType: 'json',
    context: $('#fileupload')[0],
    formData:{
        user: '<?php echo $objSession->e_ident ?>'
    }
}).done(function (result) {
    $(this).fileupload('option', 'done')
        .call(this, null, {result: result});
});

PHP:

protected function handle_form_data($file, $index) {
    $file->title = @$_REQUEST['title'][$index];
    $file->description = @$_REQUEST['description'][$index];
    $file->user=@$_REQUEST['user'];
}
    protected function set_additional_file_properties($file) {
    parent::set_additional_file_properties($file);
    if ($_SERVER['REQUEST_METHOD'] === 'GET') {
        $sql = 'SELECT `id`,`user_id` FROM `'
            .$this->options['db_table'].'` WHERE `name`=? and user_id=?';
        $query = $this->db->prepare($sql);
        $query->bind_param('ss', $file->name, $file->user);
        $query->execute();
        $query->bind_result(
            $id,
            $user
        );
        while ($query->fetch()) {
            $file->id = $id;
            $file->user=$user;
        }
    }
}

在JSON中,没有选项:&#34; id&#34;和&#34;用户&#34;。

2 个答案:

答案 0 :(得分:0)

我不知道我是否理解你想做什么。

我相信您想要显示上传文件的用户是通过会话登录到您的系统的,是吗?

此“$ objSession-&gt; e_ident”具有用户ID。

如果我是对的,你应该删除它:

来自ajax请求的

"user: '<?php echo $objSession->e_ident ?>'" ,像用户ID这样的东西应该只在服务器会话文件中,而不是在页面上。

您应该将用户ID直接放在查询绑定上,如下所示: $query->bind_param('ss', $file->name, $objSession->e_ident);

现在您的问题,您的查询看起来正确,是$ objSession-&gt; e_ident为用户提供了真正正确的ID?

进入user_id列有值的数据库?

答案 1 :(得分:0)

这不会奏效。它没有从数据库中读取文件列表。数据库用于捕获有关该文件的其他信息。它读取文件目录的内容。

解决方案是启用user_dirs。

更改第50行

'user_dirs' => false,

'user_dirs' => true,

我假设您已登录用户创建用户ID会话。第217行......

protected function get_user_id() {
@session_start();
return session_id();
}

将其更改为

protected function get_user_id() {
return $_SESSION['user_id'];
}

或者您的会话用户ID是什么。确保index.php上的会话在该页面上处于活动状态。

这样做是为了创建一个与用户的会话user_id同名的目录。所以他们只能看到该目录中的文件。