我在MySQL中有一个类型为text的字段,使用以下排序规则:utf8_general_ci.
使用使用DOMDocument构建的变量填充此XML字段:
function ed_audit_node($dom, $field, $new, $old){
//create audit_detail node
$ad = $dom->createElement('audit_detail');
$fn = $dom->createElement('fieldname');
$fn->appendChild($dom->createTextNode($field));
$ad->appendChild($fn);
$ov = $dom->createElement('old_value');
$ov->appendChild($dom->createTextNode($old));
$ad->appendChild($ov);
$nv = $dom->createElement('new_value');
$nv->appendChild($dom->createTextNode($new));
$ad->appendChild($nv);
//append to document
return $ad;
}
Run Code Online (Sandbox Code Playgroud)
这是我如何保存到db($ xml来自$ dom-> saveXML()):
function ed_audit_insert($ed, $xml){
global $visitor;
$sql = <<<EOF
INSERT INTO ed.audit
(employee_id, audit_date, audit_action, audit_data, user_id)
VALUES (
{$ed[emp][employee_id]},
now(),
'{$ed[audit_action]}',
'{$xml}',
{$visitor[user_id]}
);
EOF;
$req = mysql_query($sql,$ed['db']) or die(db_query_error($sql,mysql_error(),__FUNCTION__));
//snip
}
Run Code Online (Sandbox Code Playgroud)
请参阅一个较旧的,平行的,稍微相关的关于我如何创建此XML的线程: 另一个PHP XML解析错误:"输入不正确的UTF-8,表示编码!"
有效: - 查询数据库,选择字段并使用jQuery(.ajax())输出并填充textarea.Firebug和textarea匹配数据库中的内容(与Toad确认).
什么不起作用 …
如果我有一个粗略结构的html文档
<html>
<head>
</head>
<body class="bodyclass" id="bodyid">
<div class="headerstuff">..stuff...</div>
<div class = "body">
<form action="http://example.com/login" id="login_form" method="post">
<div class="form_section">You can login here</div>
<div class="form_section">
<input xmlns="http://www.w3.org/1999/xhtml" class="text" id="username"
name="session[username_or_email]" tabindex="1" type="text" value="" />
</div>
<div class="form_section">etc</div>
<div xmlns="http://www.w3.org/1999/xhtml" class="buttons">
<button type="submit" class="" name="" id="go" tabindex="3">Go</button>
<button type="submit" class="" name="cancel"
id="cancel" tabindex="4">Cancel</button>
</div>
</form>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
您可以看到有一个用户名字段和一个Go按钮.我如何使用Javascript填写用户名并按Go ...?
我更喜欢使用普通的JS,而不是像jQuery这样的库.
Here is the scenario:
Run Code Online (Sandbox Code Playgroud)
1.通过选中标题行复选框选择所有行.2.取消选择一行.3.仍然检查标题行复选框,该选项无效,因为未选择所有行.
如何取消选中hedaer行复选框?谢谢
根据crypt()文档,salt需要是字母"./0-9A-Za-z"的22个64位.
这是他们给出的代码示例:
crypt('rasmuslerdorf', '$2a$07$usesomesillystringforsalt$');
Run Code Online (Sandbox Code Playgroud)
第一个令人困惑的部分是盐有25个字符,而不是22个字符.
问题1:这是不是意味着盐应该是更长的超过22个字符?
然后我自己测试了这个功能并发现了一些东西 如果我使用20个字符的盐,我会得到这个
// using 20 char salt: 00000000001111111111
crypt('rasmuslerdorf', '$2a$07$00000000001111111111$');
// $2a$07$00000000001111111111$.6Th1f3O1SYpWaEUfdz7ieidkQOkGKh2
Run Code Online (Sandbox Code Playgroud)
因此,当我使用20个字符的盐时,整个盐都在输出中.这很方便,因为我不必将盐存放在一个单独的地方.(我想使用随机盐).我将能够从生成的哈希中读取盐.
但是,如果我使用22字符盐作为文档说明,或者更长的盐,最后将盐切断.
// using 22 char salt: 0000000000111111111122
crypt('rasmuslerdorf', '$2a$07$0000000000111111111122$');
// $2a$07$000000000011111111112uRTfyYkWmPPMWDRM/cUAlulrBkhVGlui
// 22nd character of the salt is gone
// using 25 char salt: 0000000000111111111122222
crypt('rasmuslerdorf', '$2a$07$0000000000111111111122222$');
// $2a$07$000000000011111111112uRTfyYkWmPPMWDRM/cUAlulrBkhVGlui
// Same hash was generated as before, 21 chars of the salt are in the hash
Run Code Online (Sandbox Code Playgroud)
问题2:那么,盐的长度到底是多少?20?22?更长?
问题3:此外,在检查密码时,从哈希中读取盐是否是个好主意?而不是将盐存储在单独的字段中并从那里读取.(这似乎是多余的,因为盐似乎包含在哈希中).
为什么这不起作用?我是CSS的新手,我不知道为什么以下内容不起作用.
<div id="nav">
<ul id="tabnav">
<li class="selected"><a href="index.php">Tab One</a></li>
<li><a href="index2.html">Tab Two</a></li>
<li><a href="index3.html">Tab Three</a></li>
<li><a href="index4.html">Tab Four</a></li>
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS:
ul #tabnav li.selected {
background-color: #f00;
}
Run Code Online (Sandbox Code Playgroud) 在我的.js文件的根目录中,我声明:
var Doe = {
"foo": "The quick brown fox jumps over the lazy dog.",
"bar": "ABCDEFG",
"baz": [52, 97],
"testfunc": function(){alert('json function');}
}
Run Code Online (Sandbox Code Playgroud)
在我的HTML中:
<a id="lele" href="javascript:void(0)" onclick="Doe.testfunc()">Doe</a>
Run Code Online (Sandbox Code Playgroud)
当我单击它时它可以工作,所以我知道可以将函数放在JSON对象中.
现在,在.js我声明的根目录中:
$.getJSON("~/rule/2", function(data) {
alert("2: " + data.foo);
data.testfunc();
});
Run Code Online (Sandbox Code Playgroud)
并且服务器为此url返回此信息:
context.Response.ContentType = "application/json";
context.Response.Output.Write(@"{
""foo"": ""The quick brown fox jumps over the lazy dog."",
""bar"": ""ABCDEFG"",
""baz"": [52, 97],
""testfunc"": function(){alert('json function');}
}");
context.Response.Flush();
Run Code Online (Sandbox Code Playgroud)
但没有任何反应:(显然是因为如果有错误,.getJSON将无声地失败.但是,如果我删除有关该函数的行:
$.getJSON("~/rule/2", function(data) {
alert("2: " + data.foo);
});
Run Code Online (Sandbox Code Playgroud)
和
context.Response.Output.Write(@"{ …Run Code Online (Sandbox Code Playgroud) 假设我有一个R函数,其中参数可以是几个预定义命名值(其中一个是默认值)或自定义字符向量之一.如何在不依赖魔术值名称或其他标志的情况下实现此目的?
#allow use of predefined subsets or pass their own list
bratPack<-function(members='CORE',...){
if (members=='CORE')
members<-c('Emilio Estevez','Anthony Michael Hall','Rob Lowe','Andrew McCarthy','Demi Moore','Judd Nelson','Molly Ringwald','Ally Sheedy')
else if (members=='ALL')
members<-c('Emilio Estevez','Anthony Michael Hall','Rob Lowe','Andrew McCarthy','Demi Moore','Judd Nelson','Molly Ringwald','Ally Sheedy','James Spader','Robert Downey, Jr.','Jon Cryer', 'John Cusack', 'Kevin Bacon', 'Jami Gertz', 'Mary Stuart Masterson', 'Matthew Broderick', 'Sean Penn', 'Kiefer Sutherland')
...
}
Run Code Online (Sandbox Code Playgroud) 我在访问或插入数据库之前在每个$ _get或$ _post中使用它.
我确定这还不够......但它有多安全?我可以将它与一些表达相结合,使其更安全吗?
非常感谢!
那怎么样?mysql_real_escape_string(htmlspecialchars($ value));
我在使用Func在LINQ to SQL查询中使用投影时发现了一些意外行为.示例代码将比单词更好地解释.
使用投影的基本L2S lambda查询:
db.Entities.Select(e => new DTO(e.Value));
Run Code Online (Sandbox Code Playgroud)
它转换为所需的SQL:
SELECT [t1].[Value]
FROM [Entity] AS [t1]
Run Code Online (Sandbox Code Playgroud)
但是,当投影放入Func时,如下所示:
Func<Entity, DTO> ToDTO = (e) => new DTO(e.Value);
Run Code Online (Sandbox Code Playgroud)
并且这样称呼:
db.Entities.Select(e => ToDTO(e));
Run Code Online (Sandbox Code Playgroud)
SQL现在撤回表中的所有列,而不仅仅是投影中的列:
SELECT [t1].[Id], [t1].[Value], [t1].[timestamp], [t1].[etc...]
FROM [Entity] AS [t1]
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,如何在没有LINQ to SQL实例化整个实体的情况下封装这个投影?
要记住的事情,我使用的DTO有一个受保护的默认构造函数,所以我不能使用对象初始化程序.由于无法修改DTO类,我必须创建一个子类来实现该行为.哪个好,如果这是唯一的解决方案.
谢谢.
编辑:
感谢Brian的解决方案.我之前尝试过一个Expression但无法弄清楚语法.这是工作代码:
Expression<Entity, DTO> ToDTO = (e) => new DTO(e.Value);
Run Code Online (Sandbox Code Playgroud)
然后像这样称呼它:
db.Entities.Select(ToDTO);
Run Code Online (Sandbox Code Playgroud)
起初我试图像这样调用它,这不会编译.这是调用Func的正确语法,但不是表达式.
db.Entities.Select(e => ToDTO(e));
Run Code Online (Sandbox Code Playgroud) 我创建了一个Python脚本,我想通过Ubuntu服务器上的cronjob每天运行.
这是从命令行运行此脚本的方式:
python /home/username/public_html/IDM_app/manage.py cleanUpPosts
Run Code Online (Sandbox Code Playgroud)
从CLI调用时,脚本运行正常.
但是,当我尝试通过cronjob运行脚本时,脚本无法正常运行.日志文件显示正在请求脚本,但它们未显示脚本未正确执行的原因.
我在脚本中添加了Python日志记录.从CLI调用脚本时,日志记录正确进行.从cron调用时,python日志记录无法写入其日志文件.
我怀疑问题是cronjob在请求脚本时没有运行shell.
我似乎无法找到cron守护进程记录错误的任何地方.
我创建了/var/log/cron.log
然而这似乎没有更新.
由于我认为问题源于ENV变量,我试图让cronjob为自己显示ENV.
这是我的crontab的样子:
$ crontab -u username -e
m h dom mon dow command
43 17 * * * /bin/sh python /home/username/public_html/IDM_app/manage.py cleanUpPosts
43 17 * * * python /home/username/public_html/IDM_app/manage.py cleanUpPosts
45 21 * * * echo "-----------------"; echo "import os; print os.environ" | python
47 21 * * * /bin/sh echo "------with shell-------"; echo "import os; printos.environ" | python
MAILTO=bryanw@nowhere.com
Run Code Online (Sandbox Code Playgroud)
我以为它会输出到屏幕,但它没有.ENV变量在哪里输出?
无论如何,这里是日志文件:
# tail -n 5 /var/log/*.log
==> …Run Code Online (Sandbox Code Playgroud)