Php: json 到常量
Php: json to constants
我有一个 Json,其中包含一些我想自动定义的内容。它适用于简单的 "key": "val"
语句,但我无法使其适用于 eval
语句:
$cat test.php
<?php
function objDefinition($obj) {
foreach ($obj as $key => $val) {
$val = $val;
\define($key, $val);
} }
$json = \json_decode(\json_encode([
'COOKIE_EXP' => "eval('time() + (10 * 365 * 24 * 60 * 60)')",
]));
objDefinition($json);
echo COOKIE_EXP;
$php test.php
eval('time() + (10 * 365 * 24 * 60 * 60)')
我知道 eval
是邪恶的等等,但是这个方法会节省我很多代码!
谢谢!
我认为你应该稍微改变一下你的数据结构和你的方法,像这样应该可以解决问题:
function objDefinition($obj) {
foreach ($obj as $key => $val) {
if (strstr($val, 'eval=')) {
\define($key, eval(str_replace('eval=', '', $val)));
} else {
\define($key, $val);
}
}
}
$json = \json_decode(\json_encode([
'COOKIE_EXP' => "eval=time() + (10 * 365 * 24 * 60 * 60)",
]));
@taxicala
你快明白了:
function objDefinition($obj)
{
foreach ($obj as $key => $val) {
if (strstr($val, 'eval=')) {
$val = str_replace('eval=', '', $val);
eval("$val = $val;");
}
\define($key, $val);
}
}
$json = \json_decode(\json_encode([
'COOKIE_EXP' => "eval=time() + (10 * 365 * 24 * 60 * 60)",
]));
\objDefinition($json);
echo COOKIE_EXP;
谢谢!
我有一个 Json,其中包含一些我想自动定义的内容。它适用于简单的 "key": "val"
语句,但我无法使其适用于 eval
语句:
$cat test.php
<?php
function objDefinition($obj) {
foreach ($obj as $key => $val) {
$val = $val;
\define($key, $val);
} }
$json = \json_decode(\json_encode([
'COOKIE_EXP' => "eval('time() + (10 * 365 * 24 * 60 * 60)')",
]));
objDefinition($json);
echo COOKIE_EXP;
$php test.php
eval('time() + (10 * 365 * 24 * 60 * 60)')
我知道 eval
是邪恶的等等,但是这个方法会节省我很多代码!
谢谢!
我认为你应该稍微改变一下你的数据结构和你的方法,像这样应该可以解决问题:
function objDefinition($obj) {
foreach ($obj as $key => $val) {
if (strstr($val, 'eval=')) {
\define($key, eval(str_replace('eval=', '', $val)));
} else {
\define($key, $val);
}
}
}
$json = \json_decode(\json_encode([
'COOKIE_EXP' => "eval=time() + (10 * 365 * 24 * 60 * 60)",
]));
@taxicala
你快明白了:
function objDefinition($obj)
{
foreach ($obj as $key => $val) {
if (strstr($val, 'eval=')) {
$val = str_replace('eval=', '', $val);
eval("$val = $val;");
}
\define($key, $val);
}
}
$json = \json_decode(\json_encode([
'COOKIE_EXP' => "eval=time() + (10 * 365 * 24 * 60 * 60)",
]));
\objDefinition($json);
echo COOKIE_EXP;
谢谢!