小编cry*_*c ツ的帖子

什么使用单管'|' 在函数参数中吗?

以下面的代码为例:

phpinfo(INFO_MODULES | INFO_ENVIRONMENT | INFO_VARIABLES);
Run Code Online (Sandbox Code Playgroud)

正在使用单个参数,但我提供了由单个管道符号分隔的选项列表.

  • 函数中的参数值究竟发生了什么?
  • 我可以在自己的功能中使用相同的东西吗?
  • 是这样的,并且有什么好处,而不是说传递一个数组呢?

先感谢您.

php arguments function bitwise-operators

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

正则表达式区分ISBN-10和ISBN-13

我有一个If-else语句,它检查字符串以查看是否有ISBN-10或ISBN-13(书籍ID).

我面临的问题是在ISBN-10检查之前发生的ISBN-10检查,ISBN-10检查将匹配10个字符或更多的任何内容,因此可能会将ISBN-13误认为是ISBN-10.

这是代码......

$str = "ISBN:9780113411436";

if(preg_match("/\d{9}(?:\d|X)/", $str, $matches)){
   echo "ISBN-10 FOUND\n";  
   //isbn returned will be 9780113411
   return 0;
}

else if(preg_match("/\d{12}(?:\d|X)/", $str, $matches)){
   echo "ISBN-13 FOUND\n";
   //isbn returned will be 9780113411436
   return 1;
}
Run Code Online (Sandbox Code Playgroud)

我该如何确保避免此问题?

php regex validation isbn

20
推荐指数
1
解决办法
5914
查看次数

在PHP 5.5中生成密码哈希并设置成本选项

我知道PHP 5.5是alpha版本,但我正在制作的这个类只是通过使用function_exists()来提前使用它的散列特性.

我查看了password_hash文档.第三个参数是$ options,它目前支持两个选项,'salt'和'cost'.

它陈述如下:

cost,表示应该使用的算法成本.可以在crypt()页面上找到这些值的示例.

当我进入crypt()页面时,它提供的文档是:

Blowfish使用盐进行散列如下:"$ 2a $","$ 2x $"或"$ 2y $",两位数的成本参数"$"和字母表中的22位数字"./0-9A-Za -z".在salt中使用此范围之外的字符将导致crypt()返回零长度字符串.两位数的成本参数是底层基于Blowfish的散列算法的迭代计数的基数2对数,并且必须在04-31范围内,超出此范围的值将导致crypt()失败.5.3.7之前的PHP版本仅支持"$ 2a $"作为salt前缀:PHP 5.3.7引入了新的前缀来修复Blowfish实现中的安全漏洞.有关安全修复程序的完整详细信息,请参阅»此文档,但总而言之,仅针对PHP 5.3.7及更高版本的开发人员应使用"$ 2y $"优先于"$ 2a $".

我似乎无法把头包裹起来.它说PHP 5.3.7及更高版本应该使用$ 2y $,但是我用什么成本来获得那个并且它是最好的选择值?他们提供的示例使用的值为7,但根据上述情况,它可以达到31,使用说4与31相比有什么不同?

php passwords bcrypt php-password-hash

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

什么是password_hash()替代(PHP 5 <5.5.0)?

根据手册:password_hash可以使用此功能(PHP 5 >= 5.5.0)

在寻找替代方法后,我从这里找到了这个简单的功能:http://www.sitepoint.com/password-hashing-in-php/

