Android没有连接到数据库来检查用户名和密码

     2023-02-25     274

关键词:

【中文标题】Android没有连接到数据库来检查用户名和密码【英文标题】:Android is not connecting to database to check the username and password 【发布时间】:2019-03-04 19:37:32 【问题描述】:

我在一个教程视频中看到了这段代码,在该视频中应用运行良好,甚至显示“登录成功”toast。

但是当我尝试复制它时,即使我在数据库中输入了正确的用户名和密码,它也无法正常工作。 (我在 XAMPP 上尝试了用户的 LAN IP 和 Wi-Fi IP,还尝试在 000webhost.com 上托管 PHP 脚本,但仍然无法使用任何方法)

我的安卓代码:

package com.example.devarsh.googlemapsbustracker;


import android.app.Dialog;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GoogleApiAvailability;

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

public class MainActivity extends AppCompatActivity 

    private static final String TAG = "MainActivity";
    private static final int ERROR_DIALOG_REQUEST = 9001;
    private EditText User_name, Pass_word;
    private Button btnlogin;
    private static String URL_LOGIN = 
    "http://192.168.50.127/Android/login.php";


    //vars
    EditText enroll;


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

        btnlogin = findViewById(R.id.button2);
        User_name = findViewById(R.id.username);
        Pass_word = findViewById(R.id.password);

        btnlogin.setOnClickListener(new View.OnClickListener() 
            @Override
            public void onClick(View view) 
                Login();
            
        );


        isServicesOK();
    

    private void Login()

        String URL = 
    "imagebustracker.000webhostapp.com/Android/parul/login.php";
        RequestQueue requestQueue = Volley.newRequestQueue(this);
        StringRequest stringRequest = new StringRequest(Request.Method.POST, URL, new Response.Listener<String>() 
            @Override
            public void onResponse(String response) 

                if(response.trim().equals("success"))
                    Toast.makeText(getApplicationContext(), "Login Successfull", Toast.LENGTH_LONG).show();
                    Intent intent = new Intent(getApplicationContext(), Selection_Activity.class);
                    startActivity(intent);
                else
                    Toast.makeText(getApplicationContext(), "Login Unsuccessfull", Toast.LENGTH_LONG).show();
                

            
        , new Response.ErrorListener() 
            @Override
            public void onErrorResponse(VolleyError error) 
                Toast.makeText(getApplicationContext(), "Login Unsuccessfull", Toast.LENGTH_LONG).show();
            
        ) 
            @Override
            protected Map<String, String> getParams() throws AuthFailureError 

                Map<String, String> params = new HashMap<>();
                params.put("UserName", User_name.getText().toString().trim());
                params.put("PassWord", Pass_word.getText().toString().trim());

                return params;
            
        ;

        requestQueue.add(stringRequest);

    


    public void isServicesOK() 
        Log.d(TAG, "isServicesOK: checking google services version");

        int available = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(this);

        if(available == ConnectionResult.SUCCESS)
            //everything is fine and user can make map request
            Log.d(TAG, "isServicesOK: Google Play Services is working");
        
        else if(GoogleApiAvailability.getInstance().isUserResolvableError(available))
            //there is an error but we can fix it
            Log.d(TAG, "isServicesOK: An error is there but we can fix it");
            Dialog dialog = GoogleApiAvailability.getInstance().getErrorDialog(this, available, ERROR_DIALOG_REQUEST);
            dialog.show();
        else
            Toast.makeText(this, "We cant make maps request", Toast.LENGTH_SHORT).show();
        
    

在我刚刚添加的 Android 代码中,如果 response.trim().equals("success") 则它将启动一个新活动。但它一直在烤“登录失败”。

PHP 脚本:


<?php
$conn =
 mysqli_connect("localhost","id7263189_root","dev@1234"
 ,"id7263189_logintb");
    mysqli_query($conn, "SET NAMES 'utf8'");

$username = $_POST["UserName"];
$password = $_POST["PassWord"];

$query = 'SELECT id FROM logintb WHERE username = "'.$username.'" and 
password = "'.$password.'"';
$result = mysqli_query($conn,$query) or die('error: ' .mysql_error());

if(mysqli_num_rows($result) == 1)

    echo "success";
else
    echo "error";



?>

目前我正在使用 XAMPP 连接到 myphpadmin。但如果我需要,我会将其托管到 000webhost 以检查在互联网上使用真实设备。

【问题讨论】:

