我是DB类的新手。我试图让我的旧登录系统使用这个DB类,但它会返回我的else,因为登录错误无效,就像DB中没有这样的电子邮件和密码一样。但是有。
连接类别:
class Conexao
{
private $link;
public function __construct($host = null, $username = null, $password = null, $dbName = null)
{
$this->link = mysqli_init();
$this->link->real_connect($host, $username, $password, $dbName) or die("Failed to connect");
}
public function __destruct()
{
$this->link->close();
}
public function Query($sql)
{
return $this->link->query($sql);
}
登录页面:
<?php
include('dbConnect.php');
session_start();
$conexao = new Conexao("localhost", "root", "XXXXX", "festas");
if(isset($_POST['submit'])) {
$email = mysqli_real_escape_string($conexao,$_POST['email']);
$pass = mysqli_real_escape_string($conexao,$_POST['senha']);
$sel_user = $conexao->Query("SELECT * from contas where email='$email' AND senha='$pass'");
$check_user = mysqli_num_rows($sel_user);
$row = mysqli_fetch_assoc($sel_user);
if($check_user>0){
$_SESSION['user_email']=$email;
header('Location: ../adminpage.php');
mysqli_free_result($result);
} else {
header('Location: ../admin.php?erroLogin=1');
}
}
?>
它总是以"else"头返回('Location:../admin.php?erroLogin=1')。我认为这可能是因为"$check_user=mysqli_num_rows($sel_user);",但我试图修复,但没有成功。还尝试了"$conexao->num_rows($sel_user).
我解决了它。以下是我所做的:
在DB类php:中
public function Escape($sql)
{
return $this->link->real_escape_string($sql);
}
然后在登录php:
$email = $conexao->Escape($_POST['email']);
谢谢!