私は2つのPHPスクリプトを持っています。最初の1つはアンドロイドアプリを通じてユーザーに登録を処理します。ここにあります:登録ユーザーの情報を取得する
登録が成功すると、ユーザーはアンドロイド携帯電話で彼のIDを示すトーストメッセージを受け取ります。私はこれを後で、登録の成功のようなものを言うメッセージに変更します。次に、ユーザー情報を取得する別のPHPスクリプトがあります。
<?php
include("init.php");
$get_posts = "SELECT * FROM user_info where id='" . $_SESSION['id'] . "' LIMIT 1";
error_reporting(E_ALL);
ini_set("display_errors", 1);
$run_posts = mysqli_query($con, $get_posts);
$posts_array = array();
while ($posts_row = mysqli_fetch_array($run_posts)) {
$row_array['id'] = $posts_row['id'];
$row_array['user_name'] = $posts_row['user_name'];
array_push($posts_array, $row_array);
}
$string = json_encode($posts_array, JSON_UNESCAPED_UNICODE);
echo $string;
?>
ただし、このスクリプトは空の配列を返します。すでに1人のユーザーが登録されており、彼の詳細はuser_infoテーブルに表示されています。
[]
どうしてですか?
を編集します。
私のAndroidの登録コードです。
public class RegisterFragment extends Fragment {
private SessionManager session;
EditText etEmail, etUsername, etPassword,etConfirmPassword;
String email, userName, userPass,confirmPassword;
Button registerButton;
SqliteHandler sql;
public RegisterFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View v = inflater.inflate(R.layout.fragment_register, container, false);
Toolbar myToolbar = (Toolbar) v.findViewById(R.id.toolbar);
((AppCompatActivity)getActivity()).setSupportActionBar(myToolbar);
setHasOptionsMenu(true);
etEmail = (EditText)v.findViewById(R.id.name);
etUsername = (EditText)v.findViewById(R.id.user_name);
etPassword = (EditText)v.findViewById(R.id.user_pass);
etConfirmPassword = (EditText)v.findViewById(R.id.confirm_pass);
registerButton = (Button)v.findViewById(R.id.registerBtn);
session = new SessionManager(getActivity());
if (session.isLoggedIn()) {
// User ites already logged in. Take him to main activity
Intent intent = new Intent(getActivity(), Welcome.class);
startActivity(intent);
}
registerButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
email = etEmail.getText().toString();
userName = etUsername.getText().toString();
userPass = etPassword.getText().toString();
confirmPassword = etConfirmPassword.getText().toString();
if(userPass.equals(confirmPassword)){
registerUser(email, userName, userPass, confirmPassword);
}else{
Toast.makeText(getActivity(),"Passwords don't match",Toast.LENGTH_SHORT).show();
}
}
});
return v;
}
private void registerUser(final String email, final String userName,
final String password,final String confirmPassword) {
String tag_string_req = "req_register";
StringRequest strReq = new StringRequest(Request.Method.POST,
Config.URL_REGISTER, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d("Response", "Register Response: " + response.toString());
try {
JSONObject jsonObject = new JSONObject(response);
if (jsonObject.getString("result").equals("success")) {
//Toast.makeText(getActivity(),jsonObject.getString("message"), Toast.LENGTH_LONG).show();
String id = jsonObject.getString("message");
Log.d("Theo", id);
//$don = array('result' =>"success","message"=>mysqli_insert_id($con));
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getActivity());
SharedPreferences.Editor editor = settings.edit();
editor.putString("id", String.valueOf(id));
editor.putString("email", email);
editor.putString("user_name", userName);
editor.putString("user_pass", password);
editor.putString("confirm_pass", confirmPassword);
editor.commit();
}
else if (jsonObject.getString("result").equals("fail")) {
Toast.makeText(getActivity(),jsonObject.getString("message"), Toast.LENGTH_LONG).show();
}
}catch(JSONException e){
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("Error", "Registration Error: " + error.getMessage());
Toast.makeText(getActivity(),
error.getMessage(), Toast.LENGTH_LONG).show();
}
}) {
@Override
protected Map<String, String> getParams() {
// Posting params to register url
Map<String, String> params = new HashMap<String, String>();
params.put("id", "");
params.put("email", email);
params.put("user_name", userName);
params.put("user_pass", password);
params.put("confirm_pass", confirmPassword);
return params;
}
};
// Adding request to request queue
AppController.getInstance().addToRequestQueue(strReq, tag_string_req);
}
}
このような要素を押さずにwhileの中に値を格納することができます。$ posts_array ['id'] = $ posts_row ['id'];等々。ループの後に$ posts_arrayを出力した場合、結果は –
2番目のスクリプトでは 'session_start();'を忘れてしまいます!! – Saty
私はsession_start()を追加しました。しかし、私はまだ何も得られない! – Theo