我建议您做的第一件事是在您的 PHP 代码中硬编码用户名和密码,运行 android 应用程序,进行调用并查看它是否返回成功结果。这将缩小问题范围,看看是 Android 端还是 PHP 端的问题。 我该怎么做?你能用一个例子解释一下我的代码吗? 所以我已经通过放弃 php 并转移到 Google Firebase 解决了这个问题,但无论如何感谢您的帮助 【参考方案1】:

首先,测试您的 PHP 脚本。因此,像这样对用户名和密码变量进行硬编码

$username = "myUsername"; 
$password = "myPassword";

确保 myUsername 和 myPassword 是您的数据库中实际存在的数据。从那里,在您的网络浏览器中调用相同的 URL 并查看响应。是成功还是错误。

另一件值得注意的事情是在您拨打电话时阅读 Android 应用中的响应代码。响应代码将清楚地确定它是否甚至与服务通信。但在你的情况下,我建议你打印出 Volleyerror。 此外,请向我提供您用于本教程的链接。有时对代码有双重观察是件好事。

正如您所提到的,您遇到了“登录失败”toast,这意味着它遇到了 onErrorResponse 函数。因此,将函数更改为以下内容:-

new Response.ErrorListener() 
        @Override
        public void onErrorResponse(VolleyError error) 
            Toast.makeText(getApplicationContext(), "Login Unsuccessfull", Toast.LENGTH_LONG).show();
            Log.e(TAG, error); //or
            System.println("VolleyError Start: " + error + " : End VolleyError");
         

请分享错误。如果您有任何问题,请告诉我。

【讨论】:

这里是链接link,是的,我尝试了你的方法,它奏效了我使用了$username = "test" and $password = "test123",它在我的数据库中,当我运行该php脚本时它工作并说成功但是当我尝试在android studio中它说再次登录不成功 你需要和我分享错误;因此,请在接近尾声时再次查看答案。 感谢您的帮助,我发现错误是 000webhosting 错误,但是当我在 XAMPP localhost 服务器上尝试并使用模拟器时,它工作正常。特别感谢 Nero 在这个话题上帮助我 非常欢迎您,很高兴我能提供帮助。如果您需要任何其他帮助,请联系我

连接到远程 Ubuntu 18.04 服务器,只提供服务器名、用户名和密码来设置 PostgreSQL 数据库

...04服务器,只提供服务器名、用户名和密码来设置PostgreSQL数据库【英文标题】:ConnectingtoaremoteUbuntu18.04ServerwithonlyServername,UsernameandPasswordprovidedtosetupaPostgreSQLdatabase【发布时间】:2020-07-2017:39:03【问题描述】:我目前在大学的一个... 查看详情

如何通过编程设置用户名和密码来连接到 ActiveMQ 服务器?

】如何通过编程设置用户名和密码来连接到ActiveMQ服务器?【英文标题】:HowtoconnecttoanActiveMQserverbysettingtheusernameandpasswordprogrammatically?【发布时间】:2017-08-1717:31:00【问题描述】:我创建了一个ActiveMQ服务器来发送一些消息。我... 查看详情

phpmyadmin尝试连接到mysql服务器,但服务器拒绝连接。您应该检查配置文件中的主机用户名和密码

需要修改phpmyadmin的配置文件,让其连接到MySQL数据库,用记事本打开config.inc.php文件1<?php23/*Serversconfiguration*/4$i=0;56/*Server:localhost[1]*/7$i++;8$cfg[‘Servers‘][$i][‘verbose‘]=‘localhost‘;9$cfg[‘Servers‘][$i][‘host‘] 查看详情

由没有密码的用户连接到 Postgres DB

...一个用户:sudo-upostgrespsql-c"CREATEUSERsample;"然后创建了一个数据库:sudo-upostgrespsql-c"CREATEDATABASEpracticeOWNERsa 查看详情

PowerPivot - 连接到 Microsoft Access 数据库 - 用户名和密码

】PowerPivot-连接到MicrosoftAccess数据库-用户名和密码【英文标题】:PowerPivot-ConnecttoMicrosoftAccessDatabase-Username&Password【发布时间】:2021-11-2407:02:52【问题描述】:我尝试将受保护的MS-Access数据库连接到PowerPivot。在表格导入向导表... 查看详情

使用 WinNT:// 提供程序和目录服务连接到远程计算机忽略用户名/密码

】使用WinNT://提供程序和目录服务连接到远程计算机忽略用户名/密码【英文标题】:ConnectingtoremotecomputerusingWinNT://providerandDirectoryServicesIgnoresusername/password【发布时间】:2010-06-1013:32:33【问题描述】:我正在使用DirectoryServices和Win... 查看详情

如何连接到共享的 mysql 数据库来为 bi 供电

