php修改csv其中一行数据,如何使用php替换CSV文件中的一行中的1个值?

这篇博客讨论了如何在PHP中实现用户更改密码的功能,特别是针对CSV文件存储的用户数据。文章指出,需要先以读取模式打开CSV文件,然后在写入模式下创建一个临时文件,读取每一行,检查并替换符合条件的密码,最后关闭文件并用临时文件替换原始CSV文件。作者提醒读者使用数据库进行此类操作更为安全,并提供了相应的代码示例。
摘要由CSDN通过智能技术生成

所以这是我非常简单和基本的帐户系统(只是一个学校项目),我希望用户能够更改他们的密码.但我不确定如何在一行中替换密码值,保持所有其他值相同.

CSV文件:

ID,Username,Email,DateJoined,Password,UserScore,profilePics

1,Test,Test@Test.com,03/12/2014,Test,10,uploads/profilePics/Test.jpg

2,Alfie,Alfie@test.com,05/12/2014,1234,136,uploads/profilePics/Alfie.png

PHP:

(“cNewPassword”=确认新密码)

session_start();

if(empty($_POST['oldPassword']) || empty($_POST['newPassword']) || empty($_POST['cNewPassword'])) {

die("ERROR|Please fill out all of the fields.");

} else {

if($_POST['newPassword'] == $_POST['cNewPassword']) {

if ($_POST['oldPassword'] == $_SESSION['password']) {

$file = "Database/Users.csv";

$fh = fopen($file, "w");

while(! feof($file)) {

$rows = fgetcsv($file);

if ($rows[4] == $_POST['oldPassword'] && $rows[1] == $_SESSION['username']) {

//Replace line here

echo("SUCCESS|Password changed!");

}

}

fclose($file);

}

die("ERROR|Your current password is not correct!");

}

die("ERROR|New passwords do not match!");

}

?>

解决方法:

您必须以读取模式打开文件,在写入模式下打开文件,写入修改后的数据,然后删除/重命名文件.我建议尝试建立一个真正的数据库并使用它,但如果你要使用csv,代码看起来应该或多或少像这样:

$input = fopen('Database/Users.csv', 'r'); //open for reading

$output = fopen('Database/temporary.csv', 'w'); //open for writing

while( false !== ( $data = fgetcsv($input) ) ){ //read each line as an array

//modify data here

if ($data[4] == $_POST['oldPassword'] && $data[1] == $_SESSION['username']) {

//Replace line here

$data[4] = $_POST['newPassword'];

echo("SUCCESS|Password changed!");

}

//write modified data to new file

fputcsv( $output, $data);

}

//close both files

fclose( $input );

fclose( $output );

//clean up

unlink('Database/Users.csv');// Delete obsolete BD

rename('Database/temporary.csv', 'Database/Users.csv'); //Rename temporary to new

希望能帮助到你.

标签:php,csv

来源: https://codeday.me/bug/20190716/1476675.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值