ساخت وب سرویس 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 اشتباه هستند اصلا پردازش نشن

2 دیدگاه

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

پاسخی بگذارید

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