小编Bar*_*art的帖子

MySQL"in clause"中的项目数

我有三个表来定义用户:

USER: user_id (int), username (varchar)
USER_METADATA_FIELD: user_metadata_field_id (int), field_name (varchar)
USER_METADATA: user_metadata_field_id (int), user_id (int), field_value (varchar)
Run Code Online (Sandbox Code Playgroud)

我想创建一个中间层用户,该用户可以访问应用程序中的其他用户.要确定登录使用的用户可以访问哪些用户,我使用如下的子查询:

SELECT user_id FROM user WHERE user_id 
     IN (SELECT user_id 
         FROM user_metadata 
         WHERE user_metadata_field_id = 1 AND field_value = 'foo')
Run Code Online (Sandbox Code Playgroud)

目前,我将子查询字符串存储在变量中,然后在每次需要提取用户列表时将其动态插入到外部查询中.在这样做之后,我想,"只需存储一串实际的user_ids 就更好了".

所以不要将其存储在变量中......

$subSql = "SELECT user_id FROM user_metadata WHERE user_metadata_field_id = 1 AND field_value = 'foo'";
Run Code Online (Sandbox Code Playgroud)

...我实际执行查询并存储结果,如...

$subSql = "12, 56, 89, 100, 1234, 890";
Run Code Online (Sandbox Code Playgroud)

然后当我需要拉出登录用户可以访问的点亮用户时,我可以这样做:

$sql = "SELECT user_id FROM user WHERE user_id IN ($subSql)";
Run Code Online (Sandbox Code Playgroud)

最后问题是:

您可以在MySQL IN …

mysql sql in-clause

64
推荐指数
4
解决办法
7万
查看次数

使用PHP/Apache限制对静态文件的访问(html,css,img等)

假设您在服务器上的目录中有很多html,css,js,img等文件.通常,只需输入完整的URL就可以访问Internet-land中的任何用户:http://example.com/static-files/sub/index.html

现在,如果您只希望授权用户能够加载这些文件,该怎么办?对于此示例,假设您的用户首先从以下网址登录:http://example.com/login.php

您将如何允许登录用户查看index.html文件(或"static-files"下的任何文件),但将文件限制为其他所有人?

到目前为止,我已经提出了两种可能的解决方案:

解决方案1
在"static-files"下创建以下.htaccess文件:

Options +FollowSymLinks  
RewriteEngine on  
RewriteRule ^(.*)$ ../authorize.php?file=$1 [NC]
Run Code Online (Sandbox Code Playgroud)

然后在authorize.php中......

if (isLoggedInUser()) readfile('static-files/'.$_REQUEST['file']);
else echo 'denied';
Run Code Online (Sandbox Code Playgroud)

这个authorize.php文件大大简化了,但你明白了.

解决方案2
在"static-files"下创建以下.htaccess文件:

Order Deny,Allow
Deny from all
Allow from 000.000.000.000
Run Code Online (Sandbox Code Playgroud)

然后我的登录页面可以为每个登录的用户附加带有IP的.htaccess文件.显然,这还需要某种清理例程来清除旧的或不再使用的IP.


我担心我的第一个解决方案在服务器上会变得相当昂贵,因为他们访问的用户和文件的数量会增加.我认为我的第二个解决方案会便宜得多,但由于IP欺骗等原因也不太安全.我还担心如果有很多同时用户,将这些IP地址写入htaccess文件可能会成为应用程序的瓶颈.

哪些解决方案听起来更好,为什么?或者,你能想到一个完全不同的解决方案,它会比其中任何一个更好吗?

php apache security .htaccess

38
推荐指数
3
解决办法
3万
查看次数

