php - PHP MySQL登录适用于本地服务器但不适用于公共服务器
问题描述
我玩了一下 PHP 和 MySQL 登录,并意识到它很容易进行 sql 注入。所以我改变了一些东西,而不是$query
我使用的$smtp
等等。
该页面在我的本地服务器(xammp)上加载并运行,但是当我将它上传到我的公共服务器时,我收到500 Internal Server Error(页面在更改之前运行)
我没有对 HTML 进行任何更改,它只是导致问题的 PHP 部分。
这是我的代码,适用于本地服务器,但不适用于公共服务器:
<?php
session_start();
require('../db/DBconnect.php');
$select_db = mysqli_select_db($connection, 'website');
if (!$select_db){
die("Database Selection Failed" . mysqli_error($connection));
}
if (isset($_POST['username']) and isset($_POST['password'])){
$username = $_POST['username'];
$password = $_POST['password'];
//$query = "SELECT * FROM `users` WHERE userName='$username' and userPass='$password'"; OLD LOGIN
$stmt = $connection->prepare('SELECT * FROM users WHERE userName= ? and userPass= ?');
$stmt->bind_param('is', $username, $password);
$stmt->execute();
//$result = $stmt->get_result(); OLD LOGIN
//while ($row = $result->fetch_assoc()) { OLD LOGIN
// do something with $row OLD LOGIN
//} OLD LOGIN
$result = $stmt->get_result();
//$result = mysqli_query($connection, $stmt) or die(mysqli_error($connection)); OLD LOGIN
$count = mysqli_num_rows($result);
if ($count == 1){
$_SESSION['username'] = $username;
}else{
$fmsg = "Invalid Login Credentials.";
}
}
if (isset($_SESSION['username'])){
$username = $_SESSION['username'];
header('Location: /beta/adminpanel.php');
}else{
?>
<!DOCTYPE html>
<base href="/">
<html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Admin - Freunde Gamen ♥</title>
<link href="../host-files/bootstrap.css" rel="stylesheet">
<link href="../host-files/admin.css" rel="stylesheet">
<html>
<head>
<base href="/">
<link rel="icon" href="../favicon.ico" type="image/x-icon"/>
</head>
<body>
<div class="container">
<div class="login">
<form class="form-signin" method="POST">
<?php if(isset($fmsg)){ ?><div class="alert alert-danger" role="alert"> <?php echo $fmsg; ?> </div><?php } ?>
<h2 class="form-signin-heading">FG - Admin Login</h2>
<div class="input-group">
<span class="input-group-addon" id="basic-addon1">@</span>
<input type="text" name="username" class="form-control" placeholder="Username" required>
</div>
<label for="inputPassword" class="sr-only">Password</label>
<input type="password" name="password" id="inputPassword" class="form-control" placeholder="Password" required>
<button class="btn btn-lg btn-primary btn-block" type="submit">Login</button>
</form>
</div>
</div>
<script src="../host-files/js/bootstrap.js"></script>
<script src="../host-files/js/jquery.min.js"></script>
</body></html>
<?php } ?>
本地和公共服务器都使用:
Apache/2.4.10
PHP 版本 5.6.33-0+deb8u1(我知道我应该更新到 PHP 7)
共享相同的 MySQL 数据库和服务器
解决方案
所以在将这个添加到 admin.php 之后:
// DEBUGGING
error_reporting(E_ALL);
ini_set('display_errors', true);
我意识到 mysqli_mysqlnd.dll 作为我的公共服务器上的一个包丢失了,所以我安装了它。
sudo apt-get install php5-mysqlnd
它奏效了!谢谢你们!
推荐阅读
- android - Flutter Listview 在从视频 url 加载缩略图时冻结,我的应用程序崩溃了
- r - joining two dataframes between dates together
- react-native - Stacknavigatior 导航到已经在堆栈中的屏幕
- php - 在 Laravel 中提交 POST 表单后出现 302 错误
- xamarin - Azure OCR 识别PrintedTextInStreamAsync 无效图像
- java - 尝试在我的适配器类中的空对象引用上调用虚拟方法“void android.widget.TextView.setText(java.lang.CharSequence)”
- php - 如何将 XML 解析为 PHP
- python - “变量”在赋值之前定义
- docker - 如何在本地主机上保存来自 docker 容器的数据?
- php - 如何修复“PHP 警告:ftp_login():登录验证失败”