실행화면


  1. 메인 화면입니다. 여기서 Member Registration을 누릅니다.



  1. 아이디값에 abcd를 입력후 CHECK ID를 누릅니다.



  1. 해당 아이디를 사용할수있다고 나오네요


  1. 모든 항목을 입력해주고 REGISTER 버튼을 누릅니다.


  1. 다시 첫화면으로 돌아가게됩니다.


  1. 데이터베이스를 확인해보면 방금 입력한 abcd 계정이 정상적으로 생성되었음을 알 수 있습니다.


  1. 만약 abcd란 아이디로 다시 회원가입을 하려고 하면 다음과 같이 이미 사용중인 아이디라고 출력됩니다.





저번 3번째 강의인 회원 데이터베이스 구축에서 오류가 있어서 다음과 같이 UserValidate.php 파일을 다음과 같이 수정합니다.


UserValidate.php


<?php

    $con = mysqli_connect('localhost', 'root', 'qwer1234', 'registration');

     $userID = $_POST["userID"];

     $statement = mysqli_prepare($con, "SELECT userID FROM USER WHERE userID = ?");

     //위에서 * 하면 mysqli_stmt_bind_result에서 에러가 나서 정정함

     mysqli_stmt_bind_param($statement, "s", $userID);

     mysqli_stmt_execute($statement);

     mysqli_stmt_store_result($statement);//결과를 클라이언트에 저장함

     mysqli_stmt_bind_result($statement, $userID);//결과를 $userID 바인딩함

     $response = array();

     $response["success"] = true;

     while(mysqli_stmt_fetch($statement)){

       $response["success"] = false;//회원가입불가를 나타냄

       $response["userID"] = $userID;

     }

     //데이터베이스 작업이 성공 혹은 실패한것을 알려줌

     echo json_encode($response);

?>


아래 파일에 colorWarning 과 colorGray를 추가시켜줍니다.


values/colors.xml


<?xml version="1.0" encoding="utf-8"?>

<resources>

    <color name="colorPrimary">#039BE5</color>

    <color name="colorPrimaryDark">#0277BD</color>

    <color name="colorAccent">#546E7A</color>

    <color name="colorWarning">#ED00CB</color>

    <color name="colorGray">#8C8C8C</color>

</resources>


layout/activity_register.xml


