2013-07-03 47 views
0

我正在從php documentation中直接讀取,但我仍然收到語法錯誤。這是代碼。這是導致錯誤的第一行。使用php的語法錯誤password_hash

$options = [ 
    'cost' => 12, 
]; 
$hash = password_hash('$plaintext', PASSWORD_BCRYPT, $options)."\n"; 

Parse error: syntax error, unexpected '['

我很新的PHP和我不熟悉這個數組語法,所以我有困難的故障排除它。我錯過了什麼?謝謝!

+0

您的PHP版本不支持簡寫數組語法。 – Blender

+1

http://3v4l.org/KWK0e解釋它 –

+0

爲什麼我得到這個-1?這是一個合法的問題。吉茲。 – Alex

回答

3

我想你使用的是PHP的老版本。您是否可以執行以下代碼:

<?php 
echo 'Current PHP version: ' . phpversion(); 

如果不是5.5,那麼第二個函數將不起作用。你得到的錯誤是你的第一行,這是從PHP 5.4(?)開始可用的。該代碼是否有效。

+0

謝謝。你是對的。我的服務器只在5.3.6上。這很糟糕。我找不到一個易於實現的bcrypt庫。 – Alex

+0

@ usr55410 - 使用Brad提到的數組語法,以及PHP的[兼容包](https://github.com/ircmaxell/password_compat/blob/master/lib/password.php)。 – martinstoeckli

4

希望此相反:

$options = array(
    'cost' => 12 
); 

文檔中使用的數組語法是PHP 5.5。所以是password_hash()

此外,我懷疑,而不是'$plaintext',你只想$plaintext。除非你想讓你的所有密碼字面上都是「$純文本」。

0

代碼必須如果$options是一個數組

$options = array(
    'cost' => 12, 
); 
$hash = password_hash('$plaintext', PASSWORD_BCRYPT, $options)."\n"; 
1

您使用短數組語法,它取代有[]數組()。它僅適用於僅PHP 5.4>

因此,而不是:

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

你想:

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

文檔:http://php.net/manual/en/language.types.array.php(見例如#1)

希望這有助於。