ساخت وب سرویس PHP با Json
در این مطلب قصد داریم در مورد ایجاد وب سرویس PHP با Json توضیح دهیم.
فرض کنید میخایم یک فرم لاگین بسازیم که کاربر اطلاعاتی مثل نام کاربری و کلمه عبورش رو وارد میکنه و دکمه ورود رو میزنه
اما اینبار ما باید اطلاعات رو به یک وب سرویس بدیم و درستی لاگین رو از یک وب سرویس دیگه بخوایم
خوب شروع میکنیم به ساخت فرم کلاینت و کد نویسی 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 اشتباه هستند اصلا پردازش نشن