PHP와 MySQL을 사용하여 웹 응용 프로그램을 만들었습니다. 일부 사용자 데이터 추적을 구현하는 좋은 방법을 찾고 있습니다. 사용자가 필드를 변경하면 "John Doe가 2012 년 6 월 5 일에서 2012 년 6 월 13 일까지 닫기 날짜를 변경했습니다"와 같은 변경 사항을 표시 할 수있게하려고합니다.사용자 데이터 개정 추적 구현
' 이것을하기위한 좋은, 쉬운 방법을 생각해 보라. 누구든지 어떤 제안이 있습니까?
PHP와 MySQL을 사용하여 웹 응용 프로그램을 만들었습니다. 일부 사용자 데이터 추적을 구현하는 좋은 방법을 찾고 있습니다. 사용자가 필드를 변경하면 "John Doe가 2012 년 6 월 5 일에서 2012 년 6 월 13 일까지 닫기 날짜를 변경했습니다"와 같은 변경 사항을 표시 할 수있게하려고합니다.사용자 데이터 개정 추적 구현
' 이것을하기위한 좋은, 쉬운 방법을 생각해 보라. 누구든지 어떤 제안이 있습니까?
이 작업은 사용자가 원하는 작업을 수행 할 것이므로 데이터베이스 연결을 사용하지 않았으므로이 작업을 사용자에게 정확하게 표시 할 수 있지만 데이터베이스 연결의 하위 집합과 데이터는 어떻게 보이는지 쉽게 볼 수 있어야합니다 작동 할 것이다. 누군가에게 "통지"하지 않고 데이터를 변경할 수있는 혜택을 누릴 사람들과 함께 작업하는 경우에만 암호화에 추가했습니다 (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>
예, 나는 이렇게 할 수 있다고 생각합니다. 이렇게 많은 양식 필드를 필요로하지 않는 쉬운 방법이 있는지 궁금합니다. – Keith
글쎄, 기본 프로세스는 비교적 간단합니다. 변경 사항을 저장할 때 이전 필드 값과 새 필드 값을 비교하십시오. 다른 필드의 경우 변경 사항을 로그에 기록하십시오. 당신이 갇혀있는 곳을 좀더 구체적으로 할 수 있습니까? –
테이블을 업데이트 할 때이 메시지에 플래그를 지정할 수 있습니다. – swapnesh
어떤 필드가 업데이트되고 있는지 알지 못하기 때문에 막혔습니다. 업데이트 직전에 쿼리를 실행하여 원래 필드를 선택한 다음 모든 필드를 비교하고 다른 필드가 있는지 확인해야합니까? 그들을 비교하는 가장 좋은 방법은 무엇입니까? – Keith