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