현재 위치: > 최신 기사 목록> PHP는 가까운 사용자를 찾기위한 완전한 솔루션을 구현합니다

PHP는 가까운 사용자를 찾기위한 완전한 솔루션을 구현합니다

gitbox 2025-08-07

소개

현대적인 소셜 애플리케이션에서는 근처의 사용자를 찾는 것이 일반적이고 중요한 기능이되었습니다. 데이트, 관심 그룹 또는 지역 서비스 권장 사항에 관계 없이이 기능은 사용자 경험을 향상시킬 수 있습니다. 이 기사는 프론트 엔드 기술과 결합 된 PHP를 사용하여 인근 사용자를 찾는 완벽한 프로세스를 달성하는 방법을 소개합니다.

지리적 위치 정보를 얻으십시오

근처 사용자를 찾으려면 먼저 방문자의 지리적 위치를 얻어야합니다. HTML5의 지리적 위치 API는 브라우저에서 위도 및 경도 정보를 얻을 수있는 방법을 제공하며, 대부분의 최신 브라우저에서 이미 지원됩니다.

브라우저가 포지셔닝을 지원하는지 여부를 결정하십시오

포지셔닝 기능을 호출하기 전에 브라우저가 API를 지원하는지 여부를 결정하는 것이 좋습니다.

 
if (navigator.geolocation) {
    // 지리적 위치를 지원합니다API
} else {
    // 不지리적 위치를 지원합니다API
}

지원을 확인한 후 API에 전화하여 사용자의 위치를 얻을 수 있습니다.

사용자 위도 및 경도를 얻고 처리합니다

위도 및 경도 정보는 다음 코드를 통해 얻을 수 있습니다.

 
navigator.geolocation.getCurrentPosition(function(position) {
    var latitude = position.coords.latitude;   // 위도
    var longitude = position.coords.longitude; // 경도

    // 发送经위도到后端处理
    // sendLocationToServer(latitude, longitude);
});

사용자 위치 정보를 저장하십시오

사용자의 위치를 얻은 후에는 후속 쿼리를 위해 데이터베이스에 저장해야합니다. 관리에 MySQL 데이터베이스를 사용하는 것이 좋습니다.

스토리지 위치에 대한 테이블 구조를 만듭니다

먼저 사용자 라는 테이블을 만듭니다.

 
CREATE DATABASE nearby;
USE nearby;
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    latitude DOUBLE,
    longitude DOUBLE
);

PHP는 위치 정보를 데이터베이스에 씁니다

다음은 사용자 위치 정보를 데이터베이스에 저장하는 PHP 코드 예제입니다.

 
<?php
// 데이터베이스에 연결하십시오
$conn = new PDO("mysql:host=localhost;dbname=nearby", "root", "");

// 获取经위도
$latitude = $_POST['latitude'];
$longitude = $_POST['longitude'];

// 데이터베이스를 삽입하십시오
$sql = "INSERT INTO users (latitude, longitude) VALUES (?, ?)";
$stmt = $conn->prepare($sql);
$stmt->execute([$latitude, $longitude]);

echo "위치 정보가 성공적으로 저장됩니다!";
?>

가까운 사용자를 찾으십시오

여러 사용자의 위치가 저장되면 거리를 계산하여 현재 사용자와 가까운 다른 사람을 찾을 수 있습니다. 다음 두 가지 거리 계산 방법이 도입됩니다.

유클리드 거리 알고리즘

유클리드 거리는 단순화 된 모델에 적합하며 다음과 같이 계산됩니다.

 
distance = sqrt((x2 - x1)^2 + (y2 - y1)^2)

맵 비율이 작은 장면에 적합합니다.

Haversine Formula는 구형 거리를 계산합니다

Haversine 공식은 지구 표면의 좌표의 거리 계산에 더 적합합니다.

 
distance = 2 * r * asin(sqrt(
    sin((lat2 - lat1) / 2)^2 +
    cos(lat1) * cos(lat2) * sin((lng2 - lng1) / 2)^2
))

여기서 r 은 지구의 반경, 보통 6371km입니다.

요약

위의 단계를 통해 근처 사람들을 찾는 PHP 기반 기능을 구현할 수 있습니다. 브라우저 측 포지셔닝, 서버 측 스토리지, 알고리즘 기반 필터링 사용자에 이르기까지 전체 프로세스는 소셜 플랫폼, 이벤트 권장 사항, 위치 서비스 등과 같은 다양한 시나리오에 적합합니다. 실제 프로젝트에서 캐싱 및 지구 인덱스는 성능의 최적화와 결합하여 사용자 경험을 향상시킬 수 있습니다.