Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.01.2012, 13:44   #1
xew
Пользователь
 
Регистрация: 29.05.2010
Сообщений: 27
Стрелка Изменение определенных строк в php файле

Есть файл: config.php
PHP код:
<?php   
$config 
= array (
'site_name' => "Название сайта",
'description' => "Описание сайта",
'meta' => "Метатэги",
'admin_mail' => "Мыло",
'reg_users' => "1",
'allow_mail' => "0",
'avatar_size' => "100",
'site_off' => "0",
'description_site_off' => "Сайт закрыт на реконструкцию!",
);
?>
Нужно изменять его через форму т.е например изменить 'site_name' => "Название сайта", на 'site_name' => "Крутой сайта", и т.д

Набросал но есть небольшие косяки: editconf.php
PHP код:
include ("data/config.php");

$submit $_POST["submit"];
$str file_get_contents ('data/config.php');

    if (
$submit
    {
        if (isset(
$str))
        {
            
$str str_replace ($config['site_name'], $_POST["site_name"], $str);
            
$str str_replace ($config['description'], $_POST["description"], $str);
            
$str str_replace ($config['meta'], $_POST["meta"], $str);
            
$str str_replace ($config['admin_mail'], $_POST["admin_mail"], $str);
            
$str str_replace ($config['reg_users'], $_POST["reg_users"], $str);
            
$str str_replace ($config['allow_mail'], $_POST["allow_mail"], $str);
            
$str str_replace ($config['avatar_size'], $_POST["avatar_size"], $str);
            
$str str_replace ($config['site_off'], $_POST["site_off"], $str);
            
$str str_replace ($config['description_site_off'], $_POST["description_site_off"], $str);
            
file_put_contents ('data/config.php'$str);
            
header("Location: index.php?do=general_options");
        }
    } 
т.к как использую str_replace то если в форме несколько одинаковых слов то заменяюца все... подскажите как реализовать или через что можно сделать кроме str_replace?
xew вне форума Ответить с цитированием
Старый 17.01.2012, 14:08   #2
mv28jam
Старожил
 
Аватар для mv28jam
 
Регистрация: 09.09.2008
Сообщений: 2,624
По умолчанию

Ваше решение изначально ущербно.
1)Используйте serialize для хранения конфига. Редактировать его при таком подходе значительно проще.
2)Исполузуёте СУБД для хранения изменяемых параметров.
Стрелок-охотник
mv28jam вне форума Ответить с цитированием
Старый 17.01.2012, 14:15   #3
xew
Пользователь
 
Регистрация: 29.05.2010
Сообщений: 27
По умолчанию

Цитата:
Сообщение от mv28jam Посмотреть сообщение
Ваше решение изначально ущербно.
1)Используйте serialize для хранения конфига. Редактировать его при таком подходе значительно проще.
2)Исполузуёте СУБД для хранения изменяемых параметров.
1) На щет serialize шас почитаю
2) Мне нужно именно в файле
xew вне форума Ответить с цитированием
Старый 17.01.2012, 15:02   #4
mv28jam
Старожил
 
Аватар для mv28jam
 
Регистрация: 09.09.2008
Сообщений: 2,624
По умолчанию

Цитата:
2) Мне нужно именно в файле
serialize - ваш выбор
Стрелок-охотник
mv28jam вне форума Ответить с цитированием
Старый 17.01.2012, 15:29   #5
xew
Пользователь
 
Регистрация: 29.05.2010
Сообщений: 27
По умолчанию

Можете немного пояснить как он работает а то что то не оч. понимаю ... примерчик хотябы)
xew вне форума Ответить с цитированием
Старый 17.01.2012, 15:54   #6
mv28jam
Старожил
 
Аватар для mv28jam
 
Регистрация: 09.09.2008
Сообщений: 2,624
По умолчанию

Цитата:
Сообщение от xew Посмотреть сообщение
Можете немного пояснить как он работает а то что то не оч. понимаю ... примерчик хотябы)
Складываем конфиг в файл 1 раз например при создании сайта или при сбросе значений в дефолт.
PHP код:
<?php    
$config 
= array ( 
'site_name' => "Название сайта"
'description' => "Описание сайта"
'meta' => "Метатэги"
'admin_mail' => "Мыло"
'reg_users' => "1"
'allow_mail' => "0"
'avatar_size' => "100"
'site_off' => "0"
'description_site_off' => "Сайт закрыт на реконструкцию!"
); 


file_put_contents('data/config.php'serialize($config));
?>
Редактируем и сохраняем новый конфиг.
PHP код:
$config unserialize(file_get_contents ('data/config.php')); 

    if (
$submit)  
    { 
        if (isset(
$str)) 
        { 
            
$config['site_name']= $_POST["site_name"];//etc
            
file_put_contents ('data/config.php'serialize($config)); 
            
header("Location: index.php?do=general_options"); 
        } 
    } 
Стрелок-охотник
mv28jam вне форума Ответить с цитированием
Старый 17.01.2012, 16:06   #7
xew
Пользователь
 
Регистрация: 29.05.2010
Сообщений: 27
По умолчанию

Чет у меня какой то ужас получился...

В файле config.php перезаписалось вот так:
PHP код:
a:9:{s:9:"site_name";s:27:"Название сайта";s:11:"description";s:46:"Описание Название сайтаа";s:4:"meta";s:16:"Метатэги";s:10:"admin_mail";s:14:"xew@fragbox.ru";s:9:"reg_users";s:1:"1";s:10:"allow_mail";s:1:"0";s:11:"avatar_size";s:3:"100";s:8:"site_off";s:6:"Нет";s:20:"description_site_off";s:54:"Сайт закрыт на реконструкцию!";} 
Причем название не поменялось
xew вне форума Ответить с цитированием
Старый 17.01.2012, 23:09   #8
Cronos20
Форумчанин
 
Регистрация: 08.07.2010
Сообщений: 679
По умолчанию

Если хотите в понятном формате, который удобно редактировать, то используйте json или xml .... мой очень субъективный выбор - json - удобно и нативно гонять между страницами (в т.ч. редактирование) с помощью javascript и ajax
Cronos20 вне форума Ответить с цитированием
Старый 18.01.2012, 15:44   #9
xew
Пользователь
 
Регистрация: 29.05.2010
Сообщений: 27
По умолчанию

Решил сделать через в ini файл но практически ни какой инфы на эту тему не нашел тока как открыть ini файл и считать параметры... можете дать ссылочку если у кого имеется.
xew вне форума Ответить с цитированием
Старый 18.01.2012, 16:02   #10
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Вам посоветовали уже самый простой и удобный способ реализации вашей задачи - через serialize|unserialize.

По работе с .ini файлами вы не можете найти информации потому, что вся работа с ними и заключается только в чтении параметров, заданных в этом файле настроек.
Для динамического изменения данных их никто не использует - потому, что есть более простые и удобные способы реализации таких задач (хранение в БД, serialize|unserialize, include).

Если же вы не ищете легких путей - попробуйте этот класс, только почитайте комменты к нему сначала.
Andkorol вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение цвета определенных ячеек в StringGrid. Delphi Multiman Помощь студентам 2 04.10.2011 20:23
Удаление определенных строк в ячейке Iren__ Microsoft Office Excel 3 30.09.2010 15:17
суммирование определенных строк Rekky SQL, базы данных 4 30.07.2010 11:14
макрос для перемещения определенных строк вверх MrGB Microsoft Office Excel 2 11.07.2010 20:04
Изменение форматирования в RichEdit1 в определенных местах Polotenchik Общие вопросы Delphi 2 04.12.2008 19:56