2013-06-15 2 views
-2

안녕하세요. 내 웹 사이트에 로그인하는 데 문제가 있습니다. 여기웹 사이트에 로그인하지 않음

<?php 
      session_start(); 

      include 'api/connect.php'; 

      $username = mysql_real_escape_string(htmlentities($_POST['username'])); 
      $password = mysql_real_escape_string(htmlentities(sha1($_POST['password']))); 

      $query = mysql_query("SELECT * FROM `beta` WHERE `username` = '" . $username . "' AND `password` = '" . $password . "'") or die(mysql_query()); 

      // Start the long process 
      $rows = mysql_num_rows($query); 

      if($rows == 1){  
       while($list = mysql_fetch_assoc($query)) { 
       $output = $list; 
       echo json_encode($output); 
       } 
       mysql_close(); 
      } 


?> 

안드로이드 코드 : 다음은 PHP 코드는이 말을 계속 어떤 이유

package com.awsomechat; 

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.util.ArrayList; 

import org.apache.http.HttpEntity; 
import org.apache.http.HttpResponse; 
import org.apache.http.NameValuePair; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.entity.UrlEncodedFormEntity; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.apache.http.message.BasicNameValuePair; 
import org.json.JSONObject; 


import android.os.Bundle; 
import android.app.Activity; 
import android.content.SharedPreferences; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 

public class MainActivity extends Activity implements OnClickListener { 

EditText etUser, etPass; 
Button blogin; 

// Username, Password 
String username, password; 

// Make an HTTP Client 
HttpClient httpclient; 
HttpPost httppost; 

// Store the username and password in an array 
ArrayList<NameValuePair> nameValuePairs; 

// HTTP Response & Entity 
HttpResponse response; 
HttpEntity entity; 



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

    initialise(); 
} 

private void initialise() { 
    // TODO Auto-generated method stub 
    etUser = (EditText) findViewById(R.id.etUser); 
    etPass = (EditText) findViewById(R.id.etPass); 
    blogin = (Button) findViewById(R.id.etSubmit); 
    blogin.setOnClickListener(this); 

} 

@Override 
public void onClick(View v) { 
    // The user tapped the Login button, start logging in 

    // Default HTTPClient 
    httpclient = new DefaultHttpClient(); 

    // Post the values to the AwsomeChat Login script 
    httppost = new HttpPost("http://beta-awsomechat.tk/login.php"); 

    // THe values we are working with 
    username = etUser.getText().toString(); 
    password = etPass.getText().toString(); 

    // Try to login. Start the login validation/process 
    try { 
     nameValuePairs = new ArrayList<NameValuePair>(); 

     // Store the username and password in an array 
     nameValuePairs.add(new BasicNameValuePair("username", username)); 
     nameValuePairs.add(new BasicNameValuePair("password", password)); 

     httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

     response = httpclient.execute(httppost); 

     if(response.getStatusLine().getStatusCode() == 200){ 

      // Get the info given to us. 
      entity = response.getEntity(); 

      if(entity != null){ 
       InputStream instream = entity.getContent(); 

       JSONObject jsonResponse = new JSONObject(convertStreamToString(instream)); 

       String retUser = jsonResponse.getString("username"); 
       String retPass = jsonResponse.getString("password"); 

       // Start the validation process 
       if(username.equals(retUser) && password.equals(retPass)){ 
        // 
        // 
        SharedPreferences sp = getSharedPreferences("logindetails", 0); 

        SharedPreferences.Editor spedit = sp.edit(); 

        spedit.putString("user", username); 
        spedit.putString("pass", password); 

        // 
        spedit.commit(); 

        Toast.makeText(getBaseContext(), "Login Success", Toast.LENGTH_SHORT).show(); 

       } else { 
        Toast.makeText(getBaseContext(), "Login Fialed.", Toast.LENGTH_SHORT).show(); 
       } 
      } 
     } 
    } catch(Exception e) { 
     e.printStackTrace(); 
     Toast.makeText(getBaseContext(), "Login Failed.", Toast.LENGTH_SHORT).show(); 
    } 
} 