기존 레이아웃에서 입력한 id를 검증하기 위한 버튼을 추가해줍니다. 


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.kch.registration_v4.RegisterActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:background="@color/colorPrimary"
            >

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:text="Member Registration"
                android:textColor="#ffffff"
                android:textSize="30dp"
                android:textStyle="bold"
                android:layout_marginTop="10dp"
                android:layout_marginBottom="10dp"
                />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">

            <LinearLayout
                android:layout_width="280dp"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:layout_marginTop="50dp"
                android:layout_gravity="center"
                >

                <EditText
                    android:layout_width="190dp"
                    android:layout_height="wrap_content"
                    android:hint="ID"
                    android:layout_gravity="center"
                    android:padding="10dp"
                    android:textColor="#ffffff"
                    android:textColorHint="#ffffff"
                    android:id="@+id/idText"
                    android:drawableStart="@drawable/ic_person_black_24dp"
                    android:drawableLeft="@drawable/ic_person_black_24dp"
                    android:layout_marginRight="10dp"
                    android:background="@color/colorPrimary"
                    />
               
                <Button
                    android:layout_width="80dp"
                    android:layout_height="40dp"
                    android:textSize="15dp"
                    android:textStyle="bold"
                    android:background="@color/colorWarning"
                    android:text="Check ID"
                    android:layout_gravity="center"
                    android:id="@+id/validateButton"
                    android:textColor="#ffffff"/>


            </LinearLayout>

            <EditText
                android:inputType="textPassword"
                android:layout_width="280dp"
                android:layout_height="wrap_content"
                android:hint="PASSWORD"
                android:layout_gravity="center"
                android:padding="10dp"
                android:textColor="#ffffff"
                android:textColorHint="#ffffff"
                android:id="@+id/passwordText"
                android:drawableStart="@drawable/ic_lock_outline_black_24dp"
                android:drawableLeft="@drawable/ic_lock_outline_black_24dp"
                android:layout_marginTop="10dp"
                android:background="@color/colorPrimary"
                />

            <EditText
                android:inputType="text"
                android:layout_width="280dp"
                android:layout_height="wrap_content"
                android:hint="E-mail"
                android:layout_gravity="center"
                android:padding="10dp"
                android:textColor="#ffffff"
                android:textColorHint="#ffffff"
                android:id="@+id/emailText"
                android:drawableStart="@drawable/ic_mail_outline_black_24dp"
                android:drawableLeft="@drawable/ic_mail_outline_black_24dp"
                android:layout_marginTop="10dp"
                android:background="@color/colorPrimary"
                />
           
            <RadioGroup
                android:layout_width="280dp"
                android:layout_height="wrap_content"
                android:id="@+id/genderGroup"
                android:layout_gravity="center_horizontal"
                android:orientation="horizontal"
                android:layout_marginTop="10dp"
                >
                <RadioButton
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:text="female"
                    android:id="@+id/genderWoman"
                    android:layout_weight="1"
                    android:checked="true"
                    />

                <RadioButton
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:text="male"
                    android:id="@+id/genderMan"
                    android:layout_weight="1"
                    />
            </RadioGroup>

            <Spinner
                android:layout_width="280dp"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_marginTop="10dp"
                android:id="@+id/majorSpinner"
                ></Spinner>

            <Button
                android:layout_width="280dp"
                android:layout_height="wrap_content"
                android:textSize="20dp"
                android:textStyle="bold"
                android:textColor="#ffffff"
                android:background="@color/colorPrimary"
                android:text="Register"
                android:layout_marginTop="10dp"
                android:layout_gravity="center"
                android:id="@+id/registerButton"
                />


        </LinearLayout>

    </LinearLayout>



</LinearLayout>


RegisterRequest.java


해당 클래스는  URL에 POST방식으로 파라미터들을 전송하는 역할을 수행합니다. 여기서는 회원가입정보를 PHP서버에 보내서 데이터베이스에 저장시키게합니다.


package com.example.kch.registration_v4;

import com.android.volley.AuthFailureError;
import com.android.volley.Response;
import com.android.volley.toolbox.StringRequest;

import java.util.HashMap;
import java.util.Map;

/**
* Created by kch on 2018. 5. 14..
*/

public class RegisterRequest extends StringRequest {

    final static private String URL = "http://10.0.2.2:8080/registration/UserRegister.php";
    private Map<String, String> parameters;

    public RegisterRequest(String userID, String userPassword, String userGender, String userMajor, String userEmail, Response.Listener<String> listener){
        super(Method.POST, URL, listener, null);//해당 URL에 POST방식으로 파마미터들을 전송함
        parameters = new HashMap<>();
        parameters.put("userID", userID);
        parameters.put("userPassword", userPassword);
        parameters.put("userGender", userGender);
        parameters.put("userMajor", userMajor);
        parameters.put("userEmail", userEmail);

    }

    @Override
    protected Map<String, String> getParams() throws AuthFailureError {
        return parameters;
    }
}

ValidateRequest.java


해당 클래스도 아래 URL에 POST방식으로 파라미터들을 전송합니다. 여기서는 아이디값이 이미 가입된 아이디인지 검증합니다.


package com.example.kch.registration_v4;

import com.android.volley.AuthFailureError;
import com.android.volley.Response;
import com.android.volley.toolbox.StringRequest;

import java.util.HashMap;
import java.util.Map;

/**
* Created by kch on 2018. 5. 14..
*/

public class ValidateRequest extends StringRequest {

