5

私の最後の質問はあまりよく説明されていませんでした。

ここで私がやろうとしているのは、別の.phpファイルのfwrite機能を使用して、PHPファイルにデータを挿入することです。

これを簡単にするために、データを挿入したいものを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のusername変数を変更します。

そしてこれまでのところ、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 に答える