5

我的最后一个问题没有得到很好的解释。

我在这里要做的是将数据插入到 PHP 文件中,在另一个 .php 文件上使用 fwrite 功能。

为了简单起见,我将要插入的数据标记为 file.php,而我使用 fwrite 执行的标记是 edit.php

现在,我把事情写下来了,我的问题是,我需要在 file.php 上的关闭 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 文件中。

该文件正在读取 file.php (staff.php) 以检查提交的用户是否是工作人员。

如果用户确实是员工,那么它会更改 send.php 中的用户名变量。

到目前为止,send.php 只成功包含了 Staff.php,我尝试过 Staff.txt,原因是 php 代码在 Staff.php 中。

4

2 回答 2

8

试试这个:

$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);

请不要忘记,您需要检查用户的数据。

于 2012-06-21T21:11:21.227 回答
2

好的更好的选择使用数据文件。我将使用 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中

那么这不是你的解决方法。您应该从数据存储中写入/读取这种信息 - 可以是文件或数据库......但不是实际的脚本。

于 2012-06-21T21:07:31.407 回答