PHP разблокирует ИЛИ перепишет собственный/текущий файл самостоятельно


Задача: Вырезать или стереть файл после первого просмотра.

У меня есть установочный файл под названием"index.php "который создает другой php-файл.

<? 
/* here some code*/
$fh = fopen($myFile, 'w') or die("can't open file");
$stringData = "<?php \n
echo 'hallo, *very very long text*'; \n 
?>";
fwrite($fh, $stringData);
/*herecut"/
/*here some code */

После создания нового файла этот файл вызывается, и я намерен удалить вызов создания файла, так как он очень длинный и необходим только при первой установке.

Поэтому я добавляю к приведенному выше коду

echo 'hallo, *very very long text*'; \n 
***$new= file_get_contents('index.php'); \n
$findme   = 'habanot';
$pos = strpos($new, $findme);
if ($pos === false) {
$marker='herecut';\n
$new=strstr($new,$marker);\n
$new='<?php \n /*habanot*/\n'.$new;\n
$fh = fopen('index.php', 'w') or die 'cant open file');
$stringData = $new;
fwrite($fh, $stringData);
fclose($fh);***    

?>";
fwrite($fh, $stringData);]}

Нет ли более простого способа или функции для изменения текущего файла или даже "самоуничтожения" файла после первого позвонить?

С уважением

РЕДАКТИРОВАТЬ: нашел способ редактировать, извините заф

unlink(__FILE__);

Можно использовать для удаления "вспомогательного файла" после выполнения.

Author: AstroCB, 2010-05-08

2 answers

unlink(__FILE__);

Для файла "помощник" кажется необходимым, так как я не могу найти способ изменить php-файл при использовании/процессе.

 5
Author: Email, 2010-05-08 18:30:09

Большинство самоустанавливающихся PHP-сайтов используют install.php для выполнения начальной настройки. Когда установка будет подтверждена, вы перенаправите на removeinstall.php который вызывал бы unlink() для каждого установочного файла, чтобы очистить их все.

Это действительно оставляет позади removeinstall.php, но имеет преимущество в том, что не загрязняет какой-либо "живой код" кодом удаления установки.

Removeinstall.php будет просто содержать инструкции, не связанные...

if (file_exists('install.php')) {
    unlink('install.php');
}

Если вы не хотите чтобы оставить позади removeinstall.php , у вас может быть условный вызов в другом файле... например, index.php?removeinstallation=1 или аналогичный.

 1
Author: user75525, 2010-05-11 06:48:05