2012-06-21 3 views
4

Мой последний вопрос не был объяснен очень хорошо.Редактирование файла PHP, с другим файлом php, с использованием Fwrite

Что я пытаюсь сделать здесь, это вставить данные в файл PHP, используя функцию fwrite в другом .php-файле.

Чтобы сохранить эту простой, я мечение один я хочу данные вставляются как file.php и один я использую FWRITE для выполнения на, является edit.php

Теперь я получил письмо вещи вниз, какова моя проблема, мне нужно ВСТАВИТЬ эти данные, Перед закрывающим тегом php на file.php.

Что я пытался сделать, это удалить закрывающий тег php, записать данные, а затем переписать тег.

Вот мой исходный код для этого:

<?php 
$rows = file("file.php");  
$tagremove = "?>"; 
foreach($rows as $key => $row) { 
if(preg_match("/($tagremove)/", $row)) { 
    unset($rows[$key]); 
} 
} 
file_put_contents("file.php", implode("", $rows)); 

$User = $_GET["user"]; 
$File = "file.php"; 
$Handle = fopen($File, "a"); 
fwrite($Handle, ""); 
fwrite($Handle, $User); 
fwrite($Handle, "\r\n"); 
fwrite($Handle, "?>"); 
print "Data Written"; 
fclose($Handle); 
?> 

Когда я бегу это на edit.php, он вставляет эти данные в файл, но его только записи в первой строке, и заменить все, что уже там. (В моем случае это открывающий тег php). Я не знаю, что я делаю неправильно, или если есть другой способ сделать это, но любая помощь будет оценена по достоинству.

Редактировать: это снова для чат-клиента.

У меня есть файл, который отправляет сообщение в TXT-файл, который затем читает клиент.

И этот файл читает файл.php (staff.php), чтобы проверить, является ли пользователь подчиненным сотрудником.

Если дело доходит до того, что пользователь является сотрудником, он меняет имя пользователя в send.php.

И до сих пор send.php только успешно, включая Staff.php, я пробовал staff.txt, и причина в том, что PHP-код находится в staff.php.

+4

Пожалуйста, не делайте этого. –

+0

Вы знаете, что это будет убивать котят каждый раз, когда он выполняется? Я имею в виду, если вы ненавидите котят тогда ... – prodigitalson

+0

Я не прошу мнения, я хочу знать, как я могу это сделать. – Ron

ответ

5

Попробуйте это:

$data="echo 'hello world!';"; 
$filecontent=file_get_contents('file.php'); 
// position of "?>" 
$pos=strpos($filecontent, '?>'); 
$filecontent=substr($filecontent, 0, $pos)."\r\n".$data."\r\n".substr($filecontent, $pos); 
file_put_contents("file.php", $filecontent); 

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

+3

Это, работает. Я люблю тебя. – Ron

0

Хорошо, что лучше использовать файл данных. Ill использование JSON, потому что его легко использовать очень легко разобрать глазами человека, а также:

// read file 
$data = file_get_contents('data.json'); 
$json = json_decode($data, true); 

// manipulate data 
$json['users'][] = $_GET['user']; 

// write out file 
$dataNew = json_encode($json); 
file_put_contents('data.json', $dataNew); 

причина, PHP код в staff.php

Ну это разве что-то вы обходным путем. Вы должны писать/читать этот вид информации из хранилища данных - это может быть файл или база данных ... но не настоящий скрипт.

+0

Но можете ли вы использовать функцию Include в php для включения источника, если в нем содержится theres php. – Ron

+0

DONT ВКЛЮЧАЕТ ИСТОЧНИК В ВАШИХ ДАННЫХ. Данные - это данные, они не должны содержать логики. Файлы должны считывать и записывать данные в источник данных, а не хранить данные в логике, если они не являются статическими и не нуждаются в изменении. – prodigitalson