2015-05-12 22 views
2

Привет, поэтому у меня есть таблица журналов в моей базе данных и в каждом действии пользователя, таком как вход в систему, выход из системы, редактирование, удаление, создание, я хочу, чтобы он регистрировался. Вот мой текущий код в каждом действии:Создать функцию вставки в php

$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". Как я могу это сделать? Спасибо!

ответ

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(); 
} 

Надеется, что это помогает.

+0

Здравствуйте, почему я должен установить $ action как null? спасибо – FewFlyBy

+0

Я думаю, что массив будет хорошим выбором для $ ip, $ result –

+0

@tiGer yes массив можно использовать, но есть только три значения, поэтому я не использовал. –

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); 

Или вы можете использовать случай переключатель для этого.

+0

Таким образом, это будет выглядеть так, если я назову его правильно? logData ("Войти"); – FewFlyBy

+0

Попробуй спасибо – FewFlyBy

+0

Хорошо, дайте мне обратную связь, как только вы попробуете это. Спасибо –

Смежные вопросы