我有四份文件。
index.php<--->bridge.php<--->fetch.php<--->Mysql
我的index.php文件下面包含以下代码,而且由于我使用的是JavaScript!.htaccess文件阻止index.php文件访问javascript文件,所以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."%' 发布于 2019-04-19 01:59:57
我认为您使问题过于复杂,或者您以一种无助的方式编写了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文件添加详细信息。一直到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 belowhttps://stackoverflow.com/questions/55755217
复制相似问题