<MyRusakov.ru />

Разработчик игр на Unreal Engine

Разработчик игр на Unreal Engine

Этот комплект с нуля всего за 7 месяцев сделает Вас Unreal-разработчиком. И при этом учиться достаточно 1 час в день.

Начнёте Вы с основ программирования, постепенно перейдя к C++. Затем очень подробно изучите Unreal Engine, и после научитесь программировать на C++ в Unreal Engine. В конце создадите крупный проект на C++ в Unreal Engine для своего портфолио.

Комплект содержит:

- 416 видеоуроков

- 95 часов видео

- 1024 задания для закрепления материала из уроков

- 3 финальных тестирования

- 4 сертификата

- 12 Бонусных курсов

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Какая тема Вас интересует больше?

Форум сайта MyRusakov.ru

Не правильное сохранение в конфиг
28.07.2013 20:13:40 Не правильное сохранение в конфиг Сообщение #1
SX2

SX2

Новичок

Новичок

Дата регистрации:
27.07.2012 02:51:09

Сообщений: 15

Добрый день !
Уважаемый Михаил в свое время вы мне очень помогли за что я вам очень благодарен !
И опять у меня возникла проблема похожего характера !!
И так не пойму как сохранить в конфиг вот код
<?php

if(!defined('DATALIFEENGINE'))
{die("Hacking attempt!";}

if ($member_id['user_group'] != 1) {
msg("error", $lang['addnews_denied'], $lang['db_denied']);
}

//************************************************************************//
// Конфиг //
//************************************************************************//
require ROOT_DIR.'/engine/data/test_config.php';

//************************************************************************//
// Функции //
//************************************************************************//

function opentable() {
echo <<<HTML
<table width="100%">
<tr>
<td width="4"><img src="engine/skins/images/tl_lo.gif" width="4" height="4" border="0"></td>
<td background="engine/skins/images/tl_oo.gif"><img src="engine/skins/images/tl_oo.gif" width="1" height="4" border="0"></td>
<td width="6"><img src="engine/skins/images/tl_ro.gif" width="6" height="4" border="0"></td>
</tr>
<tr>
<td background="engine/skins/images/tl_lb.gif"><img src="engine/skins/images/tl_lb.gif" width="4" height="1" border="0"></td>
<td style="padding:5px;" bgcolor="#FFFFFF">
HTML;
}

function closetable() {
echo <<<HTML
</td>
<td background="engine/skins/images/tl_rb.gif"><img src="engine/skins/images/tl_rb.gif" width="6" height="1" border="0"></td>
</tr>
<tr>
<td><img src="engine/skins/images/tl_lu.gif" width="4" height="6" border="0"></td>
<td background="engine/skins/images/tl_ub.gif"><img src="engine/skins/images/tl_ub.gif" width="1" height="6" border="0"></td>
<td><img src="engine/skins/images/tl_ru.gif" width="6" height="6" border="0"></td>
</tr>
</table>
HTML;
}

function tableheader($value) {
echo <<<HTML
<table width="100%">
<tr>
<td bgcolor="#EFEFEF" height="29" style="padding-left:10px;"><div class="navigation">{$value}</div></td>
</tr>
</table>
HTML;
unterline();
}

function unterline() {
echo <<<HTML
<div class="unterline"></div>
HTML;
}

function get_gal_groups($id = 0) {
global $user_group;

foreach ($user_group as $group) {
$returnstring .= '<option value="'.$group['id'].'" ';

if (is_array ($id) && in_array($group['id'], $id)) $returnstring .= 'SELECTED';
elseif($id AND $id == $group['id']) $returnstring .= 'SELECTED';

$returnstring .= ">".$group['group_name']."</option>\n";
}

return $returnstring;
}

//************************************************************************//
// Меню //
//************************************************************************//
$size = "70%";
if ($_REQUEST['action'] == "" {
echoheader("", "";

echo <<<HTML
<form action="" method="post">
HTML;
opentable();
tableheader('Основные настройки');
$body .= "<form method=\"POST\" action=\"\" name=\"additem\" id=\"additem\"\">
<table width=\"100%\">
<tr><td width=\"{$size}\" style=\"padding-left:3%;\">
<strong>Группы пользователей</strong><br />
Выберите группы пользователей, которые нужно отображать
</td><td align=\"left\"><select name=\"groups[]\" class=\"cat_select\" multiple>".get_gal_groups(explode(',', $config['groups']))."</select>
</td></tr>
<tr><td height=7 colspan=2></td></tr>
<tr><td background=\"engine/skins/images/mline.gif\" height=1 colspan=2></td></tr>
<tr><td height=7 colspan=2></td></tr>
<tr><td colspan=\"2\"><div class=\"hr_line\"></div></td></tr>
<tr><td width=\"140\" style=\"padding-left:5px;\">
</td><td style=\"padding-left:5px;\">
<div style=\"display: none;\" id=\"icon_demo\"><img src=\"\" id=\"icon_img\"></div>
</td></tr></table><br><input type=\"hidden\" name=\"action\" value=\"1\">
<div style=\"padding-left:5px; text-align:center;\">
<input class=\"btn btn-success\" type=\"submit\" value=\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Сохранить&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\">&nbsp;&nbsp;&nbsp;<br /><br /></div><div class=\"hr_line\"></div></td></form>";
echo $body;
closetable();
echofooter();
}

//************************************************************************//
// Запись настроек //
//************************************************************************//
if($action == "1"{
clear_cache();
///////////////////////////////
$keys_num = count($_POST);
$keys = array_keys($_POST);
$config = "<?php \n\n///Options///\n\n\$config = array(\n\n'version' => \"v.1.0\",\n\n";
for($i = 0; $i <= $keys_num; $i ++){
$key = $keys[$i];
$key_result = ($_POST[$key]);
if ($keys[$i]==groups){
$config .= "'".$keys[$i]."' => array(".$key_result.",\n\n";
} elseif ($key!='action' and $key!=''){
if ($keys[$i]==groups) continue;
$config .= "'".$keys[$i]."' => \"".$key_result."\",\n\n";
}}
$config .= ";\n?>";
$conf_file = ROOT_DIR.'/engine/data/test_config.php';
$fp = fopen($conf_file, "w+";
$save = fwrite($fp, $config);
fclose($fp);

msg( "Info!", "Модуль \"Test\"", "Настройки успешно сохранены!<br /><br /><a href=\"$PHP_SELF?mod=test\">Вернутся назад</a>";

echofooter();
}

?>

Сейчас сохраняет так
<?php

///Options///

$config = array(

'version' => "v.1.0",

'groups' => array(Array),

);
?>

А нужно так
<?php

///Options///

$config = array(

'version' => "v.1.0",

'groups' => array(1,2),

);
?>

Заранее благодарен !
Профиль
29.07.2013 00:06:40 Не правильное сохранение в конфиг Сообщение #2
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

У Вас переменная, которая выводится внутри Array() это массив, поэтому и выводить её надо в читаемом формате. Это можно вывести через print_r, но в Вашем случае надо в вывести цикле самостоятельно каждый элемент через запятую.
Профиль
29.07.2013 00:18:11 Не правильное сохранение в конфиг Сообщение #3
SX2

SX2

Новичок

Новичок

Дата регистрации:
27.07.2012 02:51:09

Сообщений: 15

Подскажите как это прописать пожалуйста !
Профиль
29.07.2013 20:48:01 Не правильное сохранение в конфиг Сообщение #4
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

Что то вроде этого, if тут чтобы убрать последнюю запятую.
foreach($key_result as $value) {
$string .= $value;
if (!($value==end($key_result))) $string .= ", ";
}
echo $string;

Получившийся $string и нужно подставлять вместо неотображаемого массива.
Профиль
29.07.2013 21:25:28 Не правильное сохранение в конфиг Сообщение #5
SX2

SX2

Новичок

Новичок

Дата регистрации:
27.07.2012 02:51:09

Сообщений: 15

Спасибо большое сделал так и все заработало
//************************************************************************//
// Запись настроек //
//************************************************************************//
if($action == "1"{
clear_cache();
///////////////////////////////
$keys_num = count($_POST);
$keys = array_keys($_POST);
$config = "<?php \n\n///Options///\n\n\$config = array(\n\n'version' => \"v.1.0\",\n\n";
for($i = 0; $i <= $keys_num; $i ++){
$key = $keys[$i];
$key_result = ($_POST[$key]);
if ($keys[$i]==groups){
foreach($key_result as $value) {
$string .= $value;
if (!($value==end($key_result))) $string .= ", ";
}
$config .= "'".$keys[$i]."' => array(".$string.",\n\n";
} elseif ($key!='action' and $key!=''){
if ($keys[$i]==groups) continue;
$config .= "'".$keys[$i]."' => \"".$key_result."\",\n\n";
}}
$config .= ";\n?>";
$conf_file = ROOT_DIR.'/engine/data/test_config.php';
$fp = fopen($conf_file, "w+";
$save = fwrite($fp, $config);
fclose($fp);

msg( "Info!", "Модуль \"Test\"", "Настройки успешно сохранены!<br /><br /><a href=\"$PHP_SELF?mod=test\">Вернутся назад</a>";

echofooter();
}


Если можно подскажите как сделать так что бы при сохранении не переписывало конфиг а добавляло
К примеру если есть
<?php

///Options///

$config = array(

'version' => "v.1.0",

'online' => "yes",

);
?>

То при следующим сохранении строчка
'online' => "yes",
оставалась
а строчка
'groups' => array(1, 5),
добаавлялась итд

P.S Почему у вас нет тега spoiler
Профиль
29.07.2013 21:44:47 Не правильное сохранение в конфиг Сообщение #6
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

В этом случае Вам нужно сделать полноценный интерпретатор этого конфига, чтобы сначала все значения считывались и записывались в переменные, а затем к ним добавлялись изменения и заново перезаписывались в конфиг.
Профиль
30.07.2013 01:05:44 Не правильное сохранение в конфиг Сообщение #7
SX2

SX2

Новичок

Новичок

Дата регистрации:
27.07.2012 02:51:09

Сообщений: 15

Скажите а при таком сохранении как прописать правило


function save_group_info($level){
global $db;

if (is_numeric($level)){ if (!intval($level)) return ""; else return intval($level); }
if (!is_array($level)) return "";
if (in_array("0", $level) || count($level) < 1) return "";
$uviewlevel = $db->safesql(implode(',', $level)); return $uviewlevel;

}

if ($action == "dosavesyscon"{

$save_con = $_POST['save_con'];
$save_con['groupsv'] = save_group_info($_POST['groupsv']);
$save_con['online'] = $_POST['online'];

$find[] = "'\r'";
$replace[] = "";
$find[] = "'\n'";
$replace[] = "";

if (is_array($config)) $save_con = $save_con + $config;

$handler = fopen( ENGINE_DIR . '/data/config.php', "w" );
fwrite($handler, "<?PHP \n\n//System Configurations\n\n\$config = array (\n\n";
foreach ( $save_con as $name => $value ) {

$value = str_replace( "$", "&#036;", $value );
$value = str_replace( "{", "&#123;", $value );
$value = str_replace( "}", "&#125;", $value );

$name = str_replace( "$", "&#036;", $name );
$name = str_replace( "{", "&#123;", $name );
$name = str_replace( "}", "&#125;", $name );

fwrite( $handler, "'{$name}' => \"{$value}\",\n\n" );

}
fwrite( $handler, ";\n\n?>" );
fclose( $handler );

msg( "info", $lang['opt_sysok'], "$lang[opt_sysok_1]<br /><br /><a href=$PHP_SELF?mod=test>$lang[db_prev]</a>" );

Как указать чтобы переменная groupsv
Сохранялась не так<?php

///Options///

$config = array(

'online' => "yes",

'groupsv' => "1,2,3",

);
?>

А так
<?php

///Options///

$config = array(

'online' => "yes",

'groupsv' => array(1,2,3),

);
?>

Одним словом что бы только groupsv сохранялся в виде массива а все остальное так как и есть как добавить правило для него ?
Профиль
30.07.2013 17:30:20 Не правильное сохранение в конфиг Сообщение #8
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

Поставьте условный оператор. Если имя текущей переменной такое, то обрабатывайте её по-другому.
Профиль
02.08.2013 19:02:36 Не правильное сохранение в конфиг Сообщение #9
SX2

SX2

Новичок

Новичок

Дата регистрации:
27.07.2012 02:51:09

Сообщений: 15

Михаил извините что не по теме но подскажите как прописать ?

Сам кодif($member_id['news_num']>=$module_config['news']
AND
$member_id['repa']>=$module_config['repa']
AND
$member_id['comm_num']>=$module_config['coments']
AND
$member_id['user_group']==$module_config['group_id']) {
$db->query( "UPDATE LOW_PRIORITY " . USERPREFIX . "_users SET user_group={$module_config['group_id_new']} WHERE user_id='{$member_id['user_id']}'" );


Конфиг
<?PHP

//System Configurations

$module_config = array (

'repa_on' => "yes",

'news' => "20",

'repa' => "5",

'coments' => "10",

'group_id' => "4",

'group_id_new' => "6",

);

?>


Код делает следующее:

Если юзер имеет Новостей-20, Репутацию-5, Комментариев-10
Тогда он переходит с группы 4 в группу 6

Вопрос !!! Как прописать что если в конфиге стоит
'repa_on' => "no",проверка
$member_id['repa']>=$module_config['repa']Не происходит а только учитываются другие параметры
Профиль
04.08.2013 10:48:01 Не правильное сохранение в конфиг Сообщение #10
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

Для сравнения строк используйте проверку с помощью функции strcmp()
Профиль