Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Нужный скрипт, проблемка
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » Нужный скрипт, проблемка

Страниц (1): [1]
 

1. SKDzR - 20 Ноября, 2009 - 22:39:45 - перейти к сообщению
Приветствую всех, дорогие участники форума!
У меня появилась некая потребность в написании данного кода, но что-то не получается и выдаёт неверный результат...
И так, суть скрипта:
1. подключаем файл, берём из него данные (имя файла), переназначаем переменные, читаем весь файл,
2. переименовываем файл с настоящим именем из подключённого файла в новое имя с помощью рандома,
3. меняем в переменной, в которой находится текст файла подключённого имя со старого на новое и записываем в файл (подключённый), переписывая в нём данные.
Коды файлов:
Главный файл:
PHP:
скопировать код в буфер обмена
  1. require("renamer_1.php");
  2. $content = file_get_contents("renamer_1.php");
  3. $fp = file("renamer_1.php");
  4. $oldname = $config['admin_path'];
  5. echo $oldname;
  6. $newname = "acp_" . rand(10000, 9999999) . ".php";
  7. echo "<br>".$newname;
  8. rename($oldname, $newname);
  9. if (str_replace($oldname, $newname, $content)) echo "<br><br><b>true</b><br>$content";
  10. $in = file_put_contents("renamer_1.php", $content);

Подключаемый (renamer_1.php):
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. //System Configurations
  4.  
  5. $config = array (
  6.  
  7. 'version_id' => "8.3",
  8.  
  9. 'mail_comments' => "1",
  10.  
  11. 'admin_path' => "renamer_for.php",
  12.  
  13. 'rss_informer' => "1",
  14.  
  15. 'allow_cmod' => "0",
  16.  
  17. 'files_max_speed' => "0",
  18.  
  19. );
  20.  
  21. ?>


После запуска главного скрипта, он выводит старое имя, новое. Далее выводит TRUE и строку с НЕ заменёнными данными... Подскажите в чём проблемка у меня...
Надеюсь на Вашу помощь. Заранее благодарен!
2. chaynyk - 20 Ноября, 2009 - 23:55:12 - перейти к сообщению
данный код ни чего не запишет.
CODE (text):
скопировать код в буфер обмена
  1. $in = file_put_contents("renamer_1.php", $content);

Так запишет
PHP:
скопировать код в буфер обмена
  1.  file_put_contents("renamer_1.php", $content);

Этот код не выполним
PHP:
скопировать код в буфер обмена
  1. rename($oldname, $newname);
3. valenok - 21 Ноября, 2009 - 00:02:40 - перейти к сообщению
с чайником не согласен. Почему код не выполним и почему в первом случае ничего не запишет? Лучшее попробуй, потом напиши почему как раз запишет и что же будет в переменной in.

Что касается твоего кода.
Зачем $fp = file("renamer_1.php"); в твоем случае - не ясно.
Что куда записывает, заменяет, подключает и читает из задачи тоже не ясно.
Нужно переименовать файл, а в нутри него записать его новое название ?
Может будет проще просто использовать 'admin_path' => __FILE__ ?
4. chaynyk - 21 Ноября, 2009 - 00:10:33 - перейти к сообщению
valenok пишет:
с чайником не согласен. Почему код не выполним и почему в первом случае ничего не запишет? Лучшее попробуй, потом напиши почему как раз запишет и что же будет в переменной in.

Извиняюсь данные переменной внимательно не посмотрел
5. valenok - 21 Ноября, 2009 - 00:11:40 - перейти к сообщению
А что будет в переменной $in ?
6. SKDzR - 21 Ноября, 2009 - 12:18:51 - перейти к сообщению
valenok пишет:
Зачем $fp = file("renamer_1.php"); в твоем случае - не ясно.

эт да, заработался) эт не надо)
valenok пишет:
Нужно переименовать файл, а в нутри него записать его новое название ?
Может будет проще просто использовать 'admin_path' => __FILE__ ?

нет, нужно переименовать файл renamer_for.php, а его новое имя записать в файл renamer_1.phprenamer_for.php новом, ничего писать не надо, оставить как есть) вот так...
7. valenok - 21 Ноября, 2009 - 14:46:13 - перейти к сообщению
А ты храни запись в сериализоавнном виде. Будет проще читать и писать. http://php.net/serialize
PHP:
скопировать код в буфер обмена
  1. <?
  2. $configFileName = 'renamer_1.php';
  3. $newFileName = "acp_" . rand(10000, 9999999) . ".php";
  4. $config = unserilaze(file_get_contents($configFileName));
  5. $oldFileName = $config['admin_path'];
  6. $config['admin_path'] = $newFileName;
  7. file_put_contents($configFileName,serialize($config));
  8. rename($oldFileName,$newFileName);
8. SKDzR - 22 Ноября, 2009 - 12:59:29 - перейти к сообщению
valenok, не пашет код.. (даже исключая одну орф ошибку...)
что-то не так...
9. Nestor - 22 Ноября, 2009 - 21:03:30 - перейти к сообщению
Немного не по теме, но зачем тебе править конфиг ДЛЕ?
10. SKDzR - 22 Ноября, 2009 - 21:54:23 - перейти к сообщению
Nestor, нужно, для небольшого скрипта... если интересуешься дле, увидишь этот скрипт в паблике

 

Powered by ExBB FM 1.0 RC1