】如何连接到共享的mysql数据库来为bi供电【英文标题】:howtoconnecttoasharedmysqldatabasetopowerbi【发布时间】:2021-09-0910:01:12【问题描述】:我在phpmyadmin中有一个数据库,它不在我的本地计算机上。我只有在数据库中输入的用户名和... 查看详情

Spring Boot FlywayException:无法连接到数据库。配置url、用户和密码

】SpringBootFlywayException:无法连接到数据库。配置url、用户和密码【英文标题】:SpringBootFlywayException:Unabletoconnecttothedatabase.Configuretheurl,userandpassword【发布时间】:2021-01-1908:01:16【问题描述】:当我运行mavenflyway:migrate时,我得到... 查看详情

使用用户名和密码将画面连接到雪花时出错

】使用用户名和密码将画面连接到雪花时出错【英文标题】:Errorwhileconnectingtableautosnowflakeusingusernameandpassword【发布时间】:2022-01-0719:39:47【问题描述】:[查看截图]您好,将Snowflake连接为Tableau中的数据源和我使用了正确的用户... 查看详情

Node.js Mongoose 是不是允许您通过用户/密码连接到数据库?

】Node.jsMongoose是不是允许您通过用户/密码连接到数据库?【英文标题】:DoesNode.jsMongooseallowyoutoconnecttoadatabaseviaauser/password?Node.jsMongoose是否允许您通过用户/密码连接到数据库?【发布时间】:2011-08-1314:42:09【问题描述】:我该... 查看详情

Node.js Mongoose 是不是允许您通过用户/密码连接到数据库?

】Node.jsMongoose是不是允许您通过用户/密码连接到数据库?【英文标题】:DoesNode.jsMongooseallowyoutoconnecttoadatabaseviaauser/password?Node.jsMongoose是否允许您通过用户/密码连接到数据库?【发布时间】:2011-08-1314:42:09【问题描述】:我该... 查看详情

使用域用户(AD 用户)连接到没有密码的 SQL Server

】使用域用户(AD用户)连接到没有密码的SQLServer【英文标题】:ConnecttoSQLServerWITHOUTpasswordusingdomainuser(ADuser)【发布时间】:2018-06-0418:43:42【问题描述】:我使用模拟连接SQLServer和域用户,但我们也必须提供密码。有什么方法可... 查看详情

Django - Oracle,如何使用为用户提供的用户/密码连接到只读数据库

...Django-Oracle,如何使用为用户提供的用户/密码连接到只读数据库【英文标题】:Django-Oracle,Howtoconnecttoreadonlydbwithuser/passprovidedfortheUser【发布时间】:2017-09-2617:20:18【问题描述】:我需要将Django与只读Oracle数据库连接。连接到该数... 查看详情

mysql连接数据库失败,请确定数据库用户名,密码设置正确

MYSQL连接数据库失败,请确定数据库用户名,密码设置正确Can'tconnecttoMySQLserveron’localhost’(10061)2003那个大侠教我怎么解决呀我就在服务器上装了个魔域SF然后把那SF删了就变成这样了是不是数据共享了?哪位大侠最好留个电话... 查看详情

如何使用用户名和密码连接到java中的mongodb3.2?

我在我的应用程序中使用MongoDB3.2。下面的代码演示了数据库初始化逻辑privatevoiddbInit(StringdbName){StringmongoClientURI="mongodb://"+DB_URL+":"+DB_PORT;MongoClientURIconnectionString=newMongoClientURI(mongoClientURI);//enableSSLc 查看详情

我似乎无法连接到 Firestore 数据库来保存用户数据

】我似乎无法连接到Firestore数据库来保存用户数据【英文标题】:IcannotseemtoconnecttoFirestoredatabasetosaveuser\'sdata【发布时间】:2021-12-2702:05:46【问题描述】:我目前正在开发一个Android项目,我已经被这个问题困扰了几个小时了。我... 查看详情

使用用户名和密码连接到网络驱动器

】使用用户名和密码连接到网络驱动器【英文标题】:Connecttonetworkdrivewithusernameandpassword【发布时间】:2011-04-1116:20:50【问题描述】:如何提供凭据以便我可以连接到.NET中的网络驱动器?我正在尝试从网络驱动器中检索文件,并... 查看详情

如何通过用户名和密码连接到远程 Redis 服务器

】如何通过用户名和密码连接到远程Redis服务器【英文标题】:HowtoconnecttoremoteRedisserverbytoUserNameandPassword【发布时间】:2021-12-2903:37:58【问题描述】:我想连接到Redis以缓存我使用Microsoft.Web.RedisSessionStateProvider的会话我无法访问Re... 查看详情