小编Dav*_*vid的帖子

我们应该清理$ _FILES ['filename'] ['name']吗?

用户将图像上传到服务器后,我们应该进行消毒$_FILES['filename']['name']吗?

我检查文件大小/文件类型等.但我不检查其他事情.是否存在潜在的安全漏洞?

谢谢

php

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

生成LINQ到DB2?

我的工作中有一个现有的DB2数据库.(至少,我认为它是DB2.它们将它称为"iSeries",它在某些大型机硬件上看起来和感觉就像DB2.)多年来我部门的.NET开发人员只需手动编写ADO命令和查询从特定表格等获取特定数据

目前,我正在构建一些基础架构,以帮助简化内部软件的开发和支持,我想解决的一件事就是这种数据访问.我对各种ORM工具有点新意,但我熟悉LINQ语法,这就是我想要的.这就是我们现在所拥有的:

  1. 已建立的DB2数据库,包含许多表.
  2. 代码中没有已建立的业务对象.
  3. 表与任何潜在的业务对象之间没有有用的关系.

所以我要做的是在代码和DB2数据库之间创建一个抽象层,开发人员可以基本上更加流畅有效地完成他们已经做的事情(抓取数据并填充自定义对象).也就是说,不要创建经典的ADO对象并填充DataSet,只需编写一个简单的LINQ语句,该语句返回一个匿名的IQueryable,其中包含填充自定义对象的字段.(作为一个额外的好处,我真的很喜欢编译时错误的想法,当程序员弄乱了一些东西而不是运行时错误时,就像打字输入到SQL命令字符串文字时那样.而且,甚至不让我这里开始讨论SQL注入漏洞.)

问题是,我还没有找到任何方法来实现这一目标.完全有可能我忽略了一些简单的事情,如果是这样的话,那么我欢迎在正确的方向上稍微推动一下.但是,我发现在线的所有内容都符合以下类别之一:

  1. 是的,你可以这样做!您所需要的只是来自IBM的驱动程序,没有下载链接!
  2. 这是一个方便的教程,用于为业务对象生成一个很好的ORM,从头开始创建数据库.(NHibernate,大多数情况下,如果我可以将它用于我正在尝试做的事情,这将非常棒.)
  3. 下载一些工具并生成您的ORM.(当我尝试时,工具不支持DB2,或声称但失败.)

以前有人碰到这样的事吗?我是以完全不正确的方式接近它吗?对此事的任何建议都将不胜感激,谢谢.

编辑:我将继续前进,并为此提供赏金.我和一些人谈过,听起来"它还不能完成"仍然是回答,但如果有人解决这个问题并找到了解决方案,我很乐意听到.

更新:感谢下面的答案指向我的DB_Linq项目.实际上我没有花太多时间为它添加一些基本的DB2支持,现在我有一个经过测试和工作的LINQ to DB2提供程序!它现在非常简单,并且非常适合我们的环境,因此没有计划将其贡献给项目.但希望我能够随着时间的推移成熟我的叉子并将其发回.谢谢!

.net db2 orm data-access-layer

9
推荐指数
1
解决办法
5163
查看次数

防止表单被提交两次

我有一个简单的PHP表单,如下所示:

<?php

if(isset($_POST['myform']))
   // email...
else
   // display form
Run Code Online (Sandbox Code Playgroud)

问题是如果我在提交表单后刷新页面,它会被提交两次.我怎样才能防止这种情况发生?

html php forms form-submit

9
推荐指数
1
解决办法
8746
查看次数

具有多个数据源的工作单元?

有可能(甚至可能)我只是没有完全理解"工作单元"的概念.基本上,我将其视为面向对象环境中使用的广泛事务.启动工作单元,与对象交互,提交或回滚.但是,这如何分解为这些对象背后的数据存储的实际事务?

在具有单个DB和ORM(例如NHibernate)的系统中,它很容易.可以通过ORM维护交易.但是,自定义域模型隐藏了许多不同数据源的系统呢?并非所有这些数据源都是关系数据库?(这里的文件系统已经做了很多.)

现在,我坚持认为"你根本无法在同一'原子'业务操作中跨SQL2005数据库,SQL2000数据库,DB2数据库和文件系统维护事务." 因此,目前,团队中的开发人员(通常彼此独立工作)负责在代码中手动维护事务.每个DB都可以在其上进行适当的事务处理,但是整个业务操作都是手动检查并在每个重要步骤中进行平衡.

但是,随着域和标准开发人员流动的复杂性增加,这种方法将变得越来越困难并且随着时间的推移而容易出错.

有没有人有任何关于如何最好地解决这样一个领域的建议或例子,或者之前如何处理它?在这种情况下,实际的"域"仍处于起步阶段,随着原型的发展,有朝一日扩展并消耗/替换大型不同遗留应用程序的生态系统.因此,有足够的空间进行重新设计和重新分解.