private static String convertStreamToString(InputStream is) { 
    /* 
    * To convert the InputStream to String we use the BufferedReader.readLine() 
    * method. We iterate until the BufferedReader return null which means 
    * there's no more data to read. Each line will appended to a StringBuilder 
    * and returned as String. 
    */ 
    BufferedReader reader = new BufferedReader(new InputStreamReader(is)); 
    StringBuilder sb = new StringBuilder(); 

    String line = null; 
    try { 
     while ((line = reader.readLine()) != null) { 
      sb.append(line + "\n"); 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } finally { 
     try { 
      is.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
    return sb.toString(); 
} 


} 

때마다 "로그인 실패". php 코드에 오류가 없기 때문에 PHP 코드의 모든 버그를 수정했습니다. 안드로이드 코드 여야합니다. LogCat은 아무 것도 말하지 않으며 문제를 찾기가 더 어렵게 만드는 콘솔도 아닙니다.

** 편집 :

06-15 16 : 55 : 16.400을 : 나는 로그 캣에 오류가있어 E/ActivityThread (870) : 서비스 com.android.exchange.ExchangeService이 누출 된 ServiceConnection의 com.android.emailcommon .service.ServiceProxy $ ProxyConnection @ 40cfaac0 원래 여기에 바인딩되었습니다. 06-15 16 : 55 : 16.400 : E/ActivityThread (870) : android.app.ServiceConnectionLeaked : 서비스 com.android.exchange.ExchangeService가 ServiceConnection을 유출했습니다. com.android .emailcommon.service.ServiceProxy $ ProxyConnection @ 40cfaac0 원래 여기에 바인딩되었습니다. 06-15 16 : 55 : 16.400 : E/ActivityThread (870) : android.app.LoadedApk $ ServiceDispatcher (LoadedApk.java:969) 06 -15 16 : 55 : 16.400 : E/ActivityThread (870) :에서 droid.app.LoadedApk.getServiceDispatcher (LoadedApk.java:863) 06-15 16 : 55 : 16.400 : E/ActivityThread (870) : android.app.ContextImpl.bindService (ContextImpl.java:1418) 06-15 16 : 55 : 16.400 : E/ActivityThread (870) : android.content.ContextImpl.bindService (ContextImpl.java:1407) 06-15 16 : 55 : 16.400 : E/ActivityThread (870) : android.content. ContextWrapper.bindService (ContextWrapper.java:473) 06-15 16 : 55 : 16.400 : E/ActivityThread (870) : com.android.emailcommon.service.ServiceProxy.setTask (ServiceProxy.java:157) 06-15 16 : 55 : 16.400 : E/ActivityThread (870) : com.android.emailcommon.service.ServiceProxy.setTask (ServiceProxy.java:145) 06-15 16 : 55 : 16.400 : E/ActivityThread (870) : at com.android.emailcommon.service.ServiceProxy.test (ServiceProxy.java:191) 06-15 16 : 55 : 16.400 : E/Activi tyThread (870) : com.android.exchange.ExchangeService $ 7.run (ExchangeService.java:1850) 06-15 16 : 55 : 16.400 : E/ActivityThread (870) : com.android.emailcommon.utility.Utility $ 2.doInBackground (Utility.java:551) 06-15 16 : 55 : 16.400 : E/ActivityThread (870) : com.android.emailcommon.utility.Utility $ 2.doInBackground (Utility.java:549) 06- 15 16 : 55 : 16.400 : E/ActivityThread (870) : android.os.AsyncTask $ 2.call (AsyncTask.java:287) 06-15 16 : 55 : 16.400 : E/ActivityThread (870) : java. util.concurrent.FutureTask.run (FutureTask.java:234) 06-15 16 : 55 : 16.400 : E/ActivityThread (870) : java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1080) 06 -15 16 : 55 : 16.400 : E/ActivityThread (870) : java.util.concurrent.ThreadPoolExecutor에서 $ Worker.run (ThreadPoolExecutor.java:573) 06-15 16 : 55 : 16.400 : E/ActivityThread (870) : java.lang.Thread.run (Thread.java:856) 06-15 16 : 55 : 16.514 : E/StrictMode (870) : null 06-15 16 : 55 : 16.514 : E/StrictMode (870) : android.app.ServiceConnectionLeaked : 서비스 com.android.exchange.ExchangeService가 원래 있던 ServiceConnection [email protected]faac0을 유출했습니다. 여기에 바인딩 06-15 16 : 55 : 16.514 : E/StrictMode (870) : android.app.LoadedApk $ ServiceDispatcher (LoadedApk.java:969) 06-15 16 : 55 : 16.514 : E/StrictMode (870)) : android.app.LoadedApk.getServiceDispatcher (LoadedApk.java:863) 06-15 16 : 55 : 16.514 : E/StrictMode (870) : android.app.ContextImpl.bindService (ContextImpl.java:1418) 06-15 : 16 : 55 : 16.514 : E/StrictMode (870) : android.app.ContextImpl.bindService (ContextImpl.java:1407) 06-15 16 : 55 : 16.514 : E/StrictMode (870) : android.content.ContextWrapper.bindService (ContextWrapper.java:473) 06-15 16 : 55 : 16.514 : E/StrictMode (870) : com.android.emailcommon.service.ServiceProxy.setTask (ServiceProxy.java:157) 06-15 16 : 55 : 16.514 : E/StrictMode (870) : com.android.emailcommon.service.ServiceProxy.setTask (ServiceProxy.java:145) 06-15 16 : 55 : 16.514 : E/StrictMode (870) : com. android.emailcommon.service.ServiceProxy.test (ServiceProxy.java:191) 06-15 16 : 55 : 16.514 : E/StrictMode (870) : com.android.exchange.ExchangeService $ 7.run (ExchangeService.java:1850)) 06-15 16 : 55 : 16.514 : E/StrictMode (870) : com.android.emailcommon.utility.Utility $ 2.doInBackground (Utility.java:551) 06-15 16 : 55 : 16.514 : E/StrictMode (870) : at com.android.emailcommon.utility.Utility $ 2.doInBackground (Utility.java:549) 06-15 16 : 55 : 16.514 : E/StrictMode (870) : at android.os.AsyncTask $ 2.call (AsyncTask.java:287) 06-15 16 : 55 : 16.514 : E/StrictMode (870) : java.util.concurrent.FutureTask.run (FutureTask.java:234) E/StrictMode (870) : 06/15 16 : 55 : 16.514 : E/StrictMode (870) : java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1080) 06-15 16 : 55 : 16.514 : (ThreadPoolExecutor.java:573) 06-15 16 : 55 : 16.514 : E/StrictMode (870) : java.lang.Thread.run (Thread.java:856)에서 Worker.run을 호출합니다.) 06-15 16 : 55 : 28.370 : E/SurfaceFlinger (37) : ro.sf.lcd_density를 빌드 속성으로 정의해야합니다.

