我正在努力强化我的一些PHP代码并使用mysqli预处理语句来更好地验证用户输入并防止注入攻击.
我切断了mysqli_real_escape_string,因为它没有转义%和_.但是,当我将查询创建为mysqli预处理语句时,仍然存在相同的缺陷.该查询根据用户名提取用户salt值.我会为密码和其他查找做类似的事情.
码:
$db = new sitedatalayer();
if ($stmt = $db->_conn->prepare("SELECT `salt` FROM admins WHERE `username` LIKE ? LIMIT 1")) {
$stmt->bind_param('s', $username);
$stmt->execute();
$stmt->bind_result($salt);
while ($stmt->fetch()) {
printf("%s\n", $salt);
}
$stmt->close();
}
else return false;
Run Code Online (Sandbox Code Playgroud)
谢谢,
这是C#,F#,IronPython和IronRuby集成的后续问题
为了使用Python的C/C++函数,SWIG是最简单的解决方案.反过来也可以使用Python C API,例如,如果我们有一个python函数,如下所示
def add(x,y):
return (x + 10*y)
我们可以在C中提出使用此python的包装器,如下所示.
double Add(double a, double b)
{
PyObject *X, *Y, *pValue, *pArgs;
double res;
pArgs = PyTuple_New(2);
X = Py_BuildValue("d", a);
Y = Py_BuildValue("d", b);
PyTuple_SetItem(pArgs, 0, X);
PyTuple_SetItem(pArgs, 1, Y);
pValue = PyEval_CallObject(pFunc, pArgs);
res = PyFloat_AsDouble(pValue);
Py_DECREF(X);
Py_DECREF(Y);
Py_DECREF(pArgs);
return res;
}
IronPython/C#甚至F#怎么样?
我使用VIM作为文本编辑器,编辑了很多XML和WSDL文件.
WSDL文件有一个XSD部分.我可以使用一些VIM插件来遍历XSD类型吗?即,如果我有以下行,插入符号是'|' 标志是:
<xsd:element minOccurs="0" name="FooName" type="Magic|FooType"/>
Run Code Online (Sandbox Code Playgroud)
我按Ctrl + Alt + Foo(或其他一些魔法组合)它会让我看到MagicFooType的定义,即:
<xsd:complexType name="MagicFooType">
Run Code Online (Sandbox Code Playgroud)
我找不到如何使用ctags以及我能找到的所有其他插件用于命令式语言(即Java).是否有一些插件/脚本来完成这项工作?
我有这个脚本在sql server 2005中工作
-- t-sql scriptlet to drop all constraints on a table
DECLARE @database nvarchar(50)
DECLARE @table nvarchar(50)
set @database = 'dotnetnuke'
set @table = 'tabs'
DECLARE @sql nvarchar(255)
WHILE EXISTS(select * from INFORMATION_SCHEMA.TABLE_CONSTRAINTS where constraint_catalog = @database and table_name = @table)
BEGIN
select @sql = 'ALTER TABLE ' + @table + ' DROP CONSTRAINT ' + CONSTRAINT_NAME
from INFORMATION_SCHEMA.TABLE_CONSTRAINTS
where constraint_catalog = @database and
table_name = @table
exec sp_executesql @sql
END
Run Code Online (Sandbox Code Playgroud)
它在SQL Server 2008中不起作用.如何轻松删除某个表的所有外键约束?有没有人有更好的脚本?
请考虑以下代码:
[Test]
public void WidgetTest()
{
foreach (Widget widget in widgets)
{
Assert.AreEqual(0, widget.SomeValue);
}
}
Run Code Online (Sandbox Code Playgroud)
如果其中一个断言失败,我将得到一个非常无用的错误消息,如下所示:
1) Test Failure : WidgetTest.TestSomeValue
Expected: 0
But was: 1
at WidgetTest.TestSomeValue()
Run Code Online (Sandbox Code Playgroud)
所以,问题是,如何让NUnit显示更多有用的信息,例如小部件的名称,或循环的迭代等?即使行号也会更有帮助,因为这是以自动方式运行的,我希望能够在不调试代码的情况下发现失败的断言.
我已经在我的计算机上安装了Windows7,我不得不更改所有权限/取得所有权 - 这显然"触及"了我的所有文件,现在一切似乎都被"修改"(当我做"hg status"时),但只有一些文件有实际的变化.
是否有一个命令我可以运行,以便"提交"或"恢复"所有没有实际更改的文件(即文本未更改,即使文件属性已更改).
添加:
我已经从WinXP升级到Win7.我实际上并没有"复制"任何东西,磁盘上的存储库是相同的....它只是改变了Windows.升级后,我无法访问某些文件,我需要"取得所有权"才能重新获得访问权限(不知何故,用户权限未得到妥善保存).这是我得到的:
$ hg stat
../../test/acceptance/spidermonkey/js1_5/String/regress-179068.as M
$ hg diff ../../test/acceptance/spidermonkey/js1_5/String/regress-179068.as
Run Code Online (Sandbox Code Playgroud) 在SQL Server 2005中使用Reporting Services:是否有办法只计算非空的记录; 类似于Excel中的"COUNTA"?我认为这将是一个非常简单的过程,但我尝试过的任何工作都没有.例如,我尝试使用以下表达式为"已完成",这是我想要计算的一列:= count(IIF(Fields!Completed.Value ="END"))但是,这会抛出"错误的数量"参数"错误."已完成"的值为"结束"或为空.
如果有必要,我可以尝试将其用于我的SQL查询,但查询已经非常复杂.
另外,我发现很少有关于如何计算报告总数以及如何从组中计算总数的文档.有人会对什么作为参考提出任何建议吗?
更新:进一步检查时,表达式= SUM(IIF(IsNothing(Fields!Completed.Value),0,1))确实返回适当数量的记录.我错误地认为报告会记录实际报告中的记录数量,并以"结束"值表示.由于报告分组为"已完成",因此"结束"仅在报告中针对每个唯一ID显示一次(也在"已完成"之上进行分组).所以我真的需要根据小计来计算(总结?)......如果这是可能的话.
我正在使用Ruby/Rails开发SAML网关,并且我正在尝试编写一些代码来验证传入SAML响应的xml数字签名与原始服务的x509证书.
我的问题:签名依赖于XML的规范化版本被散列,然后签约,我无法找到一个Ruby的lib /宝石,将规范化每个XML 规范.我在rubyforge上发现了一个超级旧的宝石,但是如果像nokogiri这样的功能支持这种功能我会更感兴趣(来自nokogiri docs,它没有).
我已经广泛搜索过了,但我想在这里问一下是否有人有任何好的见解,然后再尝试编写我自己的版本或重新编写现有的c14n-r库.
我目前正在使用java服务包装器来包装我开发的java应用程序.我需要能够通过java服务包装器将额外的命令行参数传递给我的应用程序.
假装我的应用程序名为myapp,我设置了java服务包装器,以便我运行的脚本称为myapp.我希望能够做到这样的事情:
./myapp start Parameter1 parameter2
并将这些附加参数传递到我的应用程序中.任何想法如何做到这一点?我发现谷歌搜索和查看文档只是拉起如何使用命令行参数来设置java服务包装器.我很难找到关于将命令行参数传递给应用程序的任何内容,除非在wrapper.conf文件中对它们进行硬编码.
现在我觉得我的选择是获取额外的命令行参数,将它们设置为环境变量并在wrapper.conf中进行硬编码.我宁愿不去那条路而且我希望我忽略了一些东西.