ساخت وب سرویس PHP با Json

سلام

توی این مطلب قصد دارم یک وب سرویس ساده با PHP بسازیم

فرض کنید میخایم یک فرم لاگین بسازیم که کاربر اطلاعاتی مثل نام کاربری و کلمه عبورش رو وارد میکنه و دکمه ورود رو میزنه

اما اینبار ما باید اطلاعات رو به یک وب سرویس بدیم و درستی لاگین رو از یک وب سرویس دیگه بخوایم

خوب شروع میکنیم به ساخت فرم کلاینت و کد نویسی PHP




<form method="post" action="client.php">
    <input type="text" name="username" placeholder="username">
    
    <input type="password" name="password" placeholder="password">
    
    <input type="submit" name="btn" value="login">
</form>



فرم رو بصورت بالا طراحی میکنیم و بعد از زدن دکمه لاگین کد PHP سمت کلاینت اجرا میشه و اطلاعات رو بسمت سرور ارسال میکنه.
کد PHP کلاینت:

if(isset($_POST['btn'])) {
    $username = $_POST['username'];
    $password = $_POST['password'];
    $array = array('username'=>$username,'password'=>$password);
    $api = "http://YOURWEBSERVICE/server.php";
    $res = callAPI('POST',$api,json_encode($array));
    $response = json_decode($res, true);
    if($response['error'] == 1) {
        echo "login error";
    } else {
        echo "Your Name is : ".$response['name'];
    }
}
function callAPI($method, $url, $data){
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_POST, 1);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_HTTPHEADER, array(
       'Content-Type: application/json',
    ));
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
    $result = curl_exec($curl);
    if(!$result){die("Connection Failure");}
    curl_close($curl);
    return $result;
 }

همه چیز مشخصه فقط باید بدونید که توی $api آدرس وب سرویس رو وارد میکنید.

ساخت وب سرویس  LOGIN با PHP

خوب باید قبل از هر چیزی مشخص کنید و اجازه بدین که چه نوع درخواست هایی به سمت وب سرویس شما ارسال و دریافت بشه

header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: access");
header("Access-Control-Allow-Methods: GET");
header("Access-Control-Allow-Credentials: true");
header('Content-Type: application/json');

و حالا باید اطلاعات رو دریافت کنیم از json و اون رو decode کنیم ، بصورت زیر

$input = json_decode(file_get_contents('php://input'),true);

حالا تمام اطلاعات توی متغیر $input هست و میشه بصورت یک آرایه باهاش برخورد کرد.

$username = $input['username'];
$password = $input['password'];

حالا میتونیم با یک query از دیتابیس (که من اینجا از MySql استفاده میکنم) صحت لاگین را بررسی کنیم و پاسخ بدیم به درخواست وبسرویس.

include_once 'config.php';
if(!$DB = mysqli_connect($dbhost,$dbuser,$dbpass,$dbname)) {
    echo "DBerror";
}
mysqli_query($DB,"SET CHARACTER SET utf8;");
mysqli_query($DB,"SET SESSION collation_connection = 'utf8_persian_ci'");

$sql = mysqli_query($DB,"SELECT `name`,`password` FROM `users` WHERE `username`='$username' LIMIT 1");
if(mysqli_num_rows($sql) == 1) {
$row = mysqli_fetch_assoc($sql);
if($row['password'] == $password) {
$return = array('error'=>0,'name'=>$row['name']);
} else {
$return = array('error'=>1);
}
} else {
$return = array('error'=>1);
}

echo json_encode($return);

و در نهایت پاسخ رو به کاربر برمیگردونیم . اگر پاسخ دارای مقدار error = 1 بود یعنی لاگین صورت نگرفته
و اگر صحیح بود نام کاربر رو دریافت میکنه.

 

خوب تموم شد . اگر میخاید کل مثال وب سرویس json با PHP رو توی یک فایل فشرده دریافت کنید اینجا رو کلیک کنید.

 

یه نکته امنیتی :‌بهتره اینجور وب سرویس رو با یک API KEY همراه کنید . که درخواست های حاوی API KEY اشتباه هستند اصلا پردازش نشن

4 دیدگاه

  1. سلام وقت بخیر یه سوال داشتم این
    $api = “http://YOURWEBSERVICE/server.php”;
    میخوام بدونم دقیقا از کجا اومده ممنون

      1. یعنی اگر سایتی داشته باشیم از طریق هاست خودمون می تونیم انواع وب سروس درست کنیم یا باید به سایتایی وصل بشیم؟؟ که خدمات انجام میدن مثلا رباتایی در تلگرام خدمات میدن ربات دانلود موزیک یا تبدیل فایل و غیره

        1. سلام آریان جان.
          شما با api میتونید به سایت های دیگه سرویس بدین ، کلا با api میتونید تعامل داشته باشن سایت ها یا اسکریپت ها با هم
          در رابطه با ربات تلگرام : شاید اون ربات مد نظرتون آدرس فایل رو میگیره تبدیل میکنه به فرمت دیگه ای و فایل جدید رو به شما ارسال میکنه.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *