搜索和覆盖txt文件中的时间戳

时间:2014-10-05 04:43:50

标签: php html

我在php中有问题。为了我的大学目的,我被要求这样做。我的第一页中有一个基本文本框,用户在其中输入登录ID并按下登录按钮。按下登录按钮后,登录ID和时间戳存储在以逗号分隔的txt文件中。因此,如果是用户A第二次登录,那么必须用新的时间戳覆盖以前的时间戳。

这是我的代码:

<html>
<head><title>Login Portal</title></head>
<body><center>
<h1>TPF EMPLOYEE LOGIN</h1><hr><br><br>
<?php
session_start();
if(isset($_POST['submit']))
    {
    $myfile = fopen("data.txt", "a") or die("Unable to open file!");
    $_SESSION['name']=$_POST['id'];
    date_default_timezone_set('Asia/Calcutta');
    $date = date('Y-m-d H:i:s');
    $txt=$_SESSION['name'].",".$date.",\n";
    fputs($myfile, $txt);
    fclose($myfile);
    }
    else
    {
    echo "<form name='login' method='post'>";
    echo "Enter your login id : <input type='text' name='id' id='id' /><br><br>";
    echo "<input type='submit' name='submit' value='Login' />";
    echo "</form>";
    }
?>
</center>
</body>
</html>

这就是我的txt文件的样子:

yesh,2014-10-05 10:00:42,
thilak,2014-10-05 10:00:56,

2 个答案:

答案 0 :(得分:0)

if(isset($_POST['submit'])) {
    $myfile = file_get_contents('data.txt');
    $_SESSION['name']=$_POST['id'];
    date_default_timezone_set('Asia/Calcutta');
    $date = date('Y-m-d H:i:s');
    $txt=$_SESSION['name'].",".$date.",\n";
    $name = $_SESSION['name'];
    if(preg_match("/$name/", $myFile)) {
        $results = preg_replace("/$name.*\,/", $txt, $myFile);
        file_put_contents('data.txt', $results);
    }
    else {
        file_put_contents('data.txt', $txt, FILE_APPEND);
    }
}
else {
    echo "<form name='login' method='post'>";
    echo "Enter your login id : <input type='text' name='id' id='id' /><br><br>";
    echo "<input type='submit' name='submit' value='Login' />";
    echo "</form>";
}

请确保在真实文件中使用之前仔细测试,以确保它不会损害您的数据。因为我对文件本身不够了解,以确保它不会损坏文件。

答案 1 :(得分:0)

这样的事情(虽然可能不是最优的)应该有效。但是,在实际环境中,您可能希望使用数据库或至少锁定文件,以便读取和写入之间的其他会话不会更新它。这是未经测试的,但应该让你朝着正确的方向。

$lines = file($file, FILE_IGNORE_NEW_LINES);
$name = preg_quote($_SESSION['name']);
$lines = preg_replace('/^' . $name . ',([^,]+),/$', $date, $lines);
file_put_contents($file, join("\n", $lines));