    final static private String URL = "http://10.0.2.2:8080/registration/UserValidate.php";
    private Map<String, String> parameters;

    public ValidateRequest(String userID, Response.Listener<String> listener){
        super(Method.POST, URL, listener, null);//해당 URL에 POST방식으로 파마미터들을 전송함
        parameters = new HashMap<>();
        parameters.put("userID", userID);
    }

    @Override
    protected Map<String, String> getParams() throws AuthFailureError {
        return parameters;
    }
}




RegisterActivity.java


각 버튼에 대해서 객체를 생성한뒤 리스너를 연결해줍니다. 또한 volley라이브러리를 활용해서 php서버와 통신하는 부분을 구현합니다.


package com.example.kch.registration_v4;

import android.support.annotation.IdRes;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Spinner;
import android.widget.Toast;

import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.toolbox.Volley;

import org.json.JSONObject;

public class RegisterActivity extends AppCompatActivity {

    private ArrayAdapter adapter;
    private Spinner spinner;
    private String userID;
    private String userPassword;
    private String userGender;
    private String userMajor;
    private String userEmail;
    private AlertDialog dialog;
    private boolean validate = false;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register);

        //스피너 객체 선언 및 리소스를 가져오는 부분
        spinner = (Spinner)findViewById(R.id.majorSpinner);
        adapter = ArrayAdapter.createFromResource(this, R.array.major, android.R.layout.simple_dropdown_item_1line);
        spinner.setAdapter(adapter);

        final EditText idText = (EditText)findViewById(R.id.idText);
        final EditText passwordText = (EditText)findViewById(R.id.passwordText);
        final EditText emailText = (EditText)findViewById(R.id.emailText);

        RadioGroup genderGroup = (RadioGroup)findViewById(R.id.genderGroup);
        int genderGroupID = genderGroup.getCheckedRadioButtonId();
        userGender = ((RadioButton)findViewById(genderGroupID)).getText().toString();//초기화 값을 지정해줌

        //라디오버튼이 눌리면 값을 바꿔주는 부분
        genderGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup radioGroup, @IdRes int i) {
                RadioButton genderButton = (RadioButton)findViewById(i);
                userGender = genderButton.getText().toString();
            }
        });

        //회원가입시 아이디가 사용가능한지 검증하는 부분
        final Button validateButton = (Button)findViewById(R.id.validateButton);
        validateButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String userID = idText.getText().toString();
                if(validate){
                    return;//검증 완료
                }
                //ID 값을 입력하지 않았다면
                if(userID.equals("")){
                    AlertDialog.Builder builder = new AlertDialog.Builder(RegisterActivity.this);
                    dialog = builder.setMessage("ID is empty")
                            .setPositiveButton("OK", null)
                            .create();
                    dialog.show();
                    return;
                }


                //검증시작
                Response.Listener<String> responseListener = new Response.Listener<String>(){

                    @Override
                    public void onResponse(String response) {
                        try{
                            Toast.makeText(RegisterActivity.this, response, Toast.LENGTH_LONG).show();

                            JSONObject jsonResponse = new JSONObject(response);
                            boolean success = jsonResponse.getBoolean("success");
                            if(success){//사용할 수 있는 아이디라면
                                AlertDialog.Builder builder = new AlertDialog.Builder(RegisterActivity.this);
                                dialog = builder.setMessage("you can use ID")
                                        .setPositiveButton("OK", null)
                                        .create();
                                dialog.show();
                                idText.setEnabled(false);//아이디값을 바꿀 수 없도록 함
                                validate = true;//검증완료
                                idText.setBackgroundColor(getResources().getColor(R.color.colorGray));
                                validateButton.setBackgroundColor(getResources().getColor(R.color.colorGray));
                            }else{//사용할 수 없는 아이디라면
                                AlertDialog.Builder builder = new AlertDialog.Builder(RegisterActivity.this);
                                dialog = builder.setMessage("alreay used ID")
                                        .setNegativeButton("OK", null)
                                        .create();
                                dialog.show();
                            }

                        }
                        catch(Exception e){
                            e.printStackTrace();
                        }
                    }
                };//Response.Listener 완료

                //Volley 라이브러리를 이용해서 실제 서버와 통신을 구현하는 부분
                ValidateRequest validateRequest = new ValidateRequest(userID, responseListener);
                RequestQueue queue = Volley.newRequestQueue(RegisterActivity.this);
                queue.add(validateRequest);
            }
        });


        //회원 가입 버튼이 눌렸을때
        Button registerButton = (Button)findViewById(R.id.registerButton);
        registerButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String userID = idText.getText().toString();
                String userPassword = passwordText.getText().toString();
                String userMajor = spinner.getSelectedItem().toString();
                String userEmail = emailText.getText().toString();

                //ID 중복체크를 했는지 확인함
                if(!validate){
                    AlertDialog.Builder builder = new AlertDialog.Builder(RegisterActivity.this);
                    dialog = builder.setMessage("First Check ID plz")
                            .setNegativeButton("OK", null)
                            .create();
                    dialog.show();
                    return;
                }

                //한칸이라도 빠뜨렸을 경우
                if(userID.equals("")||userPassword.equals("")||userMajor.equals("")||userEmail.equals("")||userGender.equals("")){
                    AlertDialog.Builder builder = new AlertDialog.Builder(RegisterActivity.this);
                    dialog = builder.setMessage("Empty text exist")
                            .setNegativeButton("OK", null)
                            .create();
                    dialog.show();
                    return;
                }

                //회원가입 시작
                Response.Listener<String> responseListener = new Response.Listener<String>(){

                    @Override
                    public void onResponse(String response) {
                        try{
                            JSONObject jsonResponse = new JSONObject(response);
                            boolean success = jsonResponse.getBoolean("success");
                            if(success){//사용할 수 있는 아이디라면
                                AlertDialog.Builder builder = new AlertDialog.Builder(RegisterActivity.this);
                                dialog = builder.setMessage("Register Your ID")
                                        .setPositiveButton("OK", null)
                                        .create();
                                dialog.show();
                                finish();//액티비티를 종료시킴(회원등록 창을 닫음)
                            }else{//사용할 수 없는 아이디라면
                                AlertDialog.Builder builder = new AlertDialog.Builder(RegisterActivity.this);
                                dialog = builder.setMessage("Register fail")
                                        .setNegativeButton("OK", null)
                                        .create();
                                dialog.show();
                            }

                        }
                        catch(Exception e){
                            e.printStackTrace();
                        }
                    }
                };//Response.Listener 완료

                //Volley 라이브러리를 이용해서 실제 서버와 통신을 구현하는 부분
                RegisterRequest registerRequest = new RegisterRequest(userID, userPassword, userGender, userMajor, userEmail, responseListener);
                RequestQueue queue = Volley.newRequestQueue(RegisterActivity.this);
                queue.add(registerRequest);


            }
        });
    }

    @Override
    protected void onStop() {
        super.onStop();
        if(dialog != null){
            dialog.dismiss();
            dialog = null;
        }
    }
}






