検索
ホームページバックエンド開発PHPの問題PHPで友達追加機能を実装する方法

近年、ソーシャルネットワークは人々の日常生活に欠かせないものとなっています。同時に、ソーシャル ネットワークの重要な部分である友人関係も、その実装においてますます注目を集めています。この記事ではPHPを使って友達追加機能を実装する方法を紹介します。

1. データベース設計

友達追加機能を実装する過程で、友達関係テーブルを設計する必要があります。テーブルには少なくとも次のフィールドが含まれている必要があります:

  1. friend_id: 友人関係テーブルの一意の ID
  2. user_id1: 友人関係当事者 1
  3. # のユーザー ID ##user_id2: 友人関係 パーティ 2 のユーザー ID
  4. status: 友人関係のステータス。オプションの値には、「1」 (すでに友人)、「0」 (保留中)、「-1」 (拒否されました)。
2. 友達を追加する

PHP で友達を追加するときは、次の手順を実行する必要があります:

    ユーザーはデータベース内に存在します;
  1. 追加する友人がすでにユーザーの友人であるかどうかを確認します;
  2. 2 人のユーザー間に友人関係がない場合は、次のコマンドを使用して新しい友人関係レコードを追加します。 " 0" (保留中) のステータス;
  3. 2 人のユーザーがすでに友達である場合、操作は実行されません。
以下は、友達を追加する機能を実装する簡単な PHP コードの例です:

<?php // 连接数据库
$con = mysqli_connect("localhost","root","mypassword","mydatabase");

