2017-07-07 16 views
0

私はユーザーレベルの配列を作成しており、配列UserLevelsの各ユーザーレベルの最後に秘密の10桁の文字列を追加して安全にしたいと考えています。私は以下のコードを使用していますが、PHP用語定義を使用する場合、配列に文字列を追加することはできません。PHP-DEFINE配列の末尾に文字列がある

私のコードは以下の通りです:

//Change the 10 digits of the $secret definition to a randomised string 
$secret = '0000000000'; 

define('UserLevels', array(
    'Owner'.$secret, 
    'Admin'.$secret, 
    'Staff'.$secret 
)); 

私は後で、各ページ内のハッシュを確認するために何かを使用し、それはハッシュ/それらをより安全にするために、ユーザーのレベルを確認するために行っていました。

+0

チェック[この回答](https://stackoverflow.com/a/44965614/4265352)を使用していけない場合。 – axiac

答えて

2

PHPのバージョンを確認してください。

あなたは文字列は、その後にアンシリアライズを使用して定数を格納する配列をシリアライズすることができます7.

// Works as of PHP 5.6.0 
const ANIMALS = array('dog', 'cat', 'bird'); 
echo ANIMALS[1]; // outputs "cat" 

http://php.net/manual/en/language.constants.syntax.php

あなただけのPHPで動作するはず配列定数を定義するために使用している構文値にアクセスする必要がある場合は配列に戻します。

<?php 

//Change the 10 digits of the $secret definition to a randomised string 
$secret = '0000000000'; 

$user_levels = array(
    'Owner'.$secret, 
    'Admin'.$secret, 
    'Staff'.$secret 
); 

define('UserLevels', serialize($user_levels)); 
var_dump(UserLevels); 
var_dump(unserialize(UserLevels)); 

https://eval.in/829457

+0

あなたは私にもそれを打つ。 – Difster

+0

@Ryan Tuostoああ。より低いPHPバージョンを使用して、その時の作業を知っていますか? – Benza

+0

@BenWilson更新された応答を参照してください –

0

今日は投稿同様の質問にPHP 7

define('ARRAY_EXAMPLE', serialize(array(1, 2, 3, 4, 5))); 

unserialize(ARRAY_EXAMPLE); 
+0

ありがとうございますが、これが実際に何をしているのか説明できますか? – Benza

+1

配列を後で解析することができる文字列に変換します:https://eval.in/829456 –

+0

@BenWilson Look Ryanの例 –

関連する問題