function generateHash($password) {
    if (defined("CRYPT_BLOWFISH") && CRYPT_BLOWFISH) {
        $salt = '$2y$11$' . substr(md5(uniqid(rand(), true)), 0, 22);
        return crypt($password, $salt);
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以在使用function_exists前管理我的代码,但我的问题是关于上面的替代代码,如果它的安全与否,或者在旧版本的PHP中有没有其他选择?

php security passwords hash php-password-hash

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

根据营业时间确定业务是否开放/关闭

如果时间是AM到PM(例如:上午11点到晚上10点),我的代码工作正常,但如果操作时间是AM到AM(例如:上午9点 - 凌晨1点),它会中断.这是我的代码:

$datedivide = explode(" - ", $day['hours']); //$day['hours'] Example 11:00 AM - 10:00 PM
$from = ''.$day['days'].' '.$datedivide[0].'';
$to = ''.$day['days'].' '.$datedivide[1].'';
$date = date('l g:i A');
$date = is_int($date) ? $date : strtotime($date);
$from = is_int($from) ? $from : strtotime($from);
$to = is_int($to) ? $to : strtotime($to);
if (($date > $from) && ($date < $to) && ($dateh != 'Closed')) {
    ?>
    <script type="text/javascript">
    $(document).ready(function(){
        $('.entry-title-container').append('<div class="column two"><h2 style="color:green;text-align: left;margin: 0;">OPEN<br /><span style="color:#222;font-size:12px;display: block;">Closes at <?php echo $datedivide[1]; …
Run Code Online (Sandbox Code Playgroud)

php datetime date strtotime

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

PHP日期('W')vs MySQL YEARWEEK(now())

有人可以向我解释为什么这两个会给出不同的结果吗?

我用PHP执行它.

date("YW",mktime(0, 0, 0, 3, 22 , 2013)); // outputs 201312
Run Code Online (Sandbox Code Playgroud)

当我用MySQL执行它时

SELECT YEARWEEK(now()); // outputs 201311
Run Code Online (Sandbox Code Playgroud)

php mysql date week-number

13
推荐指数
2
解决办法
8697
查看次数

较旧的php版本的password_compat

PHP 5.5将支持密码功能password_hash()password_verify().还有一个文件要在> 5.3.7中添加此功能.

我的问题是我目前正在运行debian软件包5.3.3-7 + squeeze14.

有没有办法让这个旧的PHP版本使用此功能?

php security passwords hash php-password-hash

12
推荐指数
3
解决办法
5569
查看次数

php password_hash和password_verify不匹配

我正在尝试从PHP 5.5中调用一个名为password_hash()的新函数.

无论我做什么,$ hash和$ password都不匹配.

$password = "test";

$hash = "$2y$10$fXJEsC0zWAR2tDrmlJgSaecbKyiEOK9GDCRKDReYM8gH2bG2mbO4e";



if (password_verify($password, $hash)) {
    echo "Success";
}
else {
    echo "Error";
}
Run Code Online (Sandbox Code Playgroud)

php passwords php-password-hash

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

从Greasemonkey访问变量到页面,反之亦然

我在test.js中有以下代码,它在</ body>之前运行:

alert('stovetop');
alert(greasy);
Run Code Online (Sandbox Code Playgroud)

我在test.user.js中有以下代码:

(function () {

    'use strict';
    var greasy = 'greasy variable';
    document.title = 'greasy title';

}());
Run Code Online (Sandbox Code Playgroud)

'炉灶'得到警报,所以我知道页面javascript工作,并document.title得到更改,所以我知道脚本javascript工作.但是,在网页上我收到错误:

错误:ReferenceError:未定义greasy源文件:/test.js

如何从网页上访问由Greasemonkey设置的变量,反之亦然?

javascript firefox greasemonkey firefox-addon

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

将md5密码哈希转换为PHP 5.5 password_hash()

PHP 5.5中新的password_hash API很不错,我想开始在任何地方使用它.鉴于较旧的项目具有较旧的数据库,其中密码存储在md5哈希中,将旧用户密码迁移到新的更安全的API的最佳方法是什么?

除了简单地提示用户在下次登录时重置密码(这对用户来说这是不切实际和烦人的)我还考虑过使用当前md5哈希作为所有现有用户的password_hash()输入的可能性.为了验证这些用户的密码(在登录期间),我将他们的输入转换为md5哈希,然后将其用于password_verify().新用户将免于这一额外的步骤.

这是一个值得这样做的方法吗?是否有更好的透明迁移方式,用户不会因密码重置而烦恼,但我可以立即享受更安全的哈希带来的好处吗?

最重要的是,在使用现有的md5哈希(易于暴力)和使用password_hash()API来"双重哈希"时,是否还有安全优势?

php security passwords hash php-password-hash

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