加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

如何使用php替换CSV文件中的一行中的1个值?

发布时间:2020-12-13 21:58:16 所属栏目:PHP教程 来源:网络整理
导读:所以这是我非常简单和基本的帐户系统(只是一个学校项目),我希望用户能够更改他们的密码.但我不确定如何在一行中替换密码值,保持所有其他值相同. CSV文件: ID,Username,Email,DateJoined,Password,UserScore,profilePics1,Test,Test@Test.com,03/12/2014,10,
所以这是我非常简单和基本的帐户系统(只是一个学校项目),我希望用户能够更改他们的密码.但我不确定如何在一行中替换密码值,保持所有其他值相同.

CSV文件:

ID,Username,Email,DateJoined,Password,UserScore,profilePics
1,Test,Test@Test.com,03/12/2014,10,uploads/profilePics/Test.jpg
2,Alfie,Alfie@test.com,05/12/2014,1234,136,uploads/profilePics/Alfie.png

PHP:
(“cNewPassword”=确认新密码)

<?php
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

希望能帮助到你.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读