Добавление переменной в массив находящийся в файле

уже записывается но в серизованном виде, вот так

PHP:
a:1:{i:0;a:3:{i:0;s:14:"besplatnie.ru
";i:1;s:17:"igrinatelefon.ru
";i:2;s:21:"igrinatelefonnokia.ru";}}

а это работает, хоть и костыль лютый но работает :rules:

PHP:
if(isset($_POST['adddomains']))

{

    $domainss = $_POST['adddomains'];
    $domainss = explode("\n", $domainss);
    $file = dirname(__FILE__).'\domains.php';

    foreach ($domainss as $domannss)
 
    {
        $domannss = trim($domannss);
        $domannss= "\r\n'$domannss', )";
        $current = file_get_contents($file);
        $current = str_replace ( ")", $domannss, $current);
        $current = preg_replace ("/' ,/", "',", $current);
        if(file_put_contents($file, $current))
        {
            echo 'домен добавлен<br>';
        }
        else
        {
            echo 'домен не записался в конфиг<br>';
        }
    }
die();
}

if(isset($_POST['killdomans']))

{

    $domainss = $_POST['killdomans'];
    $domainss = explode("\n", $domainss);
    $file = dirname(__FILE__).'\domains.php';

    foreach ($domainss as $domannss)
 
    {

        $domannss = trim($domannss);
        $file = dirname(__FILE__).'\domains.php';
        $domannss = "'$domannss',";
        $current = file_get_contents($file);
        $current = str_replace ( $domannss, '', $current);

        if(file_put_contents($file, $current))
        {
            echo 'домен удалён<br>';
        }
        else
        {
            echo 'домен не удалён<br>';
        }
    }
die();
}
 
уже записывается но в серизованном виде, вот так
ну я б делал так, например, если код рабочий, конечно :crazy:
PHP:
<?php
process_domains('adddomains');
process_domains('killdomains', true);

function process_domains($parameter, $remove = false)
{
    $domains = isset($_POST[$parameter]) ? explode("\n", $_POST[$parameter]) : false;
    if (is_array($domains))
    {
        $file = dirname(__FILE__).'\domains.php';
        foreach ($domains as $domain)
        {
            ...
          
            if(file_put_contents($file, $current))
            {
                echo $remove ? 'домен удалён<br>': 'домен добавлен<br>';
            }
            else
            {
                echo $remove ? 'домен не удалён<br>': 'домен не записался в конфиг<br>';
            }
        }
    }
}
 
не.. у вас работать не будет.. уже хотя бы по тому, что записываете только последнее значение итерации - нужно было третьим параметром file_put_contents добавить константу FILE_APPEND..
ну и не удаляете ничего.. ))

скорее уж тогда как-то так так:
PHP:
process_domains( 'adddomains' );
process_domains( 'killdomains', true );

function process_domains( $parameter, $remove = false ){
    $domains = ! empty( $_POST[ $parameter ] ) ? explode( "\n", $_POST[ $parameter ] ) : false;

    if( is_array( $domains ) ){
        $file_path = __DIR__ . '/domains.php';
        $stored_domains = file_get_contents( $file_path );
        $stored_domains = @unserialize( $stored_domains );

        if( ! $stored_domains ){

            $stored_domains = array();
        }

        $diff_domains = array_diff( $domains, $stored_domains );

        if( ! empty( $diff_domains ) ){

            if( $remove ){

                    echo 'удаленные домены : ' . implode( ', ', $diff_domains );
                $stored_domains = array_replace( $stored_domains, $diff_domains );
                }
            }
            else{

                echo 'удаленные домены : ' . implode( ', ', $diff_domains );
                $stored_domains = array_merge( $stored_domains, $diff_domains );
            }

            file_put_contents( $file_path, serialize( $stored_domains ) );
        }
}
 
пойду PHP глазами хакера почитаю, может пойму как сделать чтоб нормально отображался массив в файле:alko:
 
Для просмотра ссылки Войди или Зарегистрируйся, не прибегая к переводу в строковый формат (сериализация, json, xml, свои костыли, т.п.) в обычном php виде массив в файл вы никак не сохраните.. т.о. приведенные вам решения - это совершенно нормальная ситуация..
 
Для просмотра ссылки Войди или Зарегистрируйся, не прибегая к переводу в строковый формат (сериализация, json, xml, свои костыли, т.п.) в обычном php виде массив в файл вы никак не сохраните.. т.о. приведенные вам решения - это совершенно нормальная ситуация..
на самом деле тут две проблемы, одна из них сам код :crazy:, вторая - понимание как сделать :tut:
 
Назад
Сверху