我想在我的网站上创建一个注册系统,只有有限的用户才能创建他们的帐户。我想使用一个.txt文件来存储用户名和密码。
到目前为止,我有以下代码:
$uname=$_POST['usr'];
$pass=$_POST['pwd'];
if(empty($_POST["ok"])){echo "Could not insert data!";}
else
{$file=fopen("user.txt","w");
echo fwrite($file,$uname);
fclose($file);}
这将从表单接收用户数据,并将其放入user.txt文件中。
我的问题是,当新数据插入到txt文件时,旧数据会被删除。
我想把数据保存在像一样的txt文件中
foo:12345~bar:1111
用户名和密码由:分隔,新用户由~隔离,稍后我将使用regex从txt文件中获取数据。
如何更正代码以保留新数据和旧数据?
您需要在附加模式中打开文件
http://php.net/manual/en/function.fopen.php
<?php
$uname = $_POST['usr'];
$pass = $_POST['pwd'];
if (empty($_POST["ok"])) {
echo "Could not insert data!";
} else {
$file = fopen("user.txt", "a");
$srt="foo:".$uname."~bar:".$pass;// create your string
echo fwrite($file, $srt);
fclose($file);
}
如果我们想添加到一个文件中,我们需要以附加模式打开它。
因此,您需要从只写模式更改为附加模式。
$file=fopen("user.txt","a");
要回答您的问题:您必须显式地将$mode
参数传递给fopen()
,函数等于'a'
。
但是,使用普通文件执行此任务似乎不是一个好主意。主要是因为并发写的麻烦。
这确实是一个糟糕的选择:在安全性、读/写时间、并发请求等方面都有很多缺点。使用数据库并不困难,所以我的建议是使用数据库。
无论如何,您的问题在这里被问到了:php在文本文件中创建或写入/附加
附加到文件的简单方法:
file_put_contents("C:/file.txt", "this is a text line" . PHP_EOL, FILE_APPEND | LOCK_EX);