wdsg

wdsg
Рейтинг
31
Регистрация
09.02.2009
Lord-Freeman:
Т.е. есть на сервере папка с файлами php в которых нужно старый путь к корню заменить на новый.

Так не стояло задачи субдиры окучивать. Давайте немного доработаем:


$Path = '/mypath/'; // Это путь до директории
$Mask = '.php'; // На какой фрагмент имени файла будем обращать внимание
$From = 'a'; // Что заменять
$To = 'b'; // На что заменять

StrReplaceInDir($Path, $Mask, $From, $To);

function StrReplaceInDir($Path, $Mask, $From, $To) {
$Files = scandir($Path);
foreach($Files as $FileName) {
$File = $Path.$FileName;
if (is_dir($File) and $FileName != '.' and $FileName != '..') {
StrReplaceInDir($File.'/', $Mask, $From, $To);
}
elseif (!strpos($FileName, $Mask) === false) {
$Content = file_get_contents($File);
$Content = str_replace($From, $To, $Content);
file_put_contents($File, $Content);
}
}
}

Что касается прав, разумеется, если юзер, под которым запускается php (или httpd, если Вы через него запускаете), не имеет прав на запись в целевые файлы, ничего не выйдет.

С CMS, вроде WP, не работаю. Но, предположив, что сам "плагин" лежит в wp-content/plugins/, видимо, можно его дёрнуть и использовать в приведённом коде:


//Добавление записей в WordPress при помощи PHP
require_once('wp-config.php');
require_once('wp-content/plugins/rus-to-lat.php'); // Мне кажется, тут он должен быть...
// подключить файл, "загружающий" WordPress
//include($pathToWordpress.'/'.'wp-blog-header.php');
// указать параметры
// статус поста - "опубликован"
$post_array = array('post_status' => 'publish',
// автор - админ (пользователь с id = 1)
'post_author' => 1,
// заголовок поста
'post_title' => 'my_title',
// текст поста
'post_content' => 'text',
// название поста
'post_name' => 'pub_title',
// теги
'tags_input' => sanitize_title_with_translit('tag1, tag2, tag3'),
// категории
'post_category' => array(11, 7)
);
// добавление записи в блог
echo wp_insert_post($post_array);

Не проверял. За последствия не ручаюсь. В случае, если такое решение не пройдёт, проще всего будет просто добавить свою функцию конверта в транслит.

Делаем примерно так:


$Path = '/mypath/'; // Это путь до директории
$Mask = '.php'; // На какой фрагмент имени файла будем обращать внимание
$From = 'a'; // Что заменять
$To = 'b'; // На что заменять

$Files = scandir($Path);
foreach($Files as $FileName) {
if (!strpos($FileName, $Mask) === false) {
$Content = file_get_contents($Path.$FileName);
$Content = str_replace($From, $To, $Content);
file_put_contents($Path.$FileName, $Content);
}
}

Вот, собственно, и всё. Должно работать :)

Необходимая Вам функция выглядит примерно так:


function link_to_array($content){
preg_match_all ('|<a.* href=.*>.*</a>|U', $content, $links);
return $links[0];
}

В .htaccess пишем:


RewriteEngine on
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^$ main.htm [L]


Order Allow,Deny
Allow from all
Deny from .opera-mini.net

slipknotweb, для того, чтобы запретить доступ определённым хостам через .htaccess, пишем вот так:


Order Allow,Deny
Allow from all
Deny from host1
Deny from host2

Это далеко не самый эффективный и правильный способ борьбы со спамом на форумах.

ТС, ни один из приведённых Вами примеров не может работать при register_globals=off ! Покажите, пожалуйста, именно phpinfo(). Желательно, уже после include("./admin/config.php");

Wistis:
просто на хостинге стоит OFF, но такой же скрипт работает

Если Вы мне покажите такой же код, нормально работающий на хосте с register_globals=off, я уйду в монастырь :)

Wistis, это уже проблема N2. Как заметил уважаемый pistol, приведённый Вами (г)код ориентирован на работу с register_globals=on, который, в большинстве случаев, off. Код необходимо править.

Всего: 392