簡體   English   中英

嘗試為bcrypt哈希算法指定成本基准時出現解析錯誤?

[英]I get a parse error, when trying to specify cost benchmark for bcrypt hashing algorithm?

無法弄清楚為什么我的代碼中會出現解析/語法錯誤,該錯誤在我的本地主機服務器上有效,但是當我將其上傳到我的網絡主機時,我得到了語法錯誤:“第3行出現意外的'['”。

我在這里有一個粘貼鏈接: http : //codepad.org/26K93MPG

這是我的代碼:

<?php

$options = [
    'cost' => 9,
];

$unhashedPassword = 'testingtesting';
$hashedPassword = password_hash($unhashedPassword, PASSWORD_BCRYPT, $options);

echo $unhashedPassword . "<br>";
echo $hashedPassword;

?>

固定! 這是我修復問題的方式,以及發生問題的簡短說明:

首先,我的本地主機服務器的PHP版本是5.6.4,生產服務器的PHP版本是5.3.29。 由於password_hash()函數是在5.3.7版中首次引入的,因此很明顯它沒有起作用。

其次,我使用的數組語法僅在PHP 5.3或更早版本中允許。 但是舊的語法也沒有使它起作用,那是因為那個時候也沒有在PHP中實現password_hash()函數。

要解決這兩個問題:

1)轉到https://github.com/ircmaxell/password_compat/blob/master/lib/password.php

2)將該庫文件放入文件夾中,並在登錄過程中包含password.php。

3)將數組語法更改為此,它很簡潔:

<?php
include("password_hash_compatibility.php");

$unhashedPassword = 'testingtesting';
$hashedPassword = password_hash($unhashedPassword, PASSWORD_BCRYPT, array("cost" => 9));

echo $unhashedPassword . "<br>";
echo $hashedPassword;

?>

您的生產服務器運行的是PHP 5.3或更早版本,因此不提供PHP 5.4引入的數組速記語法。 只需使用“舊”數組語法即可向后兼容:

$options = array(
    'cost' => 9,
);

這就是為什么您應始終確保開發環境與生產環境盡可能匹配的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM