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