이 오류는 로그인을 보내기 위해 버튼을 누르면 항상 Log Cat에 나타납니다. 세부 정보 :

06-15 16:59:44.379 : E/SurfaceFlinger (37) : 빌드 속성으로 ro.sf.lcd_density를 정의해야합니다. **

+0

Java 코드에서 * anything *을 디버깅 했습니까? Android 측에서 문제를 진단하려는 시도에 대한 로깅 진술이나 증거가 표시되지 않습니다. Java 코드에서 일어나는 일을 안드로이드 문제라고 확신한다면 알려주십시오. 유선에 있다고 생각하는 것을 되돌릴 수있는 도구가 많이 있습니다. –

+0

Dave, 나는 당신이 * PHP * 코드를 의미한다고 생각하니? –

+0

나는 3G와 WiFi를 통해 삼성 Galaxy s2에서 앱을 테스트했고 다른 Android 휴대 전화에서는 WiFi에서 Lg Optimus Elite를 테스트했습니다. 두 사람은 계속 로그인에 실패했다고 말합니다. PHP 코드가 수정되었으며 여전히 로그인 실패 메시지가 나타납니다. Android 코드가 에뮬레이터에서 디버깅되었습니다. LogCat과 콘솔을 살펴 보았습니다. 오류는 없었습니다. – Djmann1013

답변

0

retUser 및 retPassword 문제가 있다고 가정합니다. 그들의 가치를보기 위해 디버깅을 해봤습니까? 나는 그들이 null이고 따라서 사용자 이름과 암호와 비교할 때 false를 반환한다고 생각합니다. String의 equals 메서드는 인수가 null 일 때 false를 반환합니다. 이렇게하면 검사가 실패하고 else 블록으로 이동합니다. 여기에 "로그인 실패"라는 축하가 표시됩니다. 스택 트레이스를 LogCat 또는 콘솔에 인쇄하지 않아도됩니다.

먼저 PHP 코드를 디버그하여 실제로 JSON 인코딩 된 메시지를 반환하는지 확인합니다. 그렇다면 바이 ​​트 스트림을 JSONObject로 올바르게 변환했는지 확인하십시오.

편집

나는 당신의 의견 중 하나를 읽을 때, 당신은 DB에 저장하기 전에 PHP를 사용하여 암호를 해시했습니다. 그런 다음 java에서 동일한 해싱 알고리즘을 사용하여 입력 된 암호를 해시 한 다음 해시를 비교해야합니다. 동일하면 제공된 암호는 DB에서 검색 한 암호와 동일합니다.

+0

나는 사용자 이름과 암호 변수를 설정하고 PHP 코드를 새로 고침하여 PHP 코드를 검사하고 json에서 사용자의 값을 반환했습니다. 입력 값이 null인지 아닌지 확인하기 위해 입력 값을 테스트 할 것입니다. – Djmann1013

+0

LogCat에서 오류가 발생하여 내 게시물에서 오류를 찾습니다. – Djmann1013

관련 문제