我已经在marshmallow中创建并测试了一个登录表单,我收到了成功消息。
但是当我尝试在kitkat操作系统中运行相同的应用程序时,它会出错"登录错误"我从数据库返回。 (PHP)
任何想法为什么会发生这样的事情?
我看到的是密码字段在两个操作系统中都不同。
即当我键入marshmallow密码字段时,只显示点,但在kitkat os中按下的键将显示一秒钟。这是错误吗?
在这种情况下,我已经尝试了操作系统及其工作正常的注册表格(包括密码字段)。
d_login.php
<?php
$host='mysql7.000webhost.com';
$uname='a5502952_dds';
$pwd='000dds';
$db="a5502952_dds";
$con = mysql_connect($host,$uname,$pwd) or die("connection failed");
mysql_select_db($db,$con) or die("db selection failed");
$user = $_POST['user'];
$pass = $_POST['pass'];
$r=mysql_query("SELECT Count(password) as c,role,username from login WHERE username='$user'and password='$pass' and approve='approve'");
while($row=mysql_fetch_array($r))
{
$flag[role]=$row['role'];
$count=$row['c'];
$flag[user]=$row['username'];
}
if($count==1){
print(json_encode($flag));
}
else{
$flag[role]="5";
$flag[user]="5";
print(json_encode($flag));
}
mysql_close($con);
?>
&#13;
public class LoginActivity extends AppCompatActivity {
EditText ed1,ed2;
Button btn1,btn2;
String useracc=null;
//Fetch//
String role=null;
String approve=null;
InputStream is=null;
String result2=null;
String line=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
ed1=(EditText)findViewById(R.id.user);
ed2=(EditText)findViewById(R.id.pass);
btn1=(Button)findViewById(R.id.sign);
btn2=(Button)findViewById(R.id.reg);
btn1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (ed1.getText().toString().length() == 0 || ed1.getText().toString().length() < 3) {
ed1.setError("Enter valid username");
return;
} else if (ed2.getText().toString().length() == 0 || ed2.getText().toString().length() < 3) {
ed2.setError("Enter valid password");
return;
}
else {
if (isNetworkAvailable()) {
Toast.makeText(getApplicationContext(), "Please wait", Toast.LENGTH_SHORT).show();
insert();
} else {
Toast.makeText(getApplicationContext(), "Please check the internet connection", Toast.LENGTH_LONG).show();
}
}
}
});
btn2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent2 = new Intent(LoginActivity.this, RegisterActivity.class);
startActivity(intent2);
}
});
}
private boolean isNetworkAvailable() {
ConnectivityManager connectivityManager
= (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
public void insert() {
String user = ed1.getText().toString();
String pass = ed2.getText().toString();
insertToDatabase(user,pass);
}
private void insertToDatabase(final String user,final String pass) {
class SendPostReqAsyncTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("user", user));
nameValuePairs.add(new BasicNameValuePair("pass", pass));
try
{
HttpClient httpclient2 = new DefaultHttpClient();
HttpPost httppost2 = new HttpPost("http://www.diamonddiscretions.tk/d_login.php");
httppost2.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response2 = httpclient2.execute(httppost2);
HttpEntity entity2 = response2.getEntity();
is = entity2.getContent();
Log.e("pass 1", "connection success ");
}
catch(Exception e)
{
Log.e("Fail 1", e.toString());
Toast.makeText(getApplicationContext(), "Invalid IP Address"+e.toString(),
Toast.LENGTH_LONG).show();
}
try
{
BufferedReader reader = new BufferedReader
(new InputStreamReader(is,"iso-8859-1"),8);
StringBuilder sb = new StringBuilder();
while ((line = reader.readLine()) != null)
{
sb.append(line + "\n");
}
is.close();
result2 = sb.toString();
Log.e("pass 2", "connection success ");
}
catch(Exception e)
{
Log.e("Fail 2", e.toString());
}
try
{
JSONObject json_data = new JSONObject(result2);
role=String.valueOf(json_data.getInt("role"));
useracc=json_data.getString("user");
}
catch(Exception e)
{
Log.e("Fail 3", e.toString());
}
return "success";
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
if(role=="0") {
Intent intent1 = new Intent(LoginActivity.this, MyProfile.class);
intent1.putExtra("Value", String.valueOf(useracc));
startActivity(intent1);
}
else if(role.toString()=="5" && useracc.toString()=="5") {
Toast.makeText(getApplicationContext(),"Incorrect Login", Toast.LENGTH_LONG).show();
}
else{
Toast.makeText(getApplicationContext(),"Incorrect Login", Toast.LENGTH_LONG).show();
}
}
}
SendPostReqAsyncTask sendPostReqAsyncTask = new SendPostReqAsyncTask();
sendPostReqAsyncTask.execute(user, pass);
}
}
&#13;
activity_login.xml
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="80dp">
<EditText
android:id="@+id/user"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="username"
android:inputType="text"
android:maxLines="1"
android:textColor="@color/black"
android:singleLine="true" />
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp">
<EditText
android:id="@+id/pass"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:maxLines="1"
android:singleLine="true"
android:textColor="@color/black"
android:hint="password" />
</android.support.design.widget.TextInputLayout>
&#13;
答案 0 :(得分:1)
这是一个愚蠢的java错误。
我正在使用if(useracc ==&#34; 5&#34;)这是错误的。我们应该总是使用.equals来比较字符串。
所以它总是返回到else并给出登录错误。
:D