ساخت وب سرویس با 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 بود یعنی لاگین صورت نگرفتهو اگر صحیح بود نام کاربر رو دریافت میکنه.یه نکته امنیتی :‌بهتره اینجور وب سرویس رو با یک API KEY همراه کنید . که درخواست های حاوی API KEY اشتباه هستند اصلا پردازش نشن@timtec_co تیم تِک