Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Функция пишет в файл 2 раза


Автор: Scream 2.5.2008, 10:19
У меня есть функция, которая дописывает информацию в файл, но она срабатывает 2 раза. Я так понял, что это из-за файла .htaccess, т.к. если в нем удалить код, то функция работает нормально. Как это можно починить?

Код .htaccess:
Код

RewriteEngine On

RewriteCond %{REQUEST_URI} (.*/[^/.]+)($|\?)
RewriteRule .* %1/ [R,L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ ./index.php


Функция записи:
Код

function wrFile($file, $data) {
    
    # Читаем содержимое файла.
    $text = file_get_contents($file);
    
    # Дописываем информацию в начало файла.
    $f = fopen($file, "wb+");
    fputs($f, $text . ' - ' . $data);
    fclose($f);
}

wrFile('folder/test.txt', 'text');


После вызова функции в test.txt будет написано:
Код

 - text - text


А если стереть код из .htaccess, то:
Код

 - text


 smile 

UPD: Это все тестирую на Денвере.

Автор: Feldmarschall 2.5.2008, 10:38
Функция работает корректно. И делает ровно то, для чего предназначена - при каждом запросе с сервера несуществующего файла, пишет текст в файл =)

Автор: Scream 2.5.2008, 10:48
Feldmarschall, эмм... Не понял вас smile

Автор: Feldmarschall 2.5.2008, 11:02
wrFile('folder/test.txt', $_SERVER['REQUEST_URI']);

Автор: Scream 2.5.2008, 11:02
Хы, а если в .htaccess написать
Код

RewriteEngine On

RewriteCond %{REQUEST_URI} (.*/[^/.]+)($|\?)
RewriteRule .* %1/ [R,L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^([^\.]*)$ /index.php/$1 [L]

то все ок. Я пока так и не понял что поисходит в последней строке и почему так работает, а подругому нет.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)