javascript - 使用带有 ajax 的 Php oop 登录失败
问题描述
我已经使用 php oops 和 ajax 为登录按钮完成了登录页面。在 login.php 中 if(isset($result["username"])!="") 它以 Json 类型返回错误的详细信息。if(isset($result["username"])=="") 以 Json 类型返回成功。当我给错误的用户deatils if(isset($result["username"])=="") 返回成功并进入welcome.php页面时,请帮助我。当我给正确的用户 deatils if(isset($result["username"])!="") 它返回错误的细节。请帮我找出这个错误
登录.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Log in</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="assests/style.css" rel="stylesheet">
<script src="assests/jquery-1.11.1.min.js"></script>
<script src="assests/bootstrap.min.js"></script>
<style>
form{
padding-left:30%;
padding-top:8%;
}
h4{
padding-left:25%;
padding-bottom:5%;
}
</style>
</head>
<body>
<form class="form-horizontal" action='javascript:void(0)' method="POST" id="form">
<fieldset>
<div id="legend">
<h4>Sign In</h4>
</div>
<div class="control-group">
<!-- Fullname -->
<label class="control-label" for="username">Username</label>
<div class="controls">
<input type="text" id="username" name="username" placeholder="" class="input-xlarge" required="true">
</div>
</div>
<div class="control-group">
<!-- Password-->
<label class="control-label" for="password">Password</label>
<div class="controls">
<input type="password" id="password" name="password" placeholder="" class="input-xlarge" required="true">
</div>
</div>
<div class="control-group">
<!-- Button -->
<div class="controls">
<button class="btn btn-success" type="submit" id="submit" name="signin">Signin</button>
<input type="hidden" name="type" value="show" id="hidden" >
</div>
</div>
<div class="control-group">
<!-- Button -->
<div class="controls">
Not Registered yet? <a href="index.php">Register Here</a>
</div>
</div>
</fieldset>
</form>
<script type="text/javascript">
$(document).ready(function(){
$("#form").submit(function(){
var username=$("#username").val();
var password=$("#password").val();
if(username!="" && password!=""){
$.ajax({
url:"login.php",
data:$("#form").serialize(),
type:"POST",
dataType:"JSON",
success:function(data){
if(data.return=="success"){
window.location.href="welcome.php";
}
else{
alert(data.return);
}
}
})
}
});
});
</script>
</body>
</html>
登录.php
<?php
session_start();
include("config.php");
$data=new Database();
if(isset($_POST['type']) && ($_POST['type']) =="show"){
$username=$_POST["username"];
$password=$_POST["password"];
$result=$data->fetch("tblusers","*", $username, $password);
if(isset($result["username"])!=""){
$_SESSION["username"]=$username;
echo json_encode(['return'=>"success"]);
}
else{
echo Json_encode(['return'=>"wrong Details"]);
}
}
?>
config.php 函数名 fetch() 用于登录
class Database
{
private $servername = "localhost";
private $username = "root";
private $password = "";
private $dbname = "crud_oops";
public $con;
public $customerTable = "customers";
public function __construct()
{
try {
$this->con = new mysqli($this->servername, $this->username, $this->password, $this->dbname);
} catch (Exception $e) {
echo $e->getMessage();
}
}
// Insert customer data into customer table
public function insertRecond($name, $email, $username, $dob)
{
$sql = "INSERT INTO $this->customerTable (name, email, username, dob) VALUES('$name','$email','$username','$dob')";
$query = $this->con->query($sql);
if ($query) {
return true;
}else{
return false;
}
}
// Fetch customer records for show listing
public function displayRecord()
{
$sql = "SELECT * FROM $this->customerTable";
$query = $this->con->query($sql);
$data = array();
if ($query->num_rows > 0) {
while ($row = $query->fetch_assoc()) {
$data[] = $row;
}
return $data;
}else{
return false;
}
}
// Fetch single data for edit from customer table
public function getRecordById($id)
{
$query = "SELECT * FROM $this->customerTable WHERE id = '$id'";
$result = $this->con->query($query);
if ($result->num_rows > 0) {
$row = $result->fetch_assoc();
return $row;
}else{
return false;
}
}
public function totalRowCount(){
$sql = "SELECT * FROM $this->customerTable";
$query = $this->con->query($sql);
$rowCount = $query->num_rows;
return $rowCount;
}
// Update customer data into customer table
public function updateRecord($id, $name, $email, $username, $dob)
{
$sql = "UPDATE $this->customerTable SET name = '$name', email = '$email', username = '$username', dob = '$dob'
WHERE id = '$id'";
$query = $this->con->query($sql);
if ($query) {
return true;
}else{
return false;
}
}
// Delete customer data from customer table
public function deleteRecord($id)
{
$sql = "DELETE FROM $this->customerTable WHERE id = '$id'";
$query = $this->con->query($sql);
if ($query) {
return true;
}else{
return false;
}
}
// for username availblty
public function usernameavailblty($uname) {
$result =mysqli_query($this->con,"SELECT Username FROM tblusers WHERE Username='$uname'");
return $result;
}
// Function for registration
public function registration($fname,$uname,$uemail,$pasword)
{
$ret=mysqli_query($this->con,"insert into tblusers(FullName,Username,UserEmail,Password) values('$fname','$uname','$uemail','$pasword')");
return $ret;
}
// Function for signin
public function fetch( $table,$condition,$username,$password){
$sql="SELECT * FROM tblusers WHERE Username='$username' AND Password='$password'";
$result=$this->con->query($sql);
$row=$result->fetch_assoc();
return $row;
}
}
解决方案
推荐阅读
- python - numpy.where() 返回空数组而不是替换
- javascript - 使用多个 CKEditor 字段时,图像上传在 CKEditor 中不起作用
- r - 在R中的文本字段中提取句点之前的数字
- vba - 如何使用 vba 宏按钮在 power point 幻灯片放映期间添加和调整形状?
- kubernetes - 删除“preview”和“jx-staging”环境下分别通过“jx preview”和“jx promote”部署的服务的k8s资源
- reactjs - 使用 useDispatch Hook 时出现问题 - 警告:React 检测到 Hook 的顺序发生了变化
- c++ - 在 CMAKE target_include_libraries 中理解“接口”的问题
- android - Flutter:Json解析
- c# - 如何在特定时区向 DateTime 添加一天
- javascript - 如何通过调用函数来更改输入类型文件的值?