作为参考,我目前的目标是10,000英尺的设计视图:大量的小型as-dumb-as-possible客户端应用程序调用基于消息的中央服务.该服务是"域核心"的入口,可以被认为是一个大型MVC风格的应用程序.对服务进行请求(很像"动作"),由处理程序拾取(很像"控制器").任何程序都在那里.它们与包含所有业务规则的模型进行交互.模型发布的事件是监听器("服务"?这部分在设计中仍然是多云并且需要改进)通过与存储库(数据库x,数据库y,文件系统,电子邮件,任何外部资源)交互来获取和处理.所有的快乐依赖注入相应.

抱歉所有的冗长:)但如果有人有任何建议,我很乐意听到它.即使(特别是)如果这个建议是"你的设计很糟糕,试试这个......"谢谢!

architecture soa unit-of-work

9
推荐指数
1
解决办法
2982
查看次数

为什么这种递归不是无限的?

我和我的朋友正在进行一些基本的Ruby练习以了解语言,我们遇到了一个我们无法理解的有趣行为.基本上,我们创建的tree数据类型只有一个类node,它只包含一个值和一个零或更多的数组nodes.我们正在使用rspec的autospec测试运行器.有一次,我们开始编写测试以禁止无限递归(循环树结构).

这是我们的测试:

it "breaks on a circular reference, which we will fix later" do
  tree1 = Node.new 1
  tree2 = Node.new 1
  tree2.add_child tree1
  tree1.add_child tree2
  (tree1 == tree2).should be_false
end
Run Code Online (Sandbox Code Playgroud)

这是Node类:

class Node
  attr_accessor :value
  attr_reader :nodes

  def initialize initial_value = nil
    @value = initial_value
    @nodes = []
  end

  def add_child child
    @nodes.push child
    @nodes.sort! { |node1, node2| node1.value <=> node2.value }
  end

  def == node
    return (@value == node.value) && …
Run Code Online (Sandbox Code Playgroud)

ruby recursion rspec

9
推荐指数
1
解决办法
644
查看次数

计算运行某个功能所需的时间

我有可能吗?例如.如果我想测试是否str_replace()更快preg_replace()

php performance function

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

StructureMap中的命名实例和默认实例?

在我的StructureMap引导代码中,我使用自定义约定来扫描程序集并将接口/实现对作为命名实例添加到对象图中.基本上我有一些逻辑可以检查配置设置,并根据不同的条件深入到这个语句:

registry.For(interfaceType).Use(type)
    .Named(implementationName);
Run Code Online (Sandbox Code Playgroud)

这足以添加所有命名实例.但是,我还想在未指定实例名称的情况下添加默认实例.但是,默认实例并不总是添加到图表中的最后一个实例.有时在扫描期间会添加其他命名实例.但是,似乎最后添加的任何一个实例,无论它是否被命名,都始终是默认的.

我尝试了各种流畅的API组合,包括:

registry.For(interfaceType).Add(type);
Run Code Online (Sandbox Code Playgroud)

要么:

registry.For(interfaceType).Use(type);
Run Code Online (Sandbox Code Playgroud)

甚至一些标记为已弃用的.但最终的行为始终是最后一个是默认行为.因此,如果添加实现的顺序是这样的:

  1. 对于Logger接口,使用名为"Log4Net"的Log4Net实现
  2. 对于Logger接口,默认使用Log4Net实现
  3. 对于Logger接口,使用名为"Mock"的Mock实现

由此产生的行为是,当未指定名称时,"Mock"实现将用作默认值.调试进入AllInstances容器,我按以下顺序看到:

  1. Log4Net记录器的一个实例,名为"Log4Net"
  2. Log4Net记录器的一个实例,带有名称的GUID(就像我可以告诉的那样,任何其他默认实例)
  3. Mock记录器的一个实例名为"Mock"

但是,从没有实例名称的容器调用时调试到日志记录语句会导致使用Mock实现.

有没有办法在对象图中添加默认实例,同时仍然能够在之后添加命名实例?

.net c# structuremap dependency-injection ioc-container

9
推荐指数
1
解决办法
7228
查看次数

整数翻倍?

我有一个包含计算结果的双精度数.

即2.123等

有一个简单的方法,我可以将这个数字四舍五入到下一个数字,即3

我搜索了论坛,但只提出如何舍入到小数位.

干杯

java android

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

removeEventListener无法正常工作

我不知道我做错了什么,但这是我正在做的一个例子,它似乎没有用.

someDom.addEventListener('mousemove',function(ev) {self.onInputMove(ev)},false);

someDom.removeEventListener('mousemove',self.onInputMove);
Run Code Online (Sandbox Code Playgroud)

执行removeEventListener代码,但它不会删除'mousemove'侦听器

javascript event-listener

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

如何检查数组是否只包含一个不同的元素?

如何检查我的数组是否只包含一个不同的元素?`

var arr = [1, 1, 1];
var arr2 = [1, 2, 3];
checkIfThereIsOnlyOneElement(arr); //should return true
checkIfThereIsOnlyOneElement(arr2) //should return false;`
Run Code Online (Sandbox Code Playgroud)

javascript

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