- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经开始从事一个项目,但我被困在这里,我需要为我已经存储在数据库中的每个用户添加点。我创建了一个数据库,在其中存储用户的用户名和密码并将其连接到 android。一切正常,但现在就我而言,我想在用户解决某些问题时为用户存储积分,例如在我的应用程序中,但我不知道如何为此编写方法,并且需要 php 中的一些帮助才能做到这一点。
这些是我的 php 文件: Register.php
<?php
$con=mysqli_connect("localhost", "root", "", "geomondo");
$username = $_POST["username"];
$password = $_POST["password"];
//$username = "admin";
//$password = "admin";
$statement = mysqli_prepare($con, "INSERT INTO User (username, password) VALUES (?, ?)");
mysqli_stmt_bind_param($statement, "ss", $username, $password);
mysqli_stmt_execute($statement);
mysqli_stmt_close($statement);
mysqli_close($con);
?>
还有一个: FetchUserData.php
<?php
$con=mysqli_connect("localhost", "root", "", "geomondo");
$username = $_POST["username"];
$password = $_POST["password"];
//$username = "test";
//$password = "test";
$statement = mysqli_prepare($con, "SELECT * FROM User WHERE username = ? AND password = ?");
mysqli_stmt_bind_param($statement, "ss", $username, $password);
mysqli_stmt_execute($statement);
mysqli_stmt_store_result($statement);
mysqli_stmt_bind_result($statement, $userID, $username, $password);
$user = array();
while(mysqli_stmt_fetch($statement)){
$user["username"] = $username;
$user["password"] = $password;
}
echo json_encode($user);
mysqli_close($con);
?>
那么我现在如何在此处也包含每个用户的积分?
这是我用于将 android 连接到 php 和 mysql 的 java 文件:
public class ServerRequests {
ProgressDialog progressDialog;
public static final int CONNECTION_TIMEOUT = 1000 * 15;
public static final String SERVER_ADRESS = "http://192.168.0.17:8081/project/";
public ServerRequests(Context context){
progressDialog = new ProgressDialog(context);
progressDialog.setCancelable(false);
progressDialog.setTitle(R.string.progress_dialog);
progressDialog.setMessage("Please wait...");
}
public void storeUserDataInBackground(User user, GetUserCallback userCallback){
progressDialog.show();
new StoreUserDataAsyncTask(user, userCallback).execute();
}
public void fetchUserDatainBackground(User user, GetUserCallback callBack){
progressDialog.show();
new fetchUserDataAsyncTask(user, callBack).execute();
}
public class StoreUserDataAsyncTask extends AsyncTask<Void, Void, Void>{
User user;
GetUserCallback userCallback;
public StoreUserDataAsyncTask(User user, GetUserCallback userCallback){
this.user = user;
this.userCallback = userCallback;
}
@Override
protected Void doInBackground(Void... params) {
ArrayList<NameValuePair> dataToSend = new ArrayList<>();
dataToSend.add(new BasicNameValuePair("username", user.username));
dataToSend.add(new BasicNameValuePair("password", user.password));
HttpParams httpRequestParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpRequestParams, CONNECTION_TIMEOUT);
HttpConnectionParams.setSoTimeout(httpRequestParams, CONNECTION_TIMEOUT);
HttpClient client = new DefaultHttpClient(httpRequestParams);
HttpPost post = new HttpPost(SERVER_ADRESS + "Register.php");
try {
post.setEntity(new UrlEncodedFormEntity(dataToSend));
client.execute(post);
}catch (Exception e){
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
progressDialog.dismiss();
userCallback.done(null);
super.onPostExecute(aVoid);
}
}
public class fetchUserDataAsyncTask extends AsyncTask<Void, Void, User> {
User user;
GetUserCallback userCallback;
public fetchUserDataAsyncTask(User user, GetUserCallback userCallback) {
this.user = user;
this.userCallback = userCallback;
}
@Override
protected User doInBackground(Void... params) {
ArrayList<NameValuePair> dataToSend = new ArrayList<>();
dataToSend.add(new BasicNameValuePair("username", user.username));
dataToSend.add(new BasicNameValuePair("password", user.password));
HttpParams httpRequestParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpRequestParams, CONNECTION_TIMEOUT);
HttpConnectionParams.setSoTimeout(httpRequestParams, CONNECTION_TIMEOUT);
HttpClient client = new DefaultHttpClient(httpRequestParams);
HttpPost post = new HttpPost(SERVER_ADRESS + "FetchUserData.php");
User returnedUser = null;
try {
post.setEntity(new UrlEncodedFormEntity(dataToSend));
HttpResponse httpResponse = client.execute(post);
HttpEntity entity = httpResponse.getEntity();
String result = EntityUtils.toString(entity);
JSONObject jObject = new JSONObject(result);
if (jObject.length() == 0)
{
returnedUser = null;
}
else
{
returnedUser = new User(user.username, user.password);
}
}catch (Exception e){
e.printStackTrace();
}
return returnedUser;
}
@Override
protected void onPostExecute(User returnedUser) {
progressDialog.dismiss();
userCallback.done(returnedUser);
super.onPostExecute(returnedUser);
}
}
}
这是我第一次将 android 连接到在线数据库,我仍在学习 android 开发,所以我会在这里寻求任何帮助。 :)
最佳答案
您的问题表明您对基本术语有一些疑问。 Study it 。当你创建了一个帐户后,(顺便说一下,数据库最好不要存储 password but its hash )你可能会记录完全相同的内容:发送用户名和密码。如果它存在于数据库中,则创建 session in php 。
//here we are looking for a user in the database. I do not know how to work with mysqli
session_start();
$_SESSION['name'] = $login;
( better use id to store the user's session )
现在您将能够确定用户的请求是否到达(通过 session )
if ($_SESSION['name'] != '')
并将数据添加到表中。
id | login | score
这是最简单的解决方案。祝你好运。
关于php - 如何为我的应用程序的用户添加积分并将其连接到 Android?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32915920/
我正在开发一个 voip 调用应用程序。我需要做的是在接到来电时将 Activity 带到前台。我在应用程序中使用 Twilio,并在收到推送消息时开始调用。 问题是我试图在接到任何电话时显示 Act
我是一名优秀的程序员,十分优秀!