|
|
|
| в поле вывожу массивы через var_export()
а как можно назад получить массив для php?
думал, через eval или через create_function сделать.. но уж слишком много прав будет..
да и при любой ошибки будет фатал эррор
т.е. чтобы проверить и записать его в БД. | |
|
|
|
|
|
|
|
для: а-я
(28.06.2010 в 08:48)
| | выводите через что-нибудь другое.
От implode до serialize | |
|
|
|
|
|
|
|
для: Trianon
(28.06.2010 в 09:17)
| | мне надо вывести именно в таком виде.. т.е. надо дать менять значение массива.
так еще сделали в MoPhpAdmin | |
|
|
|
|
|
|
|
для: а-я
(28.06.2010 в 09:30)
| | что такое MoPhpAdmin?
Вывести - одно.
А ввести - совсем другое.
Впрочем, надо - делайте.
Устраивайте полноценный анализ текста, с компиляцией в дерево выражения.
Сами же и контролируйте допустимость применения тех или иных его элементов. | |
|
|
|
|
|
|
|
для: Trianon
(28.06.2010 в 09:57)
| | >что такое MoPhpAdmin?
заработался... т.е. MoMyAdmin - web-интерфейс для работы с MongoDB
>
>Вывести - одно.
>А ввести - совсем другое.
>
>Впрочем, надо - делайте.
>Устраивайте полноценный анализ текста, с компиляцией в дерево выражения.
>Сами же и контролируйте допустимость применения тех или иных его элементов.
делаю через eval() -все равно эт в Админ панели..
перехватываю ошибки, единственное хотелось бы сначала проанализировать данные..
есть в нем что-то вроде [^array(.*?)] - т.е. исключить все функции.. только массивы(вложенные) | |
|
|
|
|
|
|
|
для: а-я
(29.06.2010 в 07:22)
| |
<?php
$var = array(array(array()), array());
$php_code = var_export($var, true);
$allowed_tokens = array(
'(', ',', ')',
T_WHITESPACE, T_ARRAY, T_DOUBLE_ARROW,
T_CONSTANT_ENCAPSED_STRING, T_LNUMBER, T_DNUMBER);
if(check_allowed_tokens($php_code, $allowed_tokens))
{
$error_reporting_level = error_reporting(0);
var_dump(eval("return $php_code;"));
error_reporting($error_reporting_level);
}
function check_allowed_tokens($php_code, $allowed_tokens)
{
$tokens = token_get_all('<?php ;'.$php_code);
unset($tokens[0], $tokens[1]); // убираем токены '<?php ;'
foreach($tokens as $token)
{
if(is_array($token))
$token = $token[0];
if(!in_array($token, $allowed_tokens, true))
return false;
}
return true;
}
|
Для допущения булевых констант придётся разрешить токен T_STRING, но тогда будут нужны уже более сложные проверки, чтобы отсечь вызовы функций. | |
|
|
|
|
|
|
|
для: sms-send
(29.06.2010 в 20:40)
| | ого... благодарю.. что-то новенькое..
буду разбираться..
----
UPDATE: прост шикарный вариант.. работает на ура. Посмотрим это все в боевых действиях.
еще раз спасибо. | |
|
|
|