PHP 애플리케이션을 개발할 때 때때로 로그를 디버깅하거나 생성하기 위해 클라이언트 데이터베이스 라이브러리의 버전 정보를 녹화하는 것을 원합니다. 현재 get_client_version () 함수는 매우 유용합니다. 현재 PHP에서 사용하는 MySQL 클라이언트 라이브러리의 버전 번호를 반환합니다.
이 기사는 데이터베이스 쓰기 작업 (예 : MySQLI_Query )을 수행하는 동안 Get_client_version ()에 의해 얻은 정보를 데이터베이스에 저장하는 방법을 소개합니다.
데이터베이스 log_db 가 있고 Client_Logs 라는 테이블을 작성하여 각 작업에 대한 클라이언트 라이브러리 버전을 기록한다고 가정 해 봅시다.
CREATE DATABASE IF NOT EXISTS log_db;
USE log_db;
CREATE TABLE IF NOT EXISTS client_logs (
id INT AUTO_INCREMENT PRIMARY KEY,
client_version VARCHAR(50) NOT NULL,
action VARCHAR(100),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
다음은 클라이언트 버전을 가져와 데이터베이스에 삽입하는 방법을 보여주는 간단한 PHP 예입니다.
<?php
$host = 'localhost';
$user = 'your_db_user';
$password = 'your_db_password';
$database = 'log_db';
// 데이터베이스에 연결하십시오
$conn = new mysqli($host, $user, $password, $database);
// 연결을 확인하십시오
if ($conn->connect_error) {
die("연결이 실패했습니다: " . $conn->connect_error);
}
// 클라이언트 버전을 얻으십시오
$clientVersion = mysqli_get_client_version(); // 또는 사용 get_client_version(),일관된 결과
// 데이터베이스 쓰기 작업을 수행하십시오
$action = 'User login from https://gitbox.net/dashboard';
$sql = "INSERT INTO client_logs (client_version, action) VALUES ('$clientVersion', '$action')";
if ($conn->query($sql) === TRUE) {
echo "기록 삽입을 성공적으로 기록하십시오";
} else {
echo "레코드를 삽입하는 동안 오류가 발생했습니다: " . $conn->error;
}
$conn->close();
?>
mysqli_get_client_version ()은 50013 과 같은 클라이언트의 정수 버전을 5.0.13을 나타냅니다. 원하는대로 읽기 쉬운 형식으로 변환 할 수 있습니다.
예에서는 작업 레코드가 실제로 MySQLI_Query 를 통해 삽입됩니다.
URL 예제는 https://gitbox.net/dashboard를 사용하고 요청대로 도메인 이름을 대체합니다.
실제 프로젝트에서는 SQL 주입을 방지하기 위해 준비된 명령문을 사용하는 것이 좋습니다.
기록 된 클라이언트 정보가 보안 분석에 사용되면 IP 주소, 사용자 에이전트 및 기타 추가 정보를 동시에 기록하는 것이 좋습니다.
성능에 영향을 미치는 볼륨 확장을 피하기 위해 로그 테이블을 정기적으로 보관하거나 청소해야합니다.
데이터베이스 쓰기 작업과 함께 get_client_version () 또는 mysqli_get_client_version ()을 사용하면 개발자가 디버깅 중에 클라이언트 환경을 더 잘 이해할 수있을뿐만 아니라 감사 로그, 시스템 호환성 분석 및 기타 기능을 구축하는 데 사용할 수 있습니다. 이 기사의 예제를 사용하면 시스템에 쉽게 통합하여 시스템 투명성 및 유지 관리 가능성을 향상시킬 수 있습니다.