PHP에서 검색 기록을 구현하는 방법
인터넷의 발달과 함께 검색 엔진은 사람들이 정보를 얻는 중요한 채널 중 하나가 되었습니다. 또한 많은 웹사이트에는 사용자가 필요한 콘텐츠를 빠르게 찾을 수 있도록 자체 검색 기능이 갖춰져 있습니다. 일반적으로 사용되는 프로그래밍 언어인 PHP는 검색 기록 기능을 구현하여 사용자에게 더 나은 사용자 경험을 제공할 수도 있습니다. 이 기사에서는 PHP 검색 기록을 구현하는 방법을 소개합니다.
1. 데이터베이스 디자인
가장 먼저 고려해야 할 것은 데이터베이스 디자인입니다. 이 기사에서는 MySQL을 예로 사용합니다.
1.1 테이블 디자인
다음 필드를 포함하여 사용자가 검색한 레코드를 저장하는 테이블을 만들어야 합니다.
- id: 레코드의 고유 식별자, 자동으로 증가됨
- keyword: 검색된 키워드 user
- search_time: user 검색 시간(datetime 형식)
- user_id: 사용자의 고유 식별자, 비어 있을 수 있음
테이블 구조는 다음과 같습니다.
CREATE TABLE search_history
(
id
int(11) NOT NULL AUTO_INCREMENT,
keyword
varchar(255) NOT NULL DEFAULT '',
search_time
datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
user_id
int(11) DEFAULT NULL,
PRIMARY KEY (id
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
1.2 필드 설명
위 표에서 다음 사항에 주의해야 합니다.
- id는 기본 키이며 자동으로 증가하며 레코드를 고유하게 식별하는 데 사용됩니다.
- keyword는 사용자가 검색한 키워드로, 비워 둘 수 없습니다.
- search_time은 검색이 발생한 시간으로 형식은 datetime형으로 기본값은 현재 시간으로 설정되어 있어 쉽게 기록할 수 있습니다.
- user_id는 사용자의 고유 식별자로, 일부 시나리오에서 사용자 행동에 대한 통계 및 분석을 용이하게 할 수 있지만 필수 필드는 아니므로 비어 있을 수 있습니다.
2. 검색 기록 기록
페이지에서는 사용자의 검색 기능을 양식을 통해 구현할 수 있으며, 검색 내용을 기반으로 위에서 언급한 search_history 테이블에 저장됩니다. 구체적인 코드는 다음과 같습니다.
2.1 데이터베이스에 연결
먼저 검색 결과를 데이터베이스에 저장할 수 있도록 데이터베이스에 연결해야 합니다.
$conn = mysqli_connect('localhost', 'root', 'password', 'database_name');
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
mysqli_set_charset($conn,"utf8mb4");
2.2 검색 요청 처리
사용자가 검색창에 입력한 내용을 가져옵니다. 예:
$keyword = $_REQUEST['keyword']
사용자가 아무것도 입력하지 않은 경우 저장할 필요가 없습니다. 데이터베이스에.
if (empty($keyword)) {
return;
}
2.3 검색 결과를 데이터베이스에 저장
그런 다음 검색 결과를 위의 search_history 테이블에 저장하여 사용자의 검색 기록을 기록합니다.
$sql = "INSERT INTO search_history (keyword, user_id) VALUES ('$keyword', 1)";
mysqli_query($conn, $sql);
위 코드에서 검색 키워드와 사용자 고유의 식별자(가칭 1)는 search_history 테이블의 키워드 및 user_id 필드에 저장됩니다.
3. 검색 기록 표시
웹 사이트에 검색 기록을 표시해야 하는 경우 데이터베이스의 search_history 테이블을 쿼리하여 얻을 수 있습니다. 아래에서는 PHP를 통해 이 기능을 구현하는 방법을 소개합니다.
3.1 데이터베이스 쿼리
$conn = mysqli_connect('localhost', 'root', 'password', 'database_name');
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
mysqli_set_charset($conn,"utf8mb4 " );
$sql = "SELECT * FROM search_history ORDER BY search_time DESC LIMIT 10";
$result = mysqli_query($conn, $sql);
위 코드는 먼저 데이터베이스에 연결하고 데이터베이스에 있는 모든 레코드를 쿼리합니다. search_history 테이블. 시간 역순으로 정렬하여 가장 최근 기록 상위 10개를 가져옵니다.
3.2 과거 기록 획득
다음으로 획득한 기록을 반복하여 페이지에 출력합니다.
if (mysqli_num_rows($result) > 0) {
while($row = mysqli_fetch_assoc($result)) { echo $row["keyword"]; }
} else {
echo "暂无搜索历史记录";
}
위 코드는 먼저 쿼리 결과가 비어 있지 않은지 확인하고, 다음의 키를 통해 루프를 돌립니다. 각 레코드에 해당 단어가 페이지에 출력되고, 비어 있으면 프롬프트 메시지가 출력됩니다.
4. 검색 기록 삭제
사용자가 일부 검색 기록을 삭제해야 하는 경우 페이지에 "삭제" 버튼을 추가하여 데이터베이스에서 삭제해야 하는 기록을 지울 수 있습니다.
4.1 데이터베이스에 연결
작업은 위와 동일하므로 여기서는 반복하지 않습니다.
$conn = mysqli_connect('localhost', 'root', 'password', 'database_name');
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
mysqli_set_charset($conn,"utf8mb4");
4.2 삭제 요청 처리
사용자가 삭제해야 하는 레코드의 ID를 가져와 데이터베이스에서 삭제합니다.
$id = $_REQUEST['id'];
if (!empty($id)) {
$sql = "DELETE FROM search_history WHERE id='$id'"; mysqli_query($conn, $sql);
}
id가 비어 있으면 조치가 필요하지 않습니다.
5. 요약
위의 소개를 통해 PHP 검색 기록의 구현은 주로 데이터베이스 설계를 중심으로 이루어져야 한다는 것을 알 수 있습니다. 테이블의 해당 필드를 설정하면 검색 결과와 기록 시간이 데이터베이스에 저장되어 쿼리가 용이해집니다. 그리고 디스플레이. 물론 보안 문제에 주의를 기울이고 SQL 주입 및 기타 공격을 피해야 합니다. 동시에 검색 기록 기능을 보다 유연하게 구현해야 하는 경우 쿠키, 세션 등과 같은 다른 기술을 사용할 수도 있습니다.
위 내용은 PHP에서 검색 기록을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











이 기사는 PHP 및 완화 전략의 OWASP Top 10 취약점에 대해 설명합니다. 주요 문제에는 PHP 응용 프로그램을 모니터링하고 보호하기위한 권장 도구가 포함 된 주입, 인증 파손 및 XSS가 포함됩니다.

PHP 8의 JIT 컴파일은 자주 실행되는 코드를 컴퓨터 코드로 컴파일하여 성능을 향상시켜 계산이 많은 응용 프로그램에 도움이되고 실행 시간을 줄입니다.

이 기사는 PHP의 대칭 및 비대칭 암호화에 대해 논의하여 적합성, 성능 및 보안 차이를 비교합니다. 대칭 암호화는 더 빠르고 벌크 데이터에 적합하지만 안전한 키 교환에는 비대칭이 사용됩니다.

이 기사는 코드 주입과 같은 취약점을 방지하기 위해 PHP 파일 업로드 보안에 대해 설명합니다. 파일 유형 유효성 검증, 보안 저장 및 오류 처리에 중점을 두어 응용 프로그램 보안을 향상시킵니다.

이 기사에서는 PHP에서 강력한 인증 및 승인을 구현하여 무단 액세스를 방지하고 모범 사례를 자세히 설명하고 보안 향상 도구를 권장합니다.

이 기사는 CSRF 토큰, 동일한 사이트 쿠키 및 적절한 세션 관리를 포함하여 PHP의 CSRF 공격을 방지하는 전략에 대해 설명합니다.

기사는 내장 함수 사용, 화이트리스트 접근 방식 및 서버 측 유효성 검사와 같은 기술에 중점을 둔 보안을 향상시키기 위해 PHP 입력 유효성 검증에 대한 모범 사례를 논의합니다.

이 기사는 토큰 버킷 및 누출 된 버킷과 같은 알고리즘을 포함하여 PHP에서 API 요율 제한을 구현하고 Symfony/Rate-Limiter와 같은 라이브러리 사용 전략에 대해 설명합니다. 또한 모니터링, 동적 조정 요율 제한 및 손도 다룹니다.
