你好,所以我的数据库中有一个日志表,并且在每个用户操作中都有登录,注销,编辑,删除,创建,我希望它被记录下来。以下是我在每个操作中的当前代码:
$action = "Log in"; //if user log in
$query = "INSERT INTO tbllogs
(logorigin,
logaction,
loguser,
logdate,
logoutcome)
VALUES
(:origin,
:action,
:user,
:dt,
:outcome)";
$stmt = $dbc->prepare($query);
$stmt->bindParam(':origin', $ip);
$stmt->bindParam(':action', $action);
$stmt->bindParam(':user', $_SESSION['id']);
$stmt->bindParam(':dt', $dateTime);
$stmt->bindParam(':outcome', $outcome);
$stmt->execute();
我想要做的不是在每个用户操作中重复此代码,我想创建一个这样做的函数。但我的问题是,我在我的$action
变量中使用了不同的值,例如,如果用户将登录,$action = "Log in"
,如果用户退出,$action = "Log out"
。我怎么能做到这一点?谢谢!
答案 0 :(得分:2)
您可以执行以下操作:
function logData($action, $values_to_be_saved) {
if ($action == 'Log in') {
//Query to save values
}
}
你可以这样称呼:
$action = 'Log in'; // Any action you want to call
$values_to_be_saved // Array containing values to be saved like origin, action, user, dt, outcome
logData($action, $values_to_be_saved);
或者您可以使用开关盒。
答案 1 :(得分:1)
在文件中创建以下函数,并将其包含在要记录活动的每个页面上。然后使用变量调用函数,如下所示:
logging('Log In',$ip,$outcome);
function logging($action=null,$ip,$outcome){
$query = "INSERT INTO tbllogs (logOrigin, logAction, logUser, logDate, logOutcome) VALUES (:origin, :action, :user, :dt, :outcome)";
$stmt = $dbc->prepare($query);
$stmt->bindParam(':origin', $ip);
$stmt->bindParam(':action', $action);
$stmt->bindParam(':user', $_SESSION['id']);
$stmt->bindParam(':dt', $dateTime);
$stmt->bindParam(':outcome', $outcome);
$stmt->execute();
}
希望它有所帮助。