timtec
timtec
خواندن ۲ دقیقه·۶ سال پیش

ساخت وب سرویس با 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 تیم تِک

phpوب سرویسjsonjs
شاید از این پست‌ها خوشتان بیاید