Как сделать проще и красивее

Тема в разделе "Как сделать...", создана пользователем spiderbuber, 22 янв 2012.

  1. spiderbuber

    spiderbuber

    Заблокирован
    Регистр.:
    20 июл 2009
    Сообщения:
    237
    Симпатии:
    61
    Задача: проверить существование нескольких файлов в разных папках. Вывести их права. Если есть права на запись, произвести замету в файле. Результат выполнения или ошибки вывести на экран. Обработать нужно около 10 файлов, по одному очень геморно.
    (.. код потёрт..)
     
  2. demmy

    demmy

    Регистр.:
    13 ноя 2006
    Сообщения:
    330
    Симпатии:
    96
    ммм...

    fileperms + chmod ?
     
  3. chibit

    chibit Life sucks.

    Регистр.:
    4 дек 2007
    Сообщения:
    419
    Симпатии:
    285
    Используй is_writable

    PHP:
    $filenames = array('путь1''путь2''путь3');
    foreach (
    $filenames as &$filename) {
    //проверка
    }
     
  4. spiderbuber

    spiderbuber

    Заблокирован
    Регистр.:
    20 июл 2009
    Сообщения:
    237
    Симпатии:
    61
    Можно полный код?.. Нечего не выходит, всю голову сломал... :(
     
  5. chibit

    chibit Life sucks.

    Регистр.:
    4 дек 2007
    Сообщения:
    419
    Симпатии:
    285
    PHP:
    $filenames = array('./papka/podpapka/file1.php''./papka/podpapka/file2.php''./papka/podpapka/file3.php');
    foreach (
    $filenames as &$filename) {
    //вывод прав
    if (is_writable($filename)) {
    $fileContent file_get_contents($filename);
    $newFileContent str_replace('?>''1
    ?>'
    $fileContent);
    file_put_contents($newFileContent);
    //какие-то еще действия
    }
    }
     
  6. spiderbuber

    spiderbuber

    Заблокирован
    Регистр.:
    20 июл 2009
    Сообщения:
    237
    Симпатии:
    61
    Фишка то в том, что в каждом файле нужно сделать свою замену, а не во всех одинаковую!..
     
  7. chibit

    chibit Life sucks.

    Регистр.:
    4 дек 2007
    Сообщения:
    419
    Симпатии:
    285
    Где об этом сказано в первом посте?
    PHP:
    $filenames = array('./papka/podpapka/file1.php' => '1''./papka/podpapka/file2.php' => '2''./papka/podpapka/file3.php' => '3');
    foreach (
    $filenames as $filename => $replace) {
    //вывод прав
    if (is_writable($filename)) {
    $fileContent file_get_contents($filename);
    $newFileContent str_replace('?>'$replace$fileContent);
    file_put_contents($newFileContent);
    //какие-то еще действия
    }
    }
    Где 1, 2, 3 - нужная замена
     
  8. spiderbuber

    spiderbuber

    Заблокирован
    Регистр.:
    20 июл 2009
    Сообщения:
    237
    Симпатии:
    61
    Извиняюсь - тупанул..

    ..потёрто..
     
  9. uNknownMark

    uNknownMark

    Регистр.:
    22 сен 2007
    Сообщения:
    393
    Симпатии:
    169

    Как то так
    PHP:
    $filenames = array(
        
    'index.php ' => array('whatfind','replace'),
        
    '/engine/classes/parse.class.php ' => array('whatfind','replace'),
        
    '/engine/ajax/antivirus.php ' => array('whatfind','replace'),
        
    '/engine/inc/editusers.php ' => array('whatfind','replace'),
        
    '/engine/init.php' => array('whatfind','replace'),
    );
     
    foreach (
    $filenames as $filename => $replace) {
        
    //вывод прав
        
    if (is_writable($filename)) {
            
    $time_create filemtime($filename);
            
    $fileContent file_get_contents($filename);
            
    $newFileContent str_replace($replace[0], $replace[1], $fileContent);
            
    file_put_contents($newFileContent);
            
    $res=touch ($filename $time_create);
            echo 
    "$filename - ok";
        }
    }
    а вот за такое, на месте модеров отправил бы тебя отдыхать на пару месяцев. Ибо, тут тебе бесплатно помогают, а ты нихрена не хочешь разобраться.
    И судя по коду, уже что то думаешь взломать.

    Тут дело не в них, а в хамском поведении.
     
    spiderbuber нравится это.
  10. spiderbuber

    spiderbuber

    Заблокирован
    Регистр.:
    20 июл 2009
    Сообщения:
    237
    Симпатии:
    61
    chibit, uNknownMark - не работает код (тестил и на локалке и на сервере), пишет, что замена выполнена, но по факту - нет..

    Может тебе денег дать?

    Спасибо всем за наводки, разобрался и сделал так как мне нужно..
    Тему можно прикрыть..