برای ارسال اطلاعات از برنامه فلاتر به سرور با استفاده از PHP میتوانید از روشهای مختلفی استفاده کنید، اما روش رایج و پراستفاده، استفاده از ارسال درخواست HTTP POST با فرمت JSON به PHP است. در ادامه، یک نمونه ساده از کد برای ارسال اطلاعات به سرور با استفاده از فلاتر و PHP را معرفی میکنیم:
[restrict]
- کد PHP برای پردازش اطلاعات:
- ابتدا، باید یک فایل PHP برای پردازش اطلاعات ایجاد کنید. در این فایل، اطلاعات ارسال شده از برنامه فلاتر دریافت شده و پردازش میشود. به عنوان مثال، فایل PHP زیر دادههای درخواست را دریافت کرده و به عنوان پاسخ، یک آرایه JSON حاوی وضعیت و پیام ارسال میکند:
<?php
header('Content-Type: application/json');
$response = array();
if (isset($_POST['name']) && isset($_POST['age'])) {
$name = $_POST['name'];
$age = $_POST['age'];
// Do something with the received data
$response['status'] = 'success';
$response['message'] = 'Data received successfully';
} else {
$response['status'] = 'error';
$response['message'] = 'Data not received';
}
echo json_encode($response);
?>
- کد برنامه فلاتر برای ارسال اطلاعات:
- در برنامه فلاتر، باید از کلاس http برای ارسال درخواست HTTP POST با فرمت JSON به PHP استفاده کنید. در این مثال، یک شی از کلاس http ایجاد شده و درخواست HTTP POST با فرمت JSON ارسال میشود:
Future<void> sendData(String name, int age) async {
var url = 'http://example.com/process-data.php';
var response = await http.post(
url,
headers: {'Content-Type': 'application/json'},
body: jsonEncode({'name': name, 'age': age}),
);
if (response.statusCode == 200) {
var data = jsonDecode(response.body);
if (data['status'] == 'success') {
print('Data sent successfully');
} else {
print('Error sending data');
}
} else {
print('Error sending data');
}
}
[/restrict]
در مثال قبل با ایجاد یک شی از کلاس http، درخواست HTTP POST با فرمت JSON به آدرس فایل PHP برای پردازش اطلاعات ارسال میشود. سپس، پاسخ دریافت شده از سرور بررسی میشود و وضعیت ارسال اطلاعات بر اساس آن چاپ میشود.
با استفاده از این روش، میتوانید اطلاعات را از برنامه فلاتر به سرور ارسال کنید و پس از پردازش، به صورت پاسخ JSON به برنامه فلاتر ارسال کنید.
- استفاده از پارامترهای اختیاری در درخواست:
- شما میتوانید از پارامترهای اختیاری در درخواست HTTP POST با فرمت JSON استفاده کنید. به عنوان مثال، شما میتوانید یک شماره شناسه برای اطلاعات ارسالی اضافه کنید و در سمت سرور از آن استفاده کنید. برای این کار، میتوانید مانند زیر پارامتر id را به درخواست اضافه کنید:
Future<void> sendData(int id, String name, int age) async {
var url = 'http://example.com/process-data.php';
var response = await http.post(
url,
headers: {'Content-Type': 'application/json'},
body: jsonEncode({'id': id, 'name': name, 'age': age}),
);
if (response.statusCode == 200) {
var data = jsonDecode(response.body);
if (data['status'] == 'success') {
print('Data sent successfully');
} else {
print('Error sending data');
}
} else {
print('Error sending data');
}
}
- پردازش پاسخ دریافتی:
- پس از ارسال درخواست HTTP POST با فرمت JSON به PHP، شما میتوانید پاسخ دریافتی را پردازش کنید. در مثال قبل، پاسخ دریافتی یک آرایه JSON حاوی وضعیت و پیام است. شما میتوانید از کتابخانه dart:convert برای پردازش پاسخ استفاده کنید. به عنوان مثال، میتوانید کد زیر را برای پردازش پاسخ استفاده کنید:
import 'dart:convert';
Future<void> sendData(int id, String name, int age) async {
// ...
if (response.statusCode == 200) {
var data = jsonDecode(response.body);
if (data['status'] == 'success') {
print('Data sent successfully');
} else {
print('Error sending data: ${data['message']}');
}
} else {
print('Error sending data');
}
}
در مثال بالا پاسخ JSON دریافتی پس از ارسال درخواست با استفاده از کتابخانه dart:convert پردازش شده است. در صورتی که وضعیت پاسخ success باشد، پیام "Data sent successfully" چاپ میشود. در صورتی که وضعیت پاسخ error باشد، پیام خطا به همراه پیام مورد نظر چاپ میشود.
با استفاده از این روش، شما میتوانید به راحتی اطلاعات ارسالی از برنامه فلاتر را به سرور ارسال کنید و پس از پردازش در سمت سرور، به صورت پاسخ JSON به برنامه فلاتر ارسال کنید. در این روش، میتوانید از پارامترهای اختیاری هم استفاده کنید تا اطلاعات را به صورت دقیقتر و مفیدتری دریافت کنید.
قصد داریم همه کارهای بالا رو از طریق دیتابیس mysql انجام بدیم:
برای ایجاد فیلدهایی در MySQL، ابتدا باید یک جدول ایجاد کنید. سپس، با استفاده از دستورات SQL، میتوانید فیلدهای مورد نظر را در جدول ایجاد کنید. به عنوان مثال، فرض کنید میخواهید یک جدول به نام "users" با فیلدهای "id"، "name"، "email" و "password" را ایجاد کنید، میتوانید به صورت زیر عمل کنید:
CREATE TABLE users (
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
password VARCHAR(255) NOT NULL
);
در مثال بالا دستور CREATE TABLE برای ایجاد جدول "users" استفاده شده است. فیلدهای "id"، "name"، "email" و "password" با استفاده از دستورات SQL ایجاد شدهاند. نوع دادهای فیلدها به ترتیب INT، VARCHAR، VARCHAR و VARCHAR تعیین شده است. برای فیلد "id"، خصوصیت AUTO_INCREMENT برای تعیین شماره خودکار افزایشی فیلدها استفاده شده است. همچنین، برای فیلد "id"، خصوصیت PRIMARY KEY برای تعیین کلید اصلی جدول استفاده شده است.
با استفاده از این دستورات SQL، شما میتوانید فیلدهای مورد نظر را در جدولهای دیگر نیز ایجاد کنید و از آنها برای ذخیره و بازیابی اطلاعات استفاده کنید.
با استفاده از فیلدهایی که در جدول "users" ایجاد کردیم، میتوانیم اطلاعات کاربران را در دیتابیس MySQL ذخیره کنیم. برای این کار، ابتدا باید یک فایل PHP برای ارتباط با دیتابیس MySQL ایجاد کنیم. سپس، در برنامه فلاتر، از کلاس http برای ارسال درخواست HTTP POST با فرمت JSON به فایل PHP استفاده خواهیم کرد. در ادامه، کدهای PHP و فلاتر برای ذخیره اطلاعات کاربر در دیتابیس MySQL را معرفی میکنیم:
- کد PHP برای ذخیره اطلاعات کاربر در دیتابیس MySQL:
- ابتدا، باید اطلاعات اتصال به دیتابیس MySQL را در فایل PHP تنظیم کنید. سپس، با استفاده از تابع mysqli_connect، به دیتابیس متصل شوید. سپس، با استفاده از تابع mysqli_query، دستور SQL برای درج اطلاعات کاربر در دیتابیس اجرا میشود. در این مثال، فیلدهای "name"، "email" و "password" را در جدول "users" درج میکنیم:
<?php
// تنظیمات اتصال به دیتابیس MySQL
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database";
// اتصال به دیتابیس MySQL
$conn = mysqli_connect($servername, $username, $password, $dbname);
// بررسی اتصال
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
// درج اطلاعات کاربر در دیتابیس
$name = $_POST['name'];
$email = $_POST['email'];
$password = $_POST['password'];
$sql = "INSERT INTO users (name, email, password) VALUES ('$name', '$email', '$password')";
if (mysqli_query($conn, $sql)) {
echo json_encode(array("status" => "success", "message" => "Data saved successfully"));
} else {
echo json_encode(array("status" => "error", "message" => "Error saving data"));
}
mysqli_close($conn);
?>
- کد فلاتر برای ارسال اطلاعات کاربر به فایل PHP:
- با استفاده از کلاس http در فلاتر، میتوانید درخواست HTTP POST با فرمت JSON به فایل PHP برای ذخیره اطلاعات کاربر در دیتابیس MySQL ارسال کنید. در این مثال، اطلاعات کاربر را به صورت یک شی JSON در بدنه درخواست ارسال میکنیم:
import 'dart:convert';
import 'package:http/http.dart' as http;
Future<void> saveUserData(String name, String email, String password) async {
var url = 'http://example.com/save-user-data.php';
var response = await http.post(
url,
headers: {'Content-Type': 'application/json'},
body: jsonEncode({'name': name, 'email': email, 'password': password}),
);
if (response.statusCode == 200) {
var data = jsonDecode(response.body);
if (data['status'] == 'success') {
print('Data saved successfully');
} else {
print('Error saving data: ${data['message']}');
}
} else {
print('Error saving data');
}
}
در مثال بالا از کلاس http در فلاتر برای ارسال درخواست HTTP POST با فرمت JSON به فایل PHP استفاده شده است. برای این کار، نام فایل PHP در متغیر url ذخیره شده است. همچنین، اطلاعات کاربر به صورت یک شی JSON در بدنه درخواست ارسال شدهاند. پس از دریافت پاسخ از فایل PHP، پاسخ JSON دریافتی پردازش شده و وضعیت ذخیره سازی اطلاعات کاربر چاپ میشود.
- بررسی اعتبار اطلاعات ورودی:
- قبل از درج اطلاعات کاربر در دیتابیس MySQL، باید اعتبار اطلاعات ورودی بررسی شود. در مثال زیر، اعتبار ایمیل و پسورد کاربر بررسی میشود. اگر ایمیل وارد شده معتبر نبود، پیام خطای مناسب برگردانده میشود. همچنین، پسورد کاربر با استفاده از تابع password_hash رمزنگاری شده و در دیتابیس ذخیره میشود:
<?php
// ...
// بررسی اعتبار اطلاعات ورودی
$email = $_POST['email'];
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo json_encode(array("status" => "error", "message" => "Invalid email address"));
exit;
}
$password = $_POST['password'];
$hashed_password = password_hash($password, PASSWORD_DEFAULT);
// درج اطلاعات کاربر در دیتابیس
$name = $_POST['name'];
$sql = "INSERT INTO users (name, email, password) VALUES ('$name', '$email', '$hashed_password')";
if (mysqli_query($conn, $sql)) {
echo json_encode(array("status" => "success", "message" => "Data saved successfully"));
} else {
echo json_encode(array("status" => "error", "message" => "Error saving data"));
}
mysqli_close($conn);
?>
- بررسی تکراری بودن اطلاعات:
- برای جلوگیری از اضافه شدن اطلاعات تکراری به دیتابیس MySQL، باید قبل از درج اطلاعات کاربر، تکراری بودن ایمیل کاربر بررسی شود. در مثال زیر، با استفاده از تابع mysqli_num_rows، تعداد ردیفهایی که ایمیل وارد شده تکراری است را بررسی میکنیم. اگر تعداد ردیفها بیشتر از صفر بود، پیام خطای مناسب برگردانده میشود:
<?php
// ...
// بررسی تکراری بودن اطلاعات
$email = $_POST['email'];
$sql = "SELECT * FROM users WHERE email='$email'";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
echo json_encode(array("status" => "error", "message" => "Email already exists"));
exit;
}
// بررسی اعتبار اطلاعات ورودی
// ...
// درج اطلاعات کاربر در دیتابیس
// ...
mysqli_close($conn);
?>
- کد فلاتر برای دریافت پاسخ JSON:
- پس از ارسال درخواست HTTP POST به فایل PHP، باید پاسخ JSON دریافت شده را پردازش کرده و وضعیت ذخیره سازی اطلاعات کاربر را نمایش دهید. در مثال زیر، پاسخ JSON دریافتی از فایل PHP پردازش شده و وضعیت ذخیره سازی اطلاعات کاربر چاپ میشود:
import 'dart:convert';
import 'package:http/http.dart' as http;
Future<void> saveUserData(String name, String email, String password) async {
var url = 'http://example.com/save-user-data.php';
var response = await http.post(
url,
headers: {'Content-Type': 'application/json'},
body: jsonEncode({'name': name, 'email': email, 'password': password}),
);
if (response.statusCode == 200) {
var data = jsonDecode(response.body);
if (data['status'] == 'success') {
print('Data saved successfully');
} else {
print('Error saving data: ${data['message']}');
}
} else {
print('Error saving data');
}
}
در مثال بالا پس از دریافت پاسخ از فایل PHP، پاسخ JSON دریافتی پردازش شده و وضعیت ذخیره سازی اطلاعات کاربر چاپ میشود. در صورتی که وضعیت ذخیره سازی موفقیت آمیز نبود، پیام خطا نیز چاپ میشود.