我使用PHP和MySQL创建了一个Web应用程序。我正在寻找一种实现一些用户数据跟踪的好方法。我想要它,以便当用户更改字段时,我可以显示更改,例如" John Doe已将关闭日期从2012年6月5日更改为2012年6月13日"
我无法想到一个好的,简单的方法来做到这一点。有人有什么建议吗?
答案 0 :(得分:0)
这将做你想要做的事情,我没有使用数据库连接,所以你可以看到这项工作完全按照给你的工作,但是在数据库连接和数据中进行修改应该很容易看出它会如何工作。我加入了加密,以防万一你和那些能够在没有任何“通知”任何人的情况下更改数据的人一起工作(从Simple encryption in PHP获取)你可以完全省略它,如果不需要的话。本质上,它只是将数据存储在页面上的隐藏字段中,并在提交后进行比较以查看更改内容。 HTH
<?php
function ecrypt($str){
$key = "something simple";
for($i=0; $i<strlen($str); $i++) {
$char = substr($str, $i, 1);
$keychar = substr($key, ($i % strlen($key))-1, 1);
$char = chr(ord($char)+ord($keychar));
$result.=$char;
}
return urlencode(base64_encode($result));
}
function decrypt($str){
$str = base64_decode(urldecode($str));
$result = '';
$key = "something simple";
for($i=0; $i<strlen($str); $i++) {
$char = substr($str, $i, 1);
$keychar = substr($key, ($i % strlen($key))-1, 1);
$char = chr(ord($char)-ord($keychar));
$result.=$char;
}
return $result;
}
if (isset($_POST['update']) && $_POST['update']!='') {
$data1=$_POST['data1'];
$data2=$_POST['data2'];
$data3=$_POST['data3'];
$datahide1=decrypt($_POST['datahide1']);
$datahide2=decrypt($_POST['datahide2']);
$datahide3=decrypt($_POST['datahide3']);
$msg='';
if ($data1!=$datahide1) {
$msg.="John Doe has change name from ".$datahide1." to ".$data1."<br>";
}
if ($data2!=$datahide2) {
$msg.="John Doe has change price from ".$datahide2." to ".$data2."<br>";
}
if ($data3!=$datahide3) {
$msg.="John Doe has change date from ".$datahide3." to ".$data3."<br>";
}
// do your database update here
// do your results here
if ($msg!="") {
echo $msg;
} else {
echo "No changes";
}
die();
}
// Database recordset here
// Junk data
$data1="John Doe";
$data2="25.00";
$data3="6/5/2012";
// encypted data
$datahide1=ecrypt($data1);
$datahide2=ecrypt($data2);
$datahide3=ecrypt($data3);
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>
<body>
<form name="form1" method="post" action="revisiontrack.php">
<label for="data1">Name:</label>
<input type="text" name="data1" id="data1"><input name="datahide1" type="hidden" value="<?php echo $datahide1;?>">
<label for="data2">Price:</label>
<input type="text" name="data2" id="data2"><input name="datahide2" type="hidden" value="<?php echo $datahide2;?>">
<label for="data3">Date:</label>
<input type="text" name="data3" id="data3"><input name="datahide3" type="hidden" value="<?php echo $datahide3;?>">
<input name="update" type="hidden" id="update" value="y">
<input type="submit" name="submit" id="submit" value="Submit">
</form>
</body>
</html>