我有四个文件。
- index.php “主页面”,带有使用MySQL 数据库的搜索功能。我调用数据库 抛出 javascript,客户端。
- fetch.php "包含 MySQL 连接信息。
- bridge.php 来覆盖 fetch 文件,我正在使用 php 代码来制作 连接。
- .htaccess 文件以阻止对 fetch.php 文件的任何直接访问。
index.php<--->bridge.php<--->fetch.php<--->Mysql
我的 index.php 文件包含以下代码,因为我使用的是 JavaScript! .htaccess 文件阻止了 index.php 文件访问我的 fetch.php 文件,javascript 是“客户端”
<script>
$(document).ready(function(){
function load_data(query)
{
$.ajax({
url:"bridge.php",
method:"post",
data:{query:query},
success:function(data)
{
$('#result').html(data);
}
});
}
所以我让我的 javascript 代码调用 bridge.php 文件,bridge.php 文件调用 fetch.php 文件抛出 PHP 语言,使所有这些工作。
所以我的 bridge.php 文件代码:
<?php
include 'fetch.php';
?>
现在没有人可以直接访问fetch.php .htaccess 文件阻止任何直接连接抛出浏览器,但如果我调用文件 bridge.php 抛出浏览器,它将打开数据库!那不能解决任何问题!我做错了什么?
这是我的 .htaccess 文件的代码:
<Files ~ "fetch.php">
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Files>
这就是我的获取文件调用 MySQL 的方式:
$connect = mysqli_connect("localhost", "example.com", "passowrd", "databasename");
$output = '';
if(isset($_POST["query"]))
{
$search = mysqli_real_escape_string($connect, $_POST["query"]);
$query = "
SELECT * FROM tbl_customer
WHERE CustomerName LIKE '%".$search."%'
OR Address LIKE '%".$search."%'
OR City LIKE '%".$search."%'
最佳答案
我认为您使问题过于复杂,或者您已经编写了 fetch.php
以一种无济于事的方式。
我猜你的 fetch.php
其中包含 MySQL 函数或类代码,然后您可以访问和使用它们。像这样的东西:
<?php
define('MYSQL_SERVER','localhost');
define('MYSQL_LOGIN','mylogin');
... and more ...
class DB {
... methods ...
}
?>
fetch.php
的关键部分应该是开场<?php
和结束?>
.
如果您(或其他任何人)直接请求 fetch.php
,您的代码应该以一种结果是完全空白的页面的方式编写。
Web 服务器上唯一的开销是单个 PHP 传递,然后将空白返回给浏览器。
如果您以另一种方式编写代码,我建议您重新考虑您的方法并质疑为什么您已经完成了您所拥有的。
顺便说一句,将详细信息添加到 .htaccess
file 只有在没有其他方法的情况下才应该完成。至于web server preformance, they are not a good idea .
编辑:
如果你真的想确定fetch.php
不是直接调用,而是只包含在另一个文件中,您可以在顶部执行类似以下操作:
<?php
if (count(get_included_files()) == 1) {
// direct request, do nothing
exit;
// or even redirect somewhere like
header("Location: /");
exit;
}
// has been included, allow rest of script to process
$connect = mysqli_connect("localhost", "example.com", "passowrd", "databasename");
// ... more code below
关于javascript - 如何在我的 javascript 文件和 php 文件之间创建桥接代码以保护 MySQL 信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55755217/