我在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,
答案 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));