Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP可以注册,但无法登录到特定数据库_Php_Android_Mysql - Fatal编程技术网

PHP可以注册,但无法登录到特定数据库

PHP可以注册,但无法登录到特定数据库,php,android,mysql,Php,Android,Mysql,我有两个类似的数据库;都使用用户名和密码。重复的PHP代码用于注册-但是第一个数据库可以登录,第二个数据库不能。我想我一定错过了一些明显的东西,但我已经尽了我所能来解决这个问题 数据库1-登录注册表 表-‘用户’ 柱 身份证件 全名 用户名 密码 数据库2-赛车路线图 表“用户” 柱 用户id 用户名 电子邮件 密码 我的Android应用程序(尝试在两个数据库上使用OkHTTP3-我可以登录到loginregister,但不能登录raceroutelogin,只需更改url,因此我认为问题不存

我有两个类似的数据库;都使用用户名和密码。重复的PHP代码用于注册-但是第一个数据库可以登录,第二个数据库不能。我想我一定错过了一些明显的东西,但我已经尽了我所能来解决这个问题

数据库1-登录注册表 表-‘用户’ 柱 身份证件 全名 用户名 密码

数据库2-赛车路线图 表“用户” 柱 用户id 用户名 电子邮件 密码

我的Android应用程序(尝试在两个数据库上使用OkHTTP3-我可以登录到loginregister,但不能登录raceroutelogin,只需更改url,因此我认为问题不存在)似乎正常工作。我还可以向两个数据库的用户注册

我的PHP代码也是相同的(除了dbconfig数据库名)


发现了问题-在我不工作的数据库中,我的密码是VARCHAR,长度为40。我将其改为文本,登录开始正常工作。故事的寓意是,不要使用VARCHAR存储密码。

乍一看,我没有发现任何问题。你试过什么?你使用调试器吗?如果是,登录在哪里失败?如果不是的话,我强烈建议使用OneHanks来花时间阅读代码。我还没有找到用php进行调试的方法。我两个都打过电话&在我的Android应用程序中尝试了两个不同的库(都在第一个db上工作),所以我认为这不是打电话的应用程序。我试着用HTML构建一个表单来提交,但是我感到困惑,我会尝试&试着打印mysql消息。再次感谢警告:您完全可以使用参数化的预处理语句,而不是手动生成查询。它们由或提供。永远不要相信任何形式的输入!即使您的查询仅由受信任的用户执行。谢谢@Dharman,这只是一个大学项目,我还没有打算把它放到野外:)
    <?php
require "DataBaseConfig.php";

class DataBase
{
    public $connect;
    public $data;
    private $sql;
    protected $servername;
    protected $username;
    protected $password;
    protected $databasename;

    public function __construct()
    {
        $this->connect = null;
        $this->data = null;
        $this->sql = null;
        $dbc = new DataBaseConfig();
        $this->servername = $dbc->servername;
        $this->username = $dbc->username;
        $this->password = $dbc->password;
        $this->databasename = $dbc->databasename;
    }

    function dbConnect()
    {
        $this->connect = mysqli_connect($this->servername, $this->username, $this->password, $this->databasename);
        return $this->connect;
    }

    function prepareData($data)
    {
        return mysqli_real_escape_string($this->connect, stripslashes(htmlspecialchars($data)));
    }

    function logIn($table, $username, $password)
    {
        $username = $this->prepareData($username);
        $password = $this->prepareData($password);
        $this->sql = 
        "SELECT * from " . $table . " where username = '" . $username . "'";
        $result = mysqli_query($this->connect, $this->sql);
        $row = mysqli_fetch_assoc($result);
        if (mysqli_num_rows($result) != 0) {
            $dbusername = $row['username'];
            $dbpassword = $row['password'];
            if ($dbusername == $username && password_verify($password, $dbpassword)) {
                $login = true;
            } else $login = false;
        } else $login = false;

        return $login;
    }

    function signUp($table, $username, $email, $password)
    {
        $username = $this->prepareData($username);
        $email = $this->prepareData($email);
        $password = $this->prepareData($password);       
        $password = password_hash($password, PASSWORD_DEFAULT);
        $this->sql =
            "INSERT INTO " . $table . " (username, email, password) VALUES ('" . $username . "','" . $email . "','" . $password . "')";
        if (mysqli_query($this->connect, $this->sql)) {
            return true;
        } else return false;
    }

}

?>
<?php
require "DataBase.php";
$db = new DataBase();
if (isset($_POST['username']) && isset($_POST['password'])) {
    if ($db->dbConnect()) {
        if ($db->logIn("users", $_POST['username'], $_POST['password'])) {
            echo "Login Success";
        } else echo "Login Fail";
    } else echo "Error: Database connection";
} else echo "All fields are required";
?>