// 获取用户输入
$user_id1 = $_POST[&#39;user_id1&#39;];
$user_id2 = $_POST[&#39;user_id2&#39;];

// 验证用户输入是否合法
if(!is_numeric($user_id1) || !is_numeric($user_id2)) {
    echo "Error: 用户ID必须为数字";
    exit();
}

// 检查要添加的好友是否已经是用户的好友
$sql = "SELECT * FROM friend_relation WHERE ((user_id1 = $user_id1 AND user_id2 = $user_id2) OR (user_id2 = $user_id1 AND user_id1 = $user_id2)) AND status = 1";
$result = mysqli_query($con,$sql);

if(mysqli_num_rows($result) > 0) {
    echo "该用户已经是您的好友!";
    exit();
}

// 如果两个用户之间没有好友关系,则添加一条新的好友关系记录,其中状态为“0”(待处理)
$sql = "INSERT INTO friend_relation (user_id1,user_id2,status) VALUES ($user_id1,$user_id2,0)";
if(mysqli_query($con,$sql)) {
    echo "添加好友请求已经发送!";
} else {
    echo "Error: " . mysqli_error($con);
}

mysqli_close($con);
?>
上記のコードでは、mysqli 拡張機能を使用して MySQL データベースに接続し、 POST メソッドは 2 人のユーザーの ID を取得し、入力検証と友人関係のチェックを実行します。追加する友人が既にユーザの友人である場合には、プロンプトメッセージが出力され、2人のユーザ間に友人関係がない場合には、データベースに新たな友人関係レコードが追加され、成功のプロンプトメッセージが出力される。

3. フレンドリクエスト処理

フレンド追加機能では、フレンドリクエストの処理も実装する必要があります。ユーザーが別のユーザーに友達リクエストを送信する場合、リクエストされたユーザーはリクエストの承認または拒否を含む対応する処理を実行する必要があります。

データベース設計では、友達関係ステータス (ステータス) を、友達リクエストが処理されていないことを示す「0」に設定し、友達がすでに友達であることを示す「1」に設定します。友人がリクエストが拒否されたことを示すには、「-1」に設定します。したがって、フレンドリクエスト処理関数には、対応するステータス更新コードを追加する必要があります。

以下は、友達リクエストを処理するための簡単な PHP コードの例です:

<?php // 连接数据库
$con = mysqli_connect("localhost","root","mypassword","mydatabase");

// 获取用户输入
$user_id1 = $_POST[&#39;user_id1&#39;];
$user_id2 = $_POST[&#39;user_id2&#39;];
$action = $_POST[&#39;action&#39;]; // 操作类型,可选值包括“accept”和“reject”

// 验证用户输入是否合法
if(!is_numeric($user_id1) || !is_numeric($user_id2)) {
    echo "Error: 用户ID必须为数字";
    exit();
}

// 更新好友关系状态
if($action == "accept") {
    $sql = "UPDATE friend_relation SET status = 1 WHERE user_id1 = $user_id1 AND user_id2 = $user_id2";
    if(mysqli_query($con,$sql)) {
        echo "您已经同意该好友请求!";
    } else {
        echo "Error: " . mysqli_error($con);
    }
} else if($action == "reject") {
    $sql = "UPDATE friend_relation SET status = -1 WHERE user_id1 = $user_id1 AND user_id2 = $user_id2";
    if(mysqli_query($con,$sql)) {
        echo "您已经拒绝了该好友请求!";
    } else {
        echo "Error: " . mysqli_error($con);
    }
} else {
    echo "Error: 请输入正确的操作类型!";
}

mysqli_close($con);
?>
上記のコードでは、POST メソッドを通じて 2 人のユーザーの ID と操作タイプを取得しました。「承諾」とは、 「拒否」は友達リクエストを拒否することを意味します。次に、UPDATE ステートメントを通じて友人関係のステータスを更新し、対応するプロンプト情報を出力しました。

上記の PHP コード例を通じて、友達の追加と友達リクエストの処理の機能を簡単に実装できます。実際の開発では、特定のニーズに応じて適切に変更し、セキュリティとパフォーマンスの面で最適化できます。

以上がPHPで友達追加機能を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
酸とベースデータベース:違いとそれぞれを使用するタイミング。酸とベースデータベース:違いとそれぞれを使用するタイミング。Mar 26, 2025 pm 04:19 PM

この記事では、酸とベースのデータベースモデルを比較し、その特性と適切なユースケースを詳述しています。酸は、財務およびeコマースアプリケーションに適したデータの整合性と一貫性を優先し、ベースは可用性に焦点を当て、

PHPセキュアファイルアップロード:ファイル関連の脆弱性の防止。PHPセキュアファイルアップロード:ファイル関連の脆弱性の防止。Mar 26, 2025 pm 04:18 PM

この記事では、コードインジェクションのような脆弱性を防ぐために、PHPファイルのアップロードを確保することについて説明します。ファイルタイプの検証、セキュアストレージ、およびアプリケーションセキュリティを強化するエラー処理に焦点を当てています。

PHP入力検証:ベストプラクティス。PHP入力検証:ベストプラクティス。Mar 26, 2025 pm 04:17 PM

記事では、組み込み関数、ホワイトリストアプローチ、サーバー側の検証などの手法に焦点を当てたセキュリティを強化するためのPHP入力検証のベストプラクティスについて説明します。

PHP APIレート制限:実装戦略。PHP APIレート制限:実装戦略。Mar 26, 2025 pm 04:16 PM

この記事では、Token BucketやLeaky BucketなどのアルゴリズムやSymfony/Rate-Limiterなどのライブラリを使用するなど、PHPでAPIレート制限を実装するための戦略について説明します。また、監視、動的に調整されたレートの制限、および手をカバーします

PHPパスワードハッシュ:password_hashおよびpassword_verify。PHPパスワードハッシュ:password_hashおよびpassword_verify。Mar 26, 2025 pm 04:15 PM

この記事では、パスワードを保護するためにPHPでpassword_hashとpassword_verifyを使用することの利点について説明します。主な議論は、これらの関数が自動塩の生成、強力なハッシュアルゴリズム、およびSecurを通じてパスワード保護を強化するということです

OWASPトップ10 PHP:共通の脆弱性を説明し、軽減します。OWASPトップ10 PHP:共通の脆弱性を説明し、軽減します。Mar 26, 2025 pm 04:13 PM

この記事では、PHPおよび緩和戦略におけるOWASPトップ10の脆弱性について説明します。重要な問題には、PHPアプリケーションを監視および保護するための推奨ツールを備えたインジェクション、認証の壊れ、XSSが含まれます。

PHP XSS予防:XSSから保護する方法。PHP XSS予防:XSSから保護する方法。Mar 26, 2025 pm 04:12 PM

この記事では、PHPでのXSS攻撃を防ぐための戦略について説明し、入力の消毒、出力エンコード、セキュリティを向上させるライブラリとフレームワークの使用に焦点を当てています。

PHPインターフェイスvs抽象クラス:それぞれを使用する時期。PHPインターフェイスvs抽象クラス:それぞれを使用する時期。Mar 26, 2025 pm 04:11 PM

この記事では、PHPでのインターフェイスと抽象クラスの使用について説明し、それぞれをいつ使用するかに焦点を当てています。インターフェイスは、無関係なクラスや複数の継承に適した、実装なしで契約を定義します。抽象クラスは共通の機能を提供します

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター