我想在数据库中存储散列密码(使用BCrypt).什么是好的类型,哪个是正确的长度?密码是否与BCrypt长度相同?
编辑
示例哈希:
$2a$10$KssILxWNR6k62B7yiX0GAe2Q7wwHlrzhF3LqtVvpyvHZf0MwvNfVu
在对一些密码进行哈希处理之后,似乎BCrypt总是生成60个字符的哈希值.
编辑2
很抱歉没有提及实施.我正在使用jBCrypt.
有没有办法在预准备语句上调用PDOStatement :: execute()时获取原始SQL字符串?出于调试目的,这将非常有用.
我想用javascript获取特定格式的当前时间.
使用下面的功能并调用它将给我 周五2013年2月1日13:56:40 GMT + 1300(新西兰夏令时) 但我想格式化它像 星期五下午2:00 pm 2013年2月1日
var d = new Date();
var x = document.getElementById("time");
x.innerHTML = d;
Run Code Online (Sandbox Code Playgroud)
当然,上面的代码没有任何格式化逻辑,但我还没有遇到任何"工作"格式化程序.
我试图将当前时间与UTC和UTC之间的时间转换为当前时区.
这是我做的:
$schedule_date = new DateTime($triggerOn, new DateTimeZone('UTC') );
$triggerOn = $schedule_date->format('Y-m-d H:i:s');
echo $triggerOn;
Run Code Online (Sandbox Code Playgroud)
输出值不会更改格式中唯一更改的内容.
字符串$triggerOn是根据America/Los_Angeles时区生成的
这是我的字符串之前和之后的样子:
BEFORE 04/01/2013 03:08 PM
AFTER 2013-04-01 15:08:00
Run Code Online (Sandbox Code Playgroud)
所以这里的问题是DateTime不会转换为UTC.
我有一个时间作为字符串,例如:
$time = '5:36 pm';
Run Code Online (Sandbox Code Playgroud)
我要求它是24小时格式(即17:36),但我不知道我需要使用哪些函数来转换它.请帮忙.
我想用Javascript进行秒倒计时.
这是我的HTML
<div id="ban_container" class="error center">Please wait
<span id="ban_countdown" style="font-weight:bold">
45</span>
seconds before trying again
</div>
Run Code Online (Sandbox Code Playgroud)
我的JS:
<script type="text/javascript">
var seconds = <?php echo $user->getBlockExpiryRemaining(); ?>;
function countdown(element) {
var el = document.getElementById(element);
if (seconds === 0) {
document.getElementById("ban_container").innerHTML = "done";
return;
}
else {
el.innerHTML = seconds;
seconds--;
setTimeout(countdown(element), 1000);
}
}
countdown('ban_countdown');
</script>
Run Code Online (Sandbox Code Playgroud)
但是由于某种原因,它不会等待超时时间,而是立即执行countdown,这样当我刷新页面时它就会立即显示"完成".我知道它实际上是多次被执行,因为如果我这样做,innerHTML += seconds + " ";它会从45开始倒数.为什么超时会被超时?
我正在尝试在我的应用程序中集成一个时区系统,我真的很努力避免现在使用时区感知应用程序 - 但它现在是强制性要求所以别无选择.时区只是我的头脑.我在PHP.net以及其他网站上阅读了几个主题,包括但不限于SO.但我永远无法掌握它.
所以我想知道是否有人可以帮助我在这里:(我想要做的是我的应用程序中的偏好选项,允许用户从选择菜单中选择自己的时区,但应用程序也应该能够设置/为每个用户选择相应的DST.
请相信这会帮助那些仍在努力掌握时区的人,所以请提供尽可能详细的解释,即使你不得不考虑我一个完整的dumbo/noob.
编辑赏金:
我正在为这个问题添加一个赏金,因为我真的需要一个关于编写PHP/MySQL应用程序的时区的好规范问题(因此我也添加了MySQL标记).我从很多地方找到了东西,但把它们放在一起会很好.查尔斯的答案很棒,但我仍然觉得它有些缺乏.以下是我想到的一些事情:
DateTime对象存储数据库中的时间DATETIME或TIMESTAMP?每个有什么好处或警告?DATE?NOW().这些是否需要在插入之前或之后以某种方式进行转换?DateTime对象.将它直接放入DateTime::__construct()还是我们需要使用DateTime::createFromFormat()?NOW())而不担心时区以确保一切保持一致,那么应该怎么做?如果可能,尝试将其分成逻辑部分,以便将来的用户更容易找到信息.请务必在必要时提供代码示例.
我使用Windows 10 home,我通常使用Visual Studio Code(VSCODE)来编辑Linux Bash脚本以及PHP和JavaScript.
我没有开发任何专门用于Windows的东西,我不介意我编辑的所有文件的默认EOL都是Unix(nix).
在VSCODE中,如何确保所有文件中的所有EOL(来自任何文件扩展名)都是nix?
在我用VSCODE在Windows中编写了一些Bash脚本,将它们作为项目的一部分上传到GitHub之后我问了这个问题,并且审查该项目的高级程序员告诉我,那里有Windows EOL,还有我的BOM问题可以解决,如果我将那里的EOL改为nix(或者这就是我理解的,至少).
因为我的所有开发都是面向Linux的,所以我希望默认情况下,我编辑的任何文件都有nix EOL,即使它是Window唯一的.
在php中返回值时,返回混合数据类型被认为是好的还是坏的做法.我正在开展一个项目,我经常遇到返回id号码的方法null.我null通过检查null和返回来处理该值,-1如果是的话null.
我发现自己的另一种情况是方法应该做什么并返回一个字符串.但有时候不能返回字符串,因为它没有找到或发生异常.这里最好的事情是什么?返回像'failed'之类的字符串?然后,这会在方法之间创建一个字符串耦合,因为调用方法必须确切地知道要检查的字符串失败消息?
编辑:好的,已经有一些不同的意见.我喜欢在失败时返回false的想法和实际结果,无论数据类型是成功的.但是......在这方面有什么最佳实践吗?我的意思是,在这些情况下,其他语言的程序员会做什么,例如java和c ++等?