지금 효율적인 솔루션은 다음과 같습니다
서버 측에 나는 eJabberd에 대한 MySQL 데이터베이스 백엔드를 설정 않았고 웹 서버에 PHP 인터페이스는 클라이언트 응용 프로그램에 대한 사용자 검색을 제공합니다. 앱이 jabber 사용자 이름 집합과 함께 HTTP POST 요청을 보내 검사합니다. PHP 스크립트는 어떤 사용자가 등록되어 있는지 조회하고 등록 된 사용자의 색인을 포함하는 응답을 반환합니다.
<?php
// HTTP POST sent from client app
// Do authentication here...
// Read all parameters
$users = array();
$user = $_POST["username0"];
for ($i = 1; !empty($user); $i++)
{
// Add user
$users[] = $user;
// Next parameter
$user = $_POST["username".$i];
}
if (empty($users))
{
echo "Success"; // nothing to do
exit;
}
// Create mySQL connection
$db = mysqli_connect("localhost", "user", "password", "database");
if (!$db)
{
$descr = mysqli_connect_error();
echo "Error: ".$descr;
exit;
}
// Prepare query
// SELECT username FROM users WHERE username IN ('+41796548345','+41786547544',...)
$query = "SELECT username FROM users WHERE username IN(";
foreach ($users as $user)
{
$query .= "'".$user."',";
}
$query = rtrim($query, ",");
$query .= ")";
// Execute query and generate result
$result = "Success";
$recset = mysqli_query($db, $query); // [+41786547544,+41763428566,...]
while ($rec = mysqli_fetch_object($recset))
{
$index = find_user($rec->username, $users);
if ($index >= 0)
{
$result .= "\t".$index;
}
}
echo $result;
function find_user($username, $users)
{
for ($idx = 0; $idx < count($users); $idx++)
{
if ($users[$idx] == $username)
{
return $idx; // found at index
}
}
return -1; // not found
}
?>