文件协议下的Javascript/HTML存储选项(文件://)

我正在开发一个html应用程序,它本质上是一系列页面,如书.在这个应用程序中,我想在页面中存储几个JavaScript变量.考虑页面读取,书签等等.当通过HTTP查看此应用程序时,我计划将localStorage与旧浏览器的回退(globalStorage,userData等)一起使用.

但是,如果通过"file://"访问文件,则会完全崩溃,例如,如果从CD上查看.似乎大多数(如果不是全部)localStorage解决方案都不能在文件协议下工作.Cookie不是"file://"下的选项.

有关如何在通过"file://"查看html页面时保存JavaScript数据的任何想法?

它实际上只需要在当前用户会话中可用.我真的不想使用框架,但到目前为止,我想不出另一种方法来实现这一点

html javascript local-storage file-uri

25
推荐指数
1
解决办法
7697
查看次数

Backbone/Require Application中共享对象的最佳实践

我一直在开发Backbone应用程序,我刚开始学习使用Backbone和Require.js.

在我重构的骨干应用程序中,我定义了一个这样的命名空间:App.model.repo.该模型在不同视图中反复使用.例如,我用一些集合做同样的事情App.collection.files.使用初始索引文件请求引导这些模型和集合.

我确实找到了这个示例,这看起来像是获取引导数据的好方法.但是,我正在努力寻找重用/共享这些模型和视图之间的集合的最佳方法.

我可以想到三种可能的解决方案.哪个最好,为什么?或者是否有我完全遗漏的另一种解决方案?

解决方案1

在索引中定义这些常用模块和集合(当它们被引导时),然后将它们作为选项(of initialize)传递给每个Backbone视图.

define(['jquery', 'underscore', 'backbone', 'handlebars', 'text!templates/NavBar.html'], 
    function($, _, Backbone, Handlebars, template){     
        return Backbone.View.extend({
            template: Handlebars.compile(template),
            initialize: function(options){
                this.repoModel = options.repoModel; // common model passed in
            }
        });
    }
);
Run Code Online (Sandbox Code Playgroud)

就分离来说,这些看起来很干净,但是可以快速得到时髦,大量的东西都会传遍整个地方.

解决方案2

定义globals模块,并向其中添加常用的模型和集合.

// models/Repo.js
define(['backbone'],
    function(Backbone){
        return Backbone.Model.extend({
            idAttribute: 'repo_id'
        });
    }
);

// globals.js (within index.php, for bootstrapping data)
define(['underscore', 'models/Repo'], 
    function(_, RepoModel){     
        var globals = {};

        globals.repoModel = new Repo(<?php echo json_encode($repo); ?>); …
Run Code Online (Sandbox Code Playgroud)

amd requirejs backbone.js

17
推荐指数
1
解决办法
2659
查看次数

使用where方法的Backbone/Underscore链方法

我必须在这里找到一些简单的东西.

http://jsfiddle.net/v9mdZ/

我正在学习Backbone和Underscore/loDash,我正在努力学习chain.

我有以下代码,它按预期工作:

var ids = _.pluck(collection.where({'is_checked':true}), 'id');
Run Code Online (Sandbox Code Playgroud)

我尝试重构这个,使用chain如下:

var ids = collection.chain().where({'is_checked':true}).pluck('id').value();
Run Code Online (Sandbox Code Playgroud)

为什么重构代码不起作用?我用chain错了吗?

解决方案(详见下方)

不要使用wherechain.

backbone.js underscore.js lodash

14
推荐指数
1
解决办法
2772
查看次数

是否应该使用listenTo/stopListening替换所有Backbone开/关事件?

据我已经能够告诉,listenTostopListening应更换onoff分别.我理解正确吗?是否有任何情况应该on/ off应该使用而不是listenTo/ stopListening

编辑:

当我去重构我的代码时,很明显有些情况可以on结束listenTo.该文档是很清楚,它是当一个对象监听到另一个对象:

告诉一个对象来听一个特定事件上的其他对象.

因此,当a collectionmodel正在听自己的事件时,我们应该使用on而不是listenTo.

假设我有这个正确的......

遵循的简单规则是:

listenTo在侦听另一个对象上的事件时使用.on在听取自我事件时使用.

backbone.js

14
推荐指数
2
解决办法
7840
查看次数

使用PHP枚举LDAP中的所有用户

我想创建一个作为每日cron运行的PHP脚本.我想要做的是枚举Active Directory中的所有用户,从每个条目中提取某些字段,并使用此信息更新MySQL数据库中的字段.

基本上我想要做的是在Active Directory和MySQL表之间同步某些用户信息.

我遇到的问题是,Active Directory服务器上的sizelimit通常设置为每个搜索结果1000个条目.我曾希望php函数"ldap_next_entry"能够通过一次只获取一个条目来解决这个问题,但是在你可以调用"ldap_next_entry"之前,首先必须调用"ldap_search",这可能会触发SizeLimit超出错误.

除了从服务器上删除sizelimit之外还有什么方法吗?我可以以某种方式获得结果的"页面"吗?

顺便说一句 - 我目前没有使用任何第三方库或代码.只是PHPs的ldap方法.虽然,如果有帮助,我肯定愿意使用图书馆.

php ldap active-directory

12
推荐指数
2
解决办法
1万
查看次数

PHP exec安全吗?

我试图让exec在Windows服务器上工作并收到错误消息"无法分叉".在谷歌搜索了一下之后,似乎推荐的修复方法是将IUSR帐户的READ和EXECUTE权限授予c:\ Windows\System32\cmd.exe.

但那已成为一个重要的安全漏洞吗?安全吗?还有另一种方法来执行[来自php]一个驻留在服务器上的exe吗?

php security exec

11
推荐指数
1
解决办法
1万
查看次数

HTML5的"进度"或"计量表"的良好用法?

假设您有10页的调查(每页一个问题).在每个页面的顶部,您包含文本"问题2 of 10".这种事情是" 进步 "还是" 计量 "的好选择?

从语义上讲,"进步"最初似乎是最合适的.但是,我阅读和查看的例子越多,我认为"米"可能更合适.

<meter max="10" value="1">Question 1 of 10</meter>
<progress max="10" value="1">Question 1 of 10</progress>
Run Code Online (Sandbox Code Playgroud)

html5 semantics

10
推荐指数
2
解决办法
5329
查看次数

我们还应该使用EMs来获取可访问性吗?

今天所有主流浏览器默认使用页面缩放,而不是"文本大小"."文字大小"选项仍然存在,但它们更隐蔽[特别是在Chrome和Firefox中].鉴于这一事实,EMs是否优于PX或%?为什么?

html css accessibility

7
推荐指数
1
解决办法
326
查看次数