登录页面在本地工作,但不能在Web服务器上工作



登录页面到管理仪表板-index.php,该网站的各个方面都在本地完美工作,但是当我将其上传到web服务器时,我的登录页面不断抛出Seems you have not registered.错误。我已经相应地导入了数据库,并编辑了数据库连接文件,以反映web服务器的连接文件。我已经把代码逐个看了一遍。我在网上看到的所有建议都没用。

我在某个地方看到php版本的巨大差异可能是原因。我的WAMP正在运行7.0.10的php版本,而web服务器正在运行7.2.31。这算吗?

我在000webhost上托管了这个网站-如果这将对任何帮助。

我已经附上了我的index.php和我的数据库连接文件(与新的web服务器详细信息)

index.php


<?php
//index.php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
include("./database/dbnew.php");
if (isset($_SESSION["usertype"])) {
header("location:dashboard.php");
}
$message = '';
if(isset($_POST["login"])) {
$query = "SELECT * FROM user WHERE email = :email";
$statement = $connect->prepare($query);
$statement->execute( array('email' => $_POST["user_email"]) );
$count = $statement->rowCount();
if($count > 0) {
$result = $statement->fetchAll();
foreach($result as $row) {
if(password_verify($_POST["user_password"], $row["password"])) {
if($row['user_status'] == 'Active') {
$_SESSION['usertype'] = $row['usertype'];
$_SESSION['userid'] = $row['id'];
$_SESSION['username'] = $row['username'];
$_SESSION['last_login'] = $row['last_login'];
$_SESSION['user_status'] = $row['user_status'];
header("location:dashboard.php");
} else {
$message = "<label>Your account is disabled, Please contact the administrator</label>";
}
} else {
$message = '<div class="alert alert-danger">Wrong Email Address/Password Combination</div>';
}
}
} else {
$message = '<div class="alert alert-warning">Seems you have not registered yet</div>';
}
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Inventory Management System</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.3/umd/popper.min.js" integrity="sha384-vFJXuSJphROIrBnz7yo7oB41mKfc8JzQZiCq4NCceLEaO4IHwicKwpJf9c9IpFgh" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/js/bootstrap.min.js" integrity="sha384-alpBpkh1PFOepccYVYDB4do5UnbKysX5WZXm3XxPqe5iKTfUKjNkCk9SaVuEZflJ" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css" integrity="sha384-PsH8R72JQ3SOdhVi3uxftmaW6Vc51MKb0q5P2rRUpPvrszuE4W1povHYgTpBfshb" crossorigin="anonymous">
<link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<link rel="stylesheet" type="text/css" href="./includes/style.css">
<script type="text/javascript" rel="stylesheet" src="./js/main.js"></script>
</head>
<body>
<div class="overlay"><div class="loader"></div></div>
<!-- Navbar -->


<br/><br/>
<div class="container">

<h3 align="center">Blessed Pharmacy Inventory </h3>
<div class="card mx-auto" style="width: 20rem;">
<img class="card-img-top mx-auto" style="width:60%;" src="./images/login.png" alt="Login Icon">
<div class="card-body">
<form method="post">
<?php echo $message; ?>
<div class="form-group">
<label for="exampleInputEmail1">Email address</label>
<input type="email" class="form-control" name="user_email" id="user_email" placeholder="Enter email" required>
<small id="e_error" class="form-text text-muted">We'll never share your email with anyone else.</small>
</div>
<div class="form-group">
<label for="exampleInputPassword1">Password</label>
<input type="password" class="form-control" name="user_password" id="user_password" placeholder="Password" required>
<small id="p_error" class="form-text text-muted"></small>
</div>
<div class="form-group">
<button type="submit" name="login" value="Login" class="btn btn-primary"><i class="fa fa-lock">&nbsp;</i>Login</button>
</div> 
<!-- <span><a href="register.php">Register</a></span> -->
</form>
<!-- </div>
<div class="card-footer"><a href="#">Forget Password ?</a></div>
</div> -->
</div>
</body>
</html>

dbnew.php

<?php
//database_connection
$connect = new PDO('mysql:host=localhost;xxxxxxxxxxx_inv_db', 'xxxxxxxxxxx_root', 'xxxxxxxxxxx_password');
session_start();
?>

PDO的rowCount()方法在与SELECT语句一起使用时是出了名的不可靠。它用于插入、更新和删除。

重构它…像这样。

$count = 0
$result = $statement->fetchAll();
foreach($result as $row) {
$count++
if(password_verify($_POST["user_password"], $row["password"])) {
if($row['user_status'] == 'Active') {
$_SESSION['usertype'] = $row['usertype'];
$_SESSION['userid'] = $row['id'];
$_SESSION['username'] = $row['username'];
$_SESSION['last_login'] = $row['last_login'];
$_SESSION['user_status'] = $row['user_status'];
header("location:dashboard.php");
} else {
$message = "<label>Your account is disabled, Please contact the administrator</label>";
}
} else {
$message = '<div class="alert alert-danger">Wrong Email Address/Password Combination</div>';
}
} /* end foreach($result as $row) */
if ($count == 0) {
$message = '<div class="alert alert-warning">Seems you have not registered yet</div>';
}
elseif ($count > 1) {
$message = '<div class="alert alert-danger">More than one email match!!! Should not happen!!!</div>';
}

相关内容

最新更新