블로그 이미지

가카리

프로그래밍, 취업 및 직장생활, 주식 부동산 재테크 전문 블로그

댓글을 달아 주세요

  • 이전 댓글 더보기
  • 2018.10.12 16:04  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

  • 2018.10.12 19:47  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

  • 구딩 2018.10.12 19:58  댓글주소  수정/삭제  댓글쓰기

    네 감사합니다

  • 궁금 2018.11.11 18:33  댓글주소  수정/삭제  댓글쓰기

    디비 접속 해서 데이터 값을 삽입하여 중복확인 이랑 연결 부분을 확인 하였습니다.

    근데 아이디 비밀번호 값이 db에 전송이 되지는 않습니다..

    중복확인하면 값은 읽어오는데 어디부분이 잘못된건가요??

    <?php
    $con = mysqli_connect('localhost', 'jsi3017', 'xd1431xu', 'jsi3017');
    //안드로이드 앱으로부터 아래 값들을 받음
    $userID = $_POST['userID'];
    $userPassword = $_POST['userPassword'];
    $userGender = $_POST['userGender'];
    $userMajor = $_POST['userMajor'];
    $userEmail = $_POST['userEmail'];
    //insert 쿼리문을 실행함
    $statement = mysqli_prepare($con, "INSERT INTO USERS VALUES (?, ?, ?, ?, ?)";);
    mysqli_stmt_bind_param($statement, "sssss", $userID, $userPassword, $userGender, $userMajor, $userEmail);
    mysqli_stmt_store_result($statement);//결과를 클라이언트에 저장함
    mysqli_stmt_execute($statement);


    $response = array();
    $response["success"] = true;
    //회원 가입 성공을 알려주기 위한 부분임
    echo json_encode($response);
    ?>

  • BlogIcon 가카리 2018.11.11 18:35 신고  댓글주소  수정/삭제  댓글쓰기

    안드로이드단에서 userID userPassword로 보냈는지 확인해보세요

    • 궁금 2018.11.11 18:45  댓글주소  수정/삭제

      parameters.put("userID", userID);
      parameters.put("userPassword", userPassword);

      답변 감사드립니다!

      이부분 말씀하시는 건가요..??

      아직 배운지 얼마되지않아서.. 조금만더 자세하게 설명해주시면 감사하겠습니다!!!

    • 초보 2019.05.04 00:00  댓글주소  수정/삭제

      안녕하세요
      저도 같은 증상인거 같은데... 아래 댓글을 이해할 수 있는 능력이 없어서 추가적으로 댓글을 남깁니다.

      1. 디비에 어떤 값이 있어도 중복확인 후, 사용할 수 있다는 문구가 나옵니다.

      2. 회원가입 이후 디비에 저장되지 않습니다.

      도와주세요ㅜㅜ

    • BlogIcon 가카리 2019.05.04 00:26 신고  댓글주소  수정/삭제

      디비로 저장하기전에 echo로 변수들을 출력하면서 한줄한줄 검증해보세요

  • BlogIcon 가카리 2018.11.11 18:50 신고  댓글주소  수정/삭제  댓글쓰기

    잘보내셨네요. 이건 PHP쪽에서 display errors 풀고 디버깅해야할것같네요

    • 궁금 2018.11.11 19:00  댓글주소  수정/삭제

      Notice: Undefined index: userID in /host/home5/jsi3017/html/UserRegister.php on line 6

      Notice: Undefined index: userPassword in /host/home5/jsi3017/html/UserRegister.php on line 7

      Notice: Undefined index: userGender in /host/home5/jsi3017/html/UserRegister.php on line 8

      Notice: Undefined index: userMajor in /host/home5/jsi3017/html/UserRegister.php on line 9

      Notice: Undefined index: userEmail in /host/home5/jsi3017/html/UserRegister.php on line 10


      {"success":true}

      아 이렇게

      디버그 하는거군요 왜 디파인 일가요!

  • BlogIcon 가카리 2018.11.11 19:05 신고  댓글주소  수정/삭제  댓글쓰기

    이것만 봐서는 잘모르겠네요
    1. php 디비 접속 확인
    2. php로 insert 되는지 확인
    3. 안드로이드단에서 제대고 값을 쏴주는지 토스트메시지 같은걸로 확인
    4. php에서 안드로이드에서 보낸 메시지를 잘받았는지 echo로 확인
    5. php에서 안드로이드에서 보낸 메시지를 잘 insert하는지 확인

    이순서대로 찾아보세요

    • 궁금 2018.11.11 19:16  댓글주소  수정/삭제

      가카리님 빠른 답변 정말로 감사합니다.

      순서 확인해본 결과 안드로이드와 연결 문제 였습니다.

      정말 답변 감사드립니다!

      좋은하루되세요~

  • BlogIcon 가카리 2018.11.11 19:17 신고  댓글주소  수정/삭제  댓글쓰기

    네 고생하셨습니다

  • ㅊㅂ 2019.06.04 19:09  댓글주소  수정/삭제  댓글쓰기

    final static private String URL = "http://10.0.2.2:8080/registration/UserRegister.php"; 에 공인 ip가 아닌 노트북 사설 ip를 기입해도 안드로이드 디바이스로 테스트 할 때 작동하나요?

    • BlogIcon 가카리 2019.06.04 19:10 신고  댓글주소  수정/삭제

      네 에뮬레이터 아이피라서요

    • ㅊㅂ 2019.06.06 17:36  댓글주소  수정/삭제

      아뇨 10.0.2.2 (에뮬레이터 주소) 말고 14.56.208.40 같은 노트북 사설 ip 주소를 기입했을 때 작동하는지를 물어본거였어요 ㅠㅠ 실행은 애뮬레이터가 아닌 안드로이드 기기를 노트북에 usb로 연결해서 실행시키고요

    • BlogIcon 가카리 2019.06.06 17:41 신고  댓글주소  수정/삭제

      통신사 고정아이피면 잘되구요
      유동아이피면 whats ip인가 거기서 실제 아이피를 확인하시고 넣으면 되요 ap쓰시면 192.168로 시작하는 아이피 쓰시면되고

    • ㅊㅂ 2019.06.06 18:31  댓글주소  수정/삭제

      감사합니다!!!

  • 송송송 2019.07.25 13:53  댓글주소  수정/삭제  댓글쓰기

    며칠동안 공부하다가 도저히 안되서 하던걸 포기하고

    예제소스를 똑같이 써서 실행을 해봤는데

    CHECK ID 버튼을 눌렀을때 ID칸이 비어있으면 ID is Empty 라는 메세지는 뜨는데 아이디를 넣고 누르면 반응을 하지 않습니다.

    final static private String URL = "http://192.168.162.86/registration/UserRegister.php"; 은 mysql이 있는 컴퓨터 IP 주소로 변경했습니다.

    • BlogIcon 가카리 2019.07.25 18:25 신고  댓글주소  수정/삭제

      String userID 선언부분을 자세히 봐보세요

    • BlogIcon 동동동 2020.11.19 22:10  댓글주소  수정/삭제

      저도 마찬가지로 ID비어있을떄는 Alertdialog가 뜨는데,

      아이디가 중복되거나, 새로운 아이디일때, response부분이 실행이 안되서 반응이 되지 않는것 같아요..ㅠㅠ

      디버깅을 해봤을때,
      response["success"]랑 userID 값을
      받아오고 있는데......
      PHP와는 통신이 잘되는 것 같은데,

      안드로이드에서 Response함수가 어떤 조건에 의해서 실행이 되는건가요..?!

      4일째 고민중입니다 ㅜㅜ부탁드려요!

  • 2019.11.03 15:51  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

  • BlogIcon 가카리 2019.11.03 16:16 신고  댓글주소  수정/삭제  댓글쓰기

    mysqli_stmt 시리즈 파라미터 잘못들어갔다네요.. 사용하시는 PHP버전으로 해당 메소드들 파라미터 찾아보셔야할듯.. 제가 지금 스터디중이라서 못찾아볼것같네요.

  • BlogIcon 170815 2019.11.07 20:58 신고  댓글주소  수정/삭제  댓글쓰기

    안녕하세요 가카리님 제가 프로젝트 중에 가카리님의 글을 찾게 되어 정말 수월하게 진행하게 될 줄 알았는데요 코드랑 php 다 문제가 없는데 아이디 체크 버튼이 안눌립니다ㅠㅠ 혹시 php 웹상에서 {"success":true} 이거 뜨면 실패한 건가요???
    참고로 폼 모양은 조금 다릅니당 그래도 갯수 똑같고 타입도 똑같아서 문제 없을 거 같은데..ㅠㅠㅠㅠㅠㅠㅠㅠㅠ 미치겠습니다 뇌절할 거 같아요

    • BlogIcon 가카리 2019.11.08 11:18 신고  댓글주소  수정/삭제

      안드로이드에서 파라미터 넘기는 부분을 Toast메시지로 잘보내는지 보시고 다음에 PHP소스에서 해당 파라미터를 잘받는지 echo찍어보세요

  • 숭더덩 2019.11.07 21:15  댓글주소  수정/삭제  댓글쓰기

    소스 오류도 없고 id체크 부분도 잘 해결이 되는데 회원가입 확인버튼을 누르면 에뮬레이터가 꺼져요,,,ㅠㅠ 어떻게 해결하나요

  • bene33 2019.11.09 08:40  댓글주소  수정/삭제  댓글쓰기

    아이디 중복 체크만 하는 코드를 작성했는데 버튼 클릭시 아무런 반응이 없어서.... 질문드립니다.
    php 쪽으로 값을 못보내는 건지 못 받는건지.... 도무지 해결이 안되네요...

    • BlogIcon 가카리 2019.11.09 21:31 신고  댓글주소  수정/삭제

      솔직히 기능이 아예동작을 안하면 Log.d메소드같은걸로 하나씩 변수를 찍어보면서 찾는수밖에 없어요.. 어떻게 도와드릴수가 없네요.

  • star 2019.11.09 20:37  댓글주소  수정/삭제  댓글쓰기

    final static private String URL = "http://10.0.2.2:8080/registration/UserRegister.php";에서 registration부분을 넣으면 아이디 확인도 안되고 아예 다음 화면으로 안 넘어가지는데 registration를 빼면 아이디 확인이 되더라구요 그런데 회원가입 완료 버튼을 누르면 실행 화면이 종료 되더라구요... 그러면 데이터베이스가 연결안된것인가요??

    • BlogIcon 가카리 2019.11.09 21:33 신고  댓글주소  수정/삭제

      전 해당 php파일을 registration폴더에 넣어서 저렇게 경로 설정한거에요.. 본인이 만든 php파일의 경로가 서버루트에서 어디에 위치하는지 다시보세요

    • star 2019.11.10 14:44  댓글주소  수정/삭제

      혹시 php파일을 registration폴더에 어떻게 넣는지 알 수 있ㅇ르까요...?

    • BlogIcon 가카리 2019.11.10 15:06 신고  댓글주소  수정/삭제

      지금 서버가 본인의 피씨면 해당 htdocs경로에서 폴더만들고 복붙하면되고 서버가 호스팅업체것이면 알FTP같은걸로 해당 호스팅서버에 접속후에 폴더만들고 복붙하면되죠..

  • 2020.05.09 00:33  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

    • BlogIcon 가카리 2020.05.09 11:37 신고  댓글주소  수정/삭제

      핸폰과 데이터베이스가 설치된 PC가 같은 와이파이를 사용해야되요 그리고 피씨에서 ipconfig 쳐서 해당 데이터베이스 아이피를 소스에 넣어주셔야됩니다

  • 2020.05.09 12:00  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

    • BlogIcon 가카리 2020.05.09 12:06 신고  댓글주소  수정/삭제

      데이터베이스가 카페24면 거기 홈페이지에서 웹호스팅 정보가면 아이피정보 있을거에요

      "http://10.0.2.2:8080/registration/UserValidate.php";

      이렇게 아이피가 들어간 부분을

      http://카페24아이피명:포트번호/registration/UserValidate.php

      로 변경해야됩니다.

      왜 이렇게 해야되는지 모르겠으면

      생활코딩 아래 강의를 들어보시기 바랍니다.
      https://opentutorials.org/course/228/6040

  • 2020.05.09 12:35  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

  • 2020.05.09 12:56  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다