在 Flutter 注册 php & mysql 中检查注册用户



我有颤振应用程序,通过php和mysql进行用户注册检查。我正在用 php 搜索,例如:

$sqlUser = "SELECT * FROM users WHERE username = '".$username."'";
$rs = mysqli_query($con ,$sqlUser);
$numUsers = mysqli_num_rows($rs);
if($numUsers > 0) {
echo "User already exists<br/>";
}

这是我用于创建用户的PHP脚本:

<?php
require_once 'connectdb.php';
$user_id= $_POST['id'];
$username = $_POST['email'];
$password = $_POST['password'];
$nama = $_POST['name'];
$nik = $_POST['nik'];
$lahir = $_POST['born'];
$tentang = $_POST['about'];
$pengalaman = $_POST['exp'];
$linkedin = $_POST['linkedin'];

$query="INSERT INTO user_info(id, email, password, name, nik, born, about, exp,linkedin)
VALUES ('$user_id','$username','$password','$name','$nik', '$born', '$about', '$exp', '$linkedin')";
$exeQuery = mysqli_query($con, $query) ;
if($exeQuery){
echo (json_encode(array('code' =>1, 'message' => 'Ajouter avec succée')));
}else {echo(json_encode(array('code' =>2, 'message' => 'Non Terminer')));
}

?>

我的颤振注册 :

void _register() async {
setState(() {
_isLoading = true;
});
var url = "url/newuser.php";
await http.post(url, body: {
"email": _emailController.text,
"password": _passwordController.text,
"name": _nameController.text,
"nik": _nikController.text,
});
setState(() {
_isLoading = false;
});
onCreatedAccount();
//print(_adresseController.text);
}

但是,如何将其传递给我的 Flutter 应用程序,以便我的应用程序知道它已注册电子邮件/用户?

我建议你使用 Dio 库 Flutter Dio Library 并使用响应从服务器获取数据。

Dio dio = new Dio();
FormData formData = new FormData.from({
"email": _emailController.text,
"password": _passwordController.text,
"name": _nameController.text,
"nik": _nikController.text,
});
dio
.post("http://yoururl.com/register.php",
data: formData,
options: Options(
method: 'POST',
responseType: ResponseType.PLAIN // or ResponseType.JSON
))
.timeout(Duration(seconds: 15))
.then((response) {
Map<String, dynamic> data = jsonDecode(response.data);
if (data['code'] == '1') {
//success code
}else{
//error code
}

在服务器中:

$response = array();
//do sql test and storing
if(success){
$response['code'] = '1';
$response['message'] = 'success message.';
}else{
$response['code'] = '2';
$response['message'] = 'error message.';
}
echo json_encode($response);

如果您的数据库中有一些具有自动增量的 id,则可以使用一些循环来获取用户名字段的所有值并将结果保存在一些数组数据中,之后您可以使用用户名控制器验证该数据数组的结果。

var data = [];
for (int i = 0; i < int.parse(snapshot.data[snapshot.data.length - 1]['id']); i++) {
data.addAll({snapshot.data[i]['username']});
}
if (data.contains(contUsername.text) == true) {
showToastAlert("Username is already taken!");
} else {
addUser();
}

但是,如果您想删除某个帐户,则需要使用重置值自动增量来改进代码,或者您可以将已删除的用户名值更改为 null 以替换任何新用户值,或者以其他方式制作一些可用于验证其帐户仍然处于活动状态(他们可以登录(或不激活(他们无法登录(这将帮助用户恢复他们的帐户。

或者您只能使用数据的长度来更简单地解决您的情况,如下所示:

for (int i = 0; i < snapshot.data.length; i++);

希望这会有所